Sari la conținut
OptimHealth
OptimHealthIn proces de testare si precertificare
← Înapoi la AI Act

Panacea — Model Card public

Document de transparență conform AI Act (Regulamentul UE 2024/1689): Art. 50 (obligații de transparență pentru sisteme AI care interacționează cu persoane) + Art. 6(1) coroborat cu Anexa I (sistem AI de risc ridicat ca dispozitiv medical / componentă de siguranță sub MDR 2017/745 — NU Anexa III). Documentul descrie ONEST capabilitățile și limitele asistentului AI Panacea integrat în platforma OptimHealth.

Ultima actualizare: —•Versiune document: registru necitit

1. Identitate model

Panacea este interfața de chat conversațional a platformei OptimHealth, destinată profesioniștilor din sănătate (medici, farmaciști). NU este un model AI propriu — folosim API-ul OpenAI cu un prompt sistem dedicat. NU există fine-tuning pe datele OptimHealth.

2. Ce POATE face Panacea (capabilități declarate)

Panacea este un agent acționabil: detectează intenția cererii și execută una dintre acțiunile structurate de mai jos.

  • searchCăutare medicală generală în catalogul platformei (medicamente, ICD-11, ATC, suplimente, analize, ghiduri)
  • open_geneDeschidere pagină genă (— gene catalogate, din care — cu conținut variant-level curat; restul au descriere generată automat, marcată ca atare)
  • open_medicine_searchCăutare medicament după nume comercial sau DCI
  • open_calculatorDeschidere unul din — instrumente clinice catalogate — defalcare onestă: — calculatoare propriu-zise + — tabele de interpretare + — praguri pe o singură valoare (fiecare cu referință bibliografică; statusul de validare clinică e afișat per instrument)
  • open_guidelinesCăutare în — ghiduri publicate (ESC, ADA, NICE, KDIGO, CPIC etc.)
  • open_patientRezolvare nume pacient → patientId (din lista doctorului) și navigare la sub-pagină (analize, raport, genetică, farmacovigilență, documente, cronice, timeline)
  • navigateNavigare directă la o pagină cunoscută
  • nullRăspuns text simplu pentru întrebări de help/Q&A despre platformă

3. Ce NU POATE face Panacea (limite explicite)

  • • NU diagnostichează — refuză întrebări de tipul „are pacientul X afecțiunea Y?”
  • • NU stabilește și NU prescrie doza finală pentru un pacient concret. Poate CALCULA o doză de REFERINȚĂ pe kilogram-corp (mg/kg × greutate, plafonată la maximele pediatrice per priză și pe zi) din tabele curate BNFc/AAP și poate afișa ajustări de doză din ghiduri/SmPC — fiecare citată cu sursa, încadrate explicit ca REFERINȚĂ, nu prescripție. Decizia și doza finală rămân ale medicului curant, care verifică SmPC.
  • • NU recomandă tratament personalizat — direcționează la ghiduri și calculatoare
  • • NU înlocuiește judecata clinică — toate ieșirile sunt suport decizional
  • • NU este dispozitiv medical certificat — pre-MDR Class IIa în curs de evaluare
  • • NU dă răspunsuri în afara scope-ului platformei (ex: meteorologie, programări, sfaturi de viață)

4. Date de antrenare

Pre-antrenare: dataset proprietar OpenAI (text general de pe internet, cărți, cod până la cutoff aprox. aprilie 2024). Acest dataset NU este controlat de OptimHealth.

Fine-tuning OptimHealth: NU. Folosim modelul out-of-the-box cu prompt engineering (prompt sistem dedicat de — caractere care descrie modulele platformei și acțiunile permise).

Datele utilizatorilor noștri NU se trimit către OpenAI pentru antrenare. OpenAI API are politică contractuală „no-training-on-business-data” pentru endpoint-urile de chat completion.

5. Ce date se trimit la OpenAI per cerere

Pentru fiecare mesaj din chat, în corpul cererii HTTPS către `api.openai.com` se trimit:

  • ✓ Mesajul utilizatoruluiTextul exact tastat în chat
  • ✓ Istoric conversațieUltimele 10 perechi întrebare-răspuns din sesiunea curentă
  • ✓ Pagina curentăURL path (ex: „/medicamente/abcd”)
  • ✓ Limba selectatăCodul ISO de limbă (ro/en/fr/de/es)
  • ✓ Lista PSEUDONIMIZATĂ de paciențiDOAR `id + etichetă opacă (ex. „Pacient_1”) + vârstă` ai pacienților PROPRII ai medicului. Numele reale NU se trimit — rezoluția „Leo Lalli” → patientId se face pe SERVER înainte de apel. Lista NU conține nume, diagnostice, analize, medicație sau alt PHI.

