AIHealth
Piattaforma clinica on-premise con LLM locali, RAG su dati FHIR/DICOM, supporto alla diagnosi, follow-up remoto. Architettura progettata per il percorso MDR.
Scopri AIHealth →
Digital Health
Sviluppo di software medicale conforme agli standard normativi CE e MDR. Sistemi di supporto alle decisioni cliniche, integrazione AI nei flussi di lavoro clinici.
Scopri →Un motore a regole general-purpose
Il lavoro su linguaggi e motori di regole clinici nati dentro il dominio sanitario — Arden Syntax, GELLO, GLIF, PROforma, Asbru — ha prodotto specifiche tecnicamente ambiziose ma con diffusione operativa limitata da fattori di ecosistema: runtime frammentati, autoring difficile, integrazione con i sistemi cartella non banale. In parallelo, l’industria IT generalista ha sviluppato motori a regole agnostici al dominio, con una base di utenza molto più ampia e strumentazione matura.
Il più diffuso nel mondo open source è Drools — progetto Java avviato nel 2001 da Bob McWhirter e poi assorbito dalla comunità JBoss nel 2005 (con il branding temporaneo JBoss Rules). Con l’acquisizione di JBoss da parte di Red Hat nel 2006, Drools entra ufficialmente nell’offerta enterprise open source di un vendor di prima grandezza.
Drools 4
Drools 4.0, rilasciato nel maggio 2007 e tuttora stabile in serie 4.0.x, è la release di maggiore salto evolutivo del progetto dall’origine. Le novità:
- Rete-OO — riscrittura dell’algoritmo Rete (Forgy, 1974) con adattamento object-oriented, sviluppata da Mark Proctor (attuale project lead). Mantiene la complessità media sub-lineare rispetto al numero di fatti, con miglioramenti di efficienza sui pattern più comuni
- DRL (Drools Rule Language) — linguaggio dichiarativo per le regole, con una sintassi più leggibile rispetto alla versione 3
- DSL (Domain Specific Language) — meccanismo per definire linguaggi dichiarativi domain-specific sopra DRL, scrivibili da analisti di business (o da clinici, in ambito sanitario)
- Decision Tables — rappresentazione tabellare di famiglie di regole in Excel o OpenDocument, utile per modellare matrici di decisione
- Drools Flow — motore di workflow ruleflow che descrive sequenze di invocazione di regole come processi
- Drools Solver — risoluzione di problemi di ottimizzazione a vincoli, estensione che diventerà nei prossimi anni un sottoprogetto indipendente
- Drools Guvnor — repository di regole basato su web, business rules management system (BRMS) per il ciclo di vita degli artefatti
La licenza è Apache 2.0. Il codice è ospitato sul repository pubblico di JBoss.
Il modello a regole
Una regola Drools in DRL ha la forma:
rule "Warfarin and aspirin interaction"
when
$patient : Patient()
$warfarin : ActiveMedication(drug == "warfarin", patient == $patient)
$aspirin : ActiveMedication(drug == "aspirin", patient == $patient)
then
insert(new Alert(
$patient,
"Interaction: warfarin + aspirin — bleeding risk",
AlertLevel.HIGH
));
end
Il blocco when (detto anche LHS, Left-Hand Side) è una sequenza di pattern che il motore cerca di match contro la working memory — l’insieme dei fatti iniettati dall’applicazione chiamante. Il blocco then (RHS) esegue azioni — creazione di nuovi fatti, modifica di esistenti, chiamate a servizi esterni.
L’algoritmo Rete implementato da Drools costruisce una rete di discriminazione tra le condizioni delle regole, in cui i fatti vengono propagati e filtrati in modo incrementale: aggiungere o rimuovere un fatto non richiede di rivalutare tutte le regole da zero, solo la parte di rete interessata. È questa incrementalità che rende Rete adatto a scenari con molte regole e aggiornamenti frequenti della working memory — il caso di una cartella clinica attiva.
Perché interessa alla sanità
Drools non è pensato per la sanità. Ma l’insieme delle sue caratteristiche lo rende attraente per scenari CDS:
- Performance — Rete-OO gestisce migliaia di regole su working memory di decine di migliaia di fatti con tempi di risposta sub-secondo
- Licenza aperta — Apache 2.0 consente qualsiasi uso, incluso l’incorporazione in prodotti certificati come dispositivi medici (con il lavoro di qualifica che questo comporta)
- Ecosistema enterprise — integrazione naturale con stack Java (JBoss AS, Spring), supporto transazionale JTA, esecuzione in container J2EE
- DSL — possibilità di costruire linguaggi dichiarativi domain-specific per clinici, con sintassi leggibile da non programmatori
- Strumenti di authoring — Drools Guvnor, Eclipse plugin, mentre l’autoring di MLM Arden resta per lo più textual editor
Alcune direttrici concrete di adozione:
- Eligibility per studi clinici — regole sui criteri di inclusione/esclusione di un trial, espresse come Drools rules, con valutazione automatica al momento dell’enrollment
- Drug-drug interaction — database di interazioni espresse come regole, con match al momento della prescrizione
- Order set appropriateness — verifica di appropriatezza di un insieme di richieste cliniche rispetto a una diagnosi primaria
- Preventive reminders — regole temporali su screening, vaccinazioni, follow-up
- Pathway compliance — monitoraggio del rispetto di percorsi diagnostico-terapeutici per patologie croniche (diabete, ipertensione, scompenso)
Alcuni progetti accademici — NHS nel Regno Unito, Veterans Affairs negli USA, gruppi europei di e-Health — stanno sperimentando Drools come motore di esecuzione di linee guida clinica codificate in modelli più astratti (GLIF, PROforma); in questi casi Drools non sostituisce Arden/GELLO, ma è il motore che li esegue.
Il tema del binding ai dati
Il nodo ricorrente del CDS — come il motore di regole accede ai dati del paziente — si ripresenta con Drools. A differenza di Arden (che prescrive uno slot data specifico), Drools è completamente agnostico: i fatti nella working memory sono semplici oggetti Java (POJO), che l’applicazione chiamante deve popolare a partire dalle sorgenti cliniche.
I pattern usati nei progetti sperimentali includono:
- Modello virtuale HL7 vMR (virtual Medical Record) — oggetti Java standard che rappresentano l’anagrafica paziente, farmaci attivi, diagnosi, risultati di laboratorio. L’adapter riempie il vMR a partire dalla cartella
- Binding a database cartella via JPA/Hibernate — le entity di cartella diventano fatti Drools direttamente
- FHIR come formato intermedio — qui il mondo informatico medico comincia a guardare alle prime discussioni HL7 su un nuovo standard orientato a risorse e API REST, in gestazione nei working group internazionali
Il problema è tecnicamente risolvibile ma richiede un’architettura coerente — che non può essere delegata interamente al motore di regole.
Commercializzazione e supporto
Red Hat offre JBoss BRMS (Business Rule Management System) come prodotto commerciale, con sottoscrizioni di supporto sopra il Drools open source. Il modello è quello tipico di Red Hat: codice identico a quello open, con aggiunta di certificazioni, QA, backport di patch, supporto telefonico e on-site. Per clienti con esigenze di production enterprise (ospedali su larga scala, aziende farmaceutiche con applicazioni regolatorie) questo modello fornisce un’ancora di stabilità che la versione pura open source può non offrire.
Adozione italiana
In Italia, nel 2007, Drools è conosciuto nei contesti enterprise Java — banche, telco, pubblica amministrazione — ma la sua adozione in sanità è ancora esplorativa. Alcuni gruppi di ricerca (Università di Pavia, Milano, Pisa, Messina) esplorano Drools per progetti di CDS sperimentale. L’integrazione con cartelle cliniche commerciali italiane è un tema non banale — richiede adapter custom — e il modello di business del vendor di cartella non sempre incentiva questa integrazione.
Dal punto di vista della pubblica amministrazione, il modello RedHat/JBoss con supporto enterprise è già presente in gare d’appalto per stack applicativi; estenderlo a scenari di CDS sanitario è una traiettoria plausibile ma non ancora attivata.
Alternative
Drools non è l’unico motore a regole disponibile:
- Jess — Sandia National Labs, algoritmo Rete in Java, storicamente accademico. Non più sotto sviluppo attivo intensivo
- IBM ILOG JRules — commerciale, standard di fatto in ambito bancario-assicurativo
- OpenRules — motore Decision Table commerciale con versione ridotta free
- Prova — motore di regole reattivo con supporto a eventi, accademico
- ClassicJade — sistemi esperti CLIPS-derived
Nell’ecosistema open source, Drools è la scelta dominante per JVM. Per linguaggi diversi, l’ecosistema è frammentato (NRules per .NET, pyke/rete-py per Python, vari DSL Ruby).
Prospettive
Le direzioni di sviluppo di Drools nei prossimi anni includeranno:
- Complex Event Processing (CEP) — gestione di flussi di eventi temporali, con operatori su finestre scorrevoli. Estremamente rilevante in contesti clinici (serie temporali di parametri vitali, monitoraggio continuo)
- Integrazione con BPMN 2.0 — il nuovo standard di business process modeling pubblicato da OMG nel 2007 — via jBPM
- Expansion of Drools Guvnor verso un BRMS completo con versionamento, flussi di approvazione, policy di rilascio
- Integrazione con modelli di dati standardizzati — vMR HL7, prospettivamente i modelli che emergeranno dalle nuove discussioni HL7 sul dopo-CDA
Il ruolo di Drools in sanità nei prossimi anni sarà determinato da: disponibilità di library di regole cliniche condivise (il bene che manca più di tutti nell’ecosistema CDS); maturità di adapter verso cartelle cliniche reali; emergenza di uno standard di scambio realmente adottato per la comunicazione tra cartella e servizio CDS esterno. Drools è tecnicamente pronto; gli altri pezzi stanno cominciando a muoversi.
Riferimenti: Drools 4.0 (maggio 2007), JBoss Rules / Red Hat (www.jboss.org/drools). Algoritmo Rete (Charles Forgy, 1974). Rete-OO (Mark Proctor). Licenza Apache 2.0. HL7 vMR — virtual Medical Record. OMG BPMN 2.0 (2007).