Jason M sends us some Ruby code.
def bv(prop, tv="Yes", fv="No", nv="Not Specified")
v = self.send(prop)
if v === true
tv
elsif v === false
fv
else
nv
end
end
The obvious WTF here is the function name and parameter names. AAYFN seems to be the convention here. But it also contains a more Ruby-specific WTF.
The function name bv is short for "boolean value", obviously. tv is the "true value", fv is the false value, and nv is the null value. So this is really about pretty-printing boolean values and converting them to strings. While the terrible names make it hard to understand, it's not that hard to figure out what's going wrong here. I hate it, don't get me wrong, but it just makes me sigh with disappointment, not groan.
No, the thing that makes me groan is v = self.send(prop). This is a very Ruby idiom that lets you access a member of the class by name; essentially it's like doing self.prop, but since prop is a variable containing a property name, we have to send it.
This is metaprogramming by strings, which is the main reason I end up hating it. But in this specific instance, it offers us a lot of potential issues. First, if prop is anything not boolean, we just return "Not Specified", which is incredibly misleading. I'd argue that if we attempt to use it on a non-boolean field we should throw an exception. Which opens the question: if prop doesn't exist, is that a non-boolean field, or is that a "enh, just call it null" situation? Because right now, that will throw an exception. It'll also throw an exception if the thing being accessed is a function that takes parameters. These behaviors may be surprising.
Now, I don't know the calling pattern. It's possible that whatever function calls this already has a good list of the allowed boolean values, and will never call this on a prop that doesn't exist. Certainly, that's what the Ruby docs recommend. But I'm going to hate it anyway, because this kind of runtime metaprogramming by passing strings around is eternally asking for trouble. And while I haven't done a huge amount of Ruby, I've done enough to know that any non-trivial codebase ends up like this once the metaprogramming band-aid is taken off.
Now, if you don't mind, I'll go back to doing my metaprogramming with C++ templates, which are simple, clear, and never result in wildly unmaintainable code because you ended up reimplementing LISP in template operations.
Een lastig debat in de AI-Act wereld: is een AI scribe hoogrisico? Heel kort door de bocht is dat tekst-naar-spraaksoftware die een consult transcribeert en er samenvattingen met actiepunten van maakt. De Zweedse toezichthouder heeft recent bepaald dat dit wél hoogrisico is, terwijl eerder vaak werd verdedigd van niet.
De classificatie is een samenloop met de MDR, de Medical Device Regulation die strikte regels voor medische hulpmiddelen stelt. Die kent vier klassen, om onnavolgbare redenen I, IIa, IIb en III geheten. Producten in klasse IIa en hoger mogen pas op de markt na externe goedkeuring, een klasse I product heeft dat niet nodig.
De AI verordening verklaart producten met AI hoogrisico wanneer ze onder hun ‘eigen’ regulering een externe goedkeuring nodig hebben. Bij medische producten dus als ze MDR IIa of hoger zijn, waardoor medtech-aanbieders héél graag in klasse I willen blijven.
Een populair medisch AI-hulpmiddel is dus die scribe, omdat je als arts veel conversatie hebt en geen tijd krijgt voor het uitwerken daarvan. Tekst-naar-spraakomzetting scheelt, maar dan krijg je een lap tekst van het gesprek. Wat je eigenlijk wilt, zijn klinische notities, patiëntbrieven of behandelplannen op basis van het gesprek. De belofte van scribe-aanbieders is dat ze dát voor je kunnen doen.
De meeste classificatieregels uit de MDR gaan over “echte” hulpmiddelen, van steriele naalden tot chirurgische robots zeg maar. Voor software is er één relevante regel, bijlage VIII regel nummer 11:
Software voor het verstrekken van informatie die gebruikt wordt bij het nemen van beslissingen voor diagnostische of therapeutische doeleinden behoort tot klasse IIa, tenzij [leven en dood of fysiologisch monitoren, dan IIb of III] Alle overige software behoort tot klasse I.De argumentatie ligt voor de hand: scribe software is “overig” want niet betrokken bij de besluitvorming. Daar denken ze in Zweden nu anders over. Het volledige rapport is nog niet beschikbaar, maar AI-leverancier Tandem zegt er over:
Sweden’s Medical Products Agency’s position is that the completed documentation generated by the scribe is used as the basis for decisions in the continued care process, not just the current visit. That is what brings it under the higher classification.Je zou immers kunnen zeggen dat de AI-uitvoer naar de arts gaat, die er dan nog wat mee doet en dát in het dossier stopt. Dan is het de arts die de klinische notitie of brief maakt. Maar omdat het structureel is, is het toch echt de AI-tool zelf die het behandelplan, brief of notitie maakt.
De Zweden formuleren drie vuistregels:
Die tweede vuistregel is uiteindelijk de belangrijkste. Bij Tandem werd in de eigen risicobeoordeling genoemd dat een interpretatiefout tot risico’s voor de patiënt kan leiden. Daarmee staat vast dat de verdere behandeling wordt beïnvloed door de AI-uitvoer. (Wie HBO heeft, moet The Pitt kijken en zal dan zien hoe dit mis kan gaan. CAICO’s en CHCO’s: 1 PE punt.)
Steeds meer marktpartijen zijn nu bezig met een MDR klasse IIa certificering. De grote uitdaging hierbij is dat er nog geen standaarden zijn voor het AI-gedeelte hiervan. Mede hierom is de toepasselijkheid van de AI-verordening op medische hulpmiddelen uitgesteld tot 2 augustus 2028. Maar door beslissingen als deze moet je er nú al iets mee als leverancier.
Arnoud
Het bericht Een AI scribe is geen scriba maar een medisch adviseur (en daarom klasse IIa MDR) verscheen eerst op Ius Mentis.
Wordt dit gewoon een semi-permanent laag-intens slagveld om nieuwe autonome wapenplatformen te kunnen testen, zoals die gisteren voor het eerst ingezette Amerikaanse zelfmoorddrone-bootjes? Wat er formeel vooraf gegaan lijkt aan deze Amerikaanse aanvallen, is een Iraanse aanval met kruisraketten op twee Emiratische olietankers die resulteerde in de dood van een Indiaas bemanningslid en acht gewonden, waarvan vier ernstig.
CENTCOM schreef drie uur geleden:
"CENTCOM heeft op 13 juli om 22.15 uur de meest recente reeks aanvallen op Iran voltooid. Tijdens de vijf uur durende missie hebben Amerikaanse strijdkrachten met succes militaire doelen in heel Iran bestookt – waaronder Bushehr, Chah Bahar, Jask, Konarak, Abu Musa en Bandar Abbas – om het vermogen van Iran om de commerciële scheepvaart aan te vallen verder te verzwakken. CENTCOM zette precisiewapens in tegen Iraanse kustverdedigingssystemen, locaties voor raketten en drones, en maritieme capaciteiten. Er zijn momenteel meer dan 50.000 Amerikaanse militairen gestationeerd in het Midden-Oosten. De Amerikaanse strijdkrachten blijven waakzaam, dodelijk en paraat."
Naar goed gebruik voerde Iran weer aanvallen uit op Amerikaanse basissen in Jordanië en Bahrein, Koeweit, Qatar en Oman. En dat allemaal terwijl de beurzen al twee dagen open zijn!
In ander nieuws is het voor het eerst sinds maart 2022 ook ineens weer aan tussen Saoedi-Arabië en de Houthi's. De Saoedi's vielen gisteren - met Trumps zegen - het Houthi-vliegveld te Sanaa, Jemen aan. De Houthi's reageerden daarop met raketten op het internationale vliegveld van Saoedi-Arabië, waarvan het Saoedische MinDef zegt deze allemaal onderschept te hebben. TOESTANDEN. Wij gaan weer eens live.
Read more of this story at Slashdot.