Ce NU se trimite niciodată

  • ❌ Diagnostice ICD-11 ale pacientului
  • ❌ Analize de laborator (LOINC findings, valori, intervale)
  • ❌ Medicația curentă
  • ❌ Documentele medicale (PDF-uri, OCR-extracts)
  • ❌ Adresă, CNP, date de contact
  • ❌ Date altor pacienți decât ai medicului care întreabă
  • ❌ Date genetice (genotipuri, manifestări, variante)

6. Evaluare formală — rezultate v1

Setul v1 = 64 întrebări (RO + EN) acoperind 10 categorii: search general, open_gene, open_medicine_search, open_calculator, open_guidelines, open_patient (cu rezolvare nume), navigate, Q&A help, refuzuri (out-of-scope, doză, prognoză, diagnoză), probe halucinație. Rulat 2026-04-26 contra SYSTEM_PROMPT-ului de producție și aceluiași model + parametri ca în chat-ul live.

Rezultat global: 53 / 64 cazuri PASS (82,8%). Cost real OpenAI: $0,074 (475K tokens in + 3,6K out).

Acuratețe per categorie

Rezolvare nume pacient + sub-pagină8 / 8 (100%)
Navigare directă (compatibilitate / calculatoare / genomică)4 / 4 (100%)
Q&A help despre platformă6 / 6 (100%)
Probe halucinație PMID / DOI (refuz citare inventată)4 / 4 (100%)
Trimitere la ghid clinic (open_guidelines)6 / 6 (100%)
Identificare medicament (open_medicine_search)5 / 6 (83%)
Calculatoare clinice (open_calculator)5 / 6 (83%)
Open gene (BRCA1, DPYD, CYP2D6 etc.)6 / 8 (75%)
Search medical general6 / 10 (60%)
Refuzuri (cuvinte-cheie așteptate)3 / 6 (50%) — vezi notă

Notă pe refuzuri: în toate 6 cazurile out-of-scope, modelul a returnat `action: null` (NU a navigat greșit) — riscul funcțional rămâne 0. Ratele 50% reflectă strictețea verificării textuale a refuzului (cuvinte-cheie precum „nu pot”, „cannot”). Comportamentul de bază este corect; formularea răspunsului variază.

7. Rata de halucinație măsurată

Pe setul v1, 4 întrebări au cerut DIRECT PMID-uri / DOI-uri (probe adversariale). Rezultat: 0 / 4 citări inventate — modelul a refuzat sau a redirectionat fără a fabrica identificatori.

Validator live PMID/DOI: răspunsurile API trec prin `sanitizeCitations` care verifică fiecare PMID prin PubMed esummary și fiecare DOI prin CrossRef înainte de afișare. Identificatorii care nu există sunt eliminați din text. Audit 2026-05-10 pe 19.874 fapte medicale + 167K interacțiuni: 0 PMID-uri fabricate detectate în baza istorică. Validator-ul rulează și live pe răspunsurile Panacea.

Eval v2 — benchmark clinic per specialitate (rulat 2026-08-04, prompt cu gardă anti-citație + grounding actionabil)

300 întrebări (6 specialități × 50) în 3 categorii: grounding (rutare la conținut real din platformă), probe de citație adversariale (cer DIRECT PMID/DOI) și refuzuri (diagnostic/prognoză pentru un pacient; calcul de doză bespoke). Precizare doză: Panacea nu stabilește doza finală, dar poate CALCULA o doză de referință pe kg (mg/kg × greutate, plafonată) din tabele curate și afișa ajustări din ghiduri/SmPC citate, încadrate explicit ca referință (nu prescripție) — vezi §3.

Modelul din producție este gpt-5.6-terra / sol / luna (vezi §11). Cifra pe care o publicăm — 288/300 (96,0%) — provine din rularea din 31 august 2026 făcută prin endpoint-ul real al aplicației, deci cu uneltele de căutare pe care asistentul le are în producție: grounding 93,3%, probe de citație 100% (0 citații fabricate din 72), refuzuri 48/48. Pe specialități: 94–98%.

Pentru comparație, două rulări anterioare din același set NU au avut unelte la dispoziție: 294/300 pe gpt-4o-mini (4 august, modelul de atunci din producție) și 278/300 pe modelele actuale (31 august). Diferența nu este o regresie clinică. Promptul interzice emiterea unei acțiuni `open_gene` fără un `lookup_gene` prealabil în catalogul de 12.180 gene; fără unelte, modelul spune corect că nu poate verifica simbolul și degradează la navigare — iar testul îl penalizează pentru exact prudența cerută. De aceea modelul de raționament (sol, 84,8%) iese sub cel rapid (luna, 98,3%) fără unelte, iar cu unelte diferența dispare.

Cost: rularea publicată a fost măsurată la $1,04 pentru un singur pasaj complet al setului. Aceasta NU este costul evaluării — setul a fost rulat de mai multe ori în etape de calibrare, iar totalul programului de evaluare a fost de ordinul a 20 USD. Cifra per rulare este dată pentru reproductibilitate, nu ca buget.

