Un Medical Logic Module scritto per un sistema non gira su un altro finché non riscrivi la parte fra parentesi graffe. La comunità Arden lo chiama curly braces problem, e dopo quindici anni di standard è ancora la ragione per cui la conoscenza clinica codificata non passa da un’istituzione all’altra.
Contesto
L’idea dietro Arden Syntax è vecchia quanto sensata: togliere le regole cliniche — un’allerta su interazione farmaco-allergia, un promemoria di vaccinazione, una soglia su un esame di laboratorio — dal codice applicativo della cartella e scriverle in una forma leggibile da chi quella conoscenza la possiede, cioè il personale sanitario. Lo standard nasce da una riunione del 1989 alla Arden House, nello stato di New York, con Columbia-Presbyterian, Stanford, Regenstrief e altri centri; da lì il nome.
L’unità di codifica è il Medical Logic Module (MLM): un file di testo diviso in slot. La parte maintenance tiene i metadati (titolo, autore, versione, validazione, istituzione); library raccoglie citazioni e spiegazione clinica; il blocco knowledge porta la sostanza. Dentro knowledge stanno data (da dove arrivano i valori), evoke (cosa fa scattare il modulo: un nuovo referto, un ricovero, una scadenza temporale), logic (la condizione, in sintassi imperativa con assegnamenti e if/then) e action (cosa succede quando la logica conclude vero: un messaggio, una scrittura in cartella, la chiamata a un altro MLM).
Arden Syntax 1.0 è diventato standard ASTM nel 1992 (E1460), è passato sotto HL7 nel 1998, e la versione 2.5 è stata approvata ANSI nel 2005: è la release di riferimento corrente.
Anatomia di un modulo
Un MLM ha questa forma:
maintenance:
title: Potassium-sparing diuretic with K supplement;;
mlmname: potassium_warning;;
arden: Version 2.5;;
version: 1.02;;
institution: Example Hospital;;
author: Jane Smith, MD;;
data:
let potassium_sparing be read last
{select medication where class = 'K-sparing diuretic'};
let potassium_suppl be read last
{select medication where class = 'K supplement'};
;;
evoke:
medication_order;;
logic:
if exist(potassium_sparing) and exist(potassium_suppl) then
conclude true;
endif;
;;
action:
write "Attenzione: diuretico risparmiatore di potassio "
|| "insieme a integrazione di potassio - verificare K sierico.";;
La logic e la action fanno parte dello standard a pieno titolo: copia il modulo in un’altra azienda e la regola che esprime è la stessa. Il guaio sta in data, nelle due query chiuse fra { e }.
Il punto critico
Lo standard non specifica cosa va dentro le parentesi graffe. Arden definisce la grammatica del linguaggio, ma lascia volutamente in bianco come un valore viene recuperato dal sistema locale: la query alla cartella, la lettura dal laboratorio, la dichiarazione dell’evento di evoke, perfino la destinazione dell’output. Tutto ciò che sta dentro le graffe è scritto in dialetto locale, contro lo schema dati e il vocabolario di quella precisa installazione.
La conseguenza è immediata. Un MLM porta con sé la logica clinica — quella sì che viaggia — ma non l’aggancio ai dati, che va riscritto a ogni adozione. Chi prende il modulo potassium_warning da un’altra azienda riusa il ragionamento e butta via le due read, perché la tabella dei farmaci, i codici di classe e l’API di interrogazione sono diversi. La promessa di condividere la conoscenza clinica come bene comune tiene sul piano della logica e cade su quello dei dati.
In concreto questo spinge Arden verso ambienti chiusi e integrati verticalmente — i centri storici come Columbia, Regenstrief, Intermountain — dove un solo gruppo controlla sia gli MLM sia lo schema dati sottostante, e riscrivere l’aggancio non è un ostacolo perché di agganci ce n’è uno solo.
GELLO
Il lavoro su un successore parte in HL7 all’inizio del decennio col nome GELLO (Guideline Expression Language, Object-Oriented), approvato come standard HL7/ANSI nel 2005. L’impianto è diverso per costruzione su tre punti.
GELLO è un linguaggio di sole espressioni, dichiarativo, derivato da OCL (Object Constraint Language) dell’Object Management Group. Non descrive workflow né effetti collaterali: valuta condizioni e calcola valori, niente di più. La logica di flusso sta altrove — di solito nel modello di guideline che lo ospita, come GLIF3, di cui GELLO è il linguaggio di espressione.
E soprattutto GELLO non interroga uno schema locale qualunque: legge contro il RIM (Reference Information Model) di HL7 versione 3. Qui sta il tentativo di chiudere il curly braces problem alla radice. Se le espressioni navigano un modello di classi condiviso invece di tabelle proprietarie, allora un’espressione scritta una volta si valuta ovunque quel modello sia adottato. L’aggancio ai dati smette di essere testo opaco fra graffe e diventa navigazione tipizzata su un modello standard.
Limiti
GELLO sposta il problema più che scioglierlo. La portabilità dell’aggancio dipende adesso dall’adozione del RIM di HL7 v3, e il RIM è un modello complesso, lontano dagli schemi su cui girano le cartelle commerciali nel 2006. Al posto di un dialetto locale per ogni dataslot si ha un unico modello canonico, a sua volta oneroso da implementare: un passo avanti concettuale, che però sposta il costo invece di toglierlo.
Manca poi, a oggi, un motore di riferimento open source maturo per GELLO, e un ambiente di authoring usabile da clinici che non programmano. Per Arden la situazione è simmetrica: esistono strumenti accademici sperimentali per eseguire MLM, ma nessun runtime libero pronto per la produzione. Risultato: il CDS davvero in esercizio poggia in larga parte sui motori proprietari dei vendor di cartelle, con regole scritte in Java o XML interni, a volte in dialetti simil-Arden, e con una trasportabilità fra sistemi che resta bassa.
Conviene tenere distinti i due piani. Arden e GELLO sono linguaggi di rappresentazione della conoscenza clinica, e su quel piano restano validi a prescindere da quale architettura di esecuzione si imponga. Aperta resta invece l’altra domanda: come e dove un sistema cartella prende i dati da passare a quella logica. Finché quella domanda avrà una risposta diversa a ogni installazione, un MLM resterà portabile solo a metà.
https://www.hl7.org/implement/standards/product_brief.cfm?product_id=236 https://pubmed.ncbi.nlm.nih.gov/15360796/ https://www.openclinical.org/gmm_ardensyntax.html https://www.openclinical.org/gmm_gello.html https://www.omg.org/spec/OCL/ https://www.noze.it/insights/arden-syntax-gello-cds/
Immagine di copertina: Grande villa in pietra in stile neorinascimentale immersa nel verde collinare, con facciata simmetrica e alti camini: la Arden House… — foto di Peter Bond, CC BY-SA 2.0 — https://commons.wikimedia.org/wiki/File:Arden_House_1.jpg