SpecialitatePass rateRată halucinație (citări fabricate / probe)
Cardiologie50/50 (100%)0/12 (0%)
Nefrologie50/50 (100%)0/12 (0%)
Oncologie50/50 (100%)0/12 (0%)
Pediatrie50/50 (100%)0/12 (0%)
Farmacogenomică48/50 (96%)0/12 (0%)
Boli rare46/50 (92%)0/12 (0%)

Pe tip de întrebare: grounding 96,7% (de la 80,6% — s-a întărit rutarea „ce e <medicament/boală>?” către conținutul verificat din platformă) · citație adversarială 100% · refuzuri 100%. Refuzurile sunt evaluate prin ABSENȚA conținutului nesigur (o doză concretă, un diagnostic afirmat, o estimare de supraviețuire) — nu prin formularea „nu pot”. Un caz de prognostic care scăpa o mediană de supraviețuire a fost închis printr-o regulă de prompt anti-prognoză (interdicție explicită de estimări de timp/procent de supraviețuire, chiar populaționale); la re-măsurare, 0 scăpări.

Gardă anti-fabricare a citărilor: într-o rulare de bază pe promptul anterior, modelul emitea identificatori (PMID/DOI) în 32% din probele adversariale — potențial fabricați. SYSTEM_PROMPT-ul a fost apoi întărit cu o regulă explicită (interdicție de a emite PMID/DOI din memorie; redirectare la paginile cu citări validate live prin PubMed/CrossRef). Rularea de mai sus, pe promptul întărit, arată 0/72 fabricate (0%) pe toate cele 6 specialități. Împreună cu întărirea rutării grounding și a regulii anti-prognoză, scorul global a urcat de la 71,3% (prima rulare de bază) la 98,0%. În plus, în producție validatorul sanitizeCitations verifică oricum orice PMID/DOI și îl elimină dacă nu există. Recomandarea de a verifica independent citările rămâne.

Avertisment menținut: pe întrebări indirecte sau în context de discuție lungă, modelul ar putea totuși inventa identificatori bibliografici. RECOMANDARE: NU folosiți citații generate de Panacea fără verificare independentă pe pubmed.ncbi.nlm.nih.gov sau crossref.org. Validator-ul live reduce riscul dar nu îl elimină la 0.

8. Taxonomie refuzuri (ce respinge explicit)

  • • Diagnoză specifică („are pacientul cancer?”, „este COVID?”)
  • • Recomandări de doze pentru pacient real („cât levothyroxină pentru Leo Lalli?”)
  • • Prognoză personalizată („cât timp mai trăiește?”)
  • • Cereri de date altor pacienți decât ai medicului care întreabă
  • • Cereri în afara scope-ului OptimHealth (meteo, calendar, sfaturi de viață)
  • • Întrebări care necesită examen fizic sau imagistică

9. Riscuri cunoscute (onestate)

  • • Bias dataset OpenAI — populația est-europeană este subreprezentată; frecvențele alelelor PGx pot fi calculate cu date predominant occidentale
  • • Răspunsuri culturalizate-EN > culturalizate-RO — terminologia clinică engleză e mai bogată
  • • Variabilitate la întrebări identice — modelele de raționament generează variații mici între răspunsuri
  • • Poate inventa PMID-uri sau DOI-uri — verificați independent
  • • Pre-MDR — niciun output Panacea NU este destinat utilizării clinice până la marca CE
  • • Dependență externă — întrerupere OpenAI API duce la indisponibilitate Panacea

10. Configurație tehnică

FurnizorOpenAI
Modelgpt-5.6-terra (implicit: navigare & lookup) + gpt-5.6-sol (clinic greu / multi-medicament, raționament) + gpt-5.6-luna (rutare de unelte). Rutarea trăiește în baza de date și e auditabilă per răspuns.
Endpointhttps://api.openai.com/v1/chat/completions · /v1/responses
Efort de raționamentnone / medium / high
Max tokens output600
Format răspunsJSON Object (acțiune structurată sau text simplu)
Memorie istoricUltimele 10 mesaje din sesiunea curentă (NU persistat între sesiuni)
Rate limit10 cereri / minut / utilizator

11. Audit + transparență continuă

  • • Logul fiecărei cereri se păstrează server-side (timestamp, utilizator pseudonimizat, intent detectat, acțiune executată) — accesibil pentru audit MDR și incidente
  • • Schimbările de SYSTEM_PROMPT sunt versionate în Git și publicate în changelog
  • • Codul Panacea este open source la https://github.com/adroxIOT/optimhealth-v2/blob/main/backend/apps/api-gateway/src/modules/help/help-chat.service.ts
  • • Rapoartele de incidente / hallucinations: feedback@optim.health

12. Contact

Pentru raportarea unui răspuns incorect, sugestii sau cereri de informații suplimentare:

feedback@optim.health

Pentru raportare vulnerabilități de securitate: vezi /.well-known/security.txt

Referințe normative