Doc
Documentazione PharmaX completa per integrazione API
Questa documentazione copre connessione tecnica, endpoint API protetti /v1/*, endpoint pubblici
/public/*, componente SaaS di calcolo, esempi pronti e checklist operativa per trasformare il
prontuario AIFA in decisioni rapide su prescrizione, disponibilita e logistica.
Unità operative coperte: mg, ml, gocce, fiale, UI, litri di O2, pack complessi e segnali runtime v2.4 per unità consigliata, moltiplicatori e alternative quantitative. Il runtime corrente usa dataset build-based e search build allineato.
Indice rapido
Onboarding in 10 minuti
- Apri /api e identifica gli endpoint del tuo caso d'uso.
- Ottieni una API key e usa header
X-API-Keyper tutte le route/v1/*. - Verifica con
GET /health,GET /readyeGET /v1/dataset. - Integra prima
/v1/searche/v1/drugs/{aic_code}, poi aggiungi i moduli avanzati.
/public/* senza API key.
Connessione API e sicurezza
Base URL
https://pharmax.aipersonal.it
OpenAPI machine-readable: /v1/openapi.json.
Header obbligatorio
X-API-Key: <YOUR_KEY>
Valido per tutte le route protette /v1/*.
Ruoli chiave
client: endpoint business read-only + calc.
admin: endpoint amministrativi runtime.
Rate limit e quota
Header disponibili: X-RateLimit-*, X-Quota-* (se quota configurata).
Catalogo endpoint
- API protette:
/v1/*con API key. - SaaS calcolo:
/v1/calc/version,/v1/calc/derive,/v1/calc/derive/batch. - API pubbliche:
/public/*senza API key per demo/prototipi. - Dettaglio completo endpoint: pagina /api.
SaaS calcolo PharmaX
- Canale attuale ufficiale: SaaS API dentro PharmaX.
- Input tipico:
{ "aic_code": "#########" }o payload normalizzato. - Output:
derived_calccon stato calcolo (ok,partial,not_computable), unità suggerita e riepilogo runtime. - Il runtime v2.4 valorizza meglio
multiplier_signal,unit_posologica_rankedealternative_quantitative_systemsquando presenti nel payload.
Endpoint pubblici senza API key
GET /public/metrics,GET /public/insights,GET /public/demo-configGET /public/drug-search,GET /public/changes,GET /public/drug/:aic_codeGET /public/advanced-search/filters,GET /public/advanced-searchGET /public/posologia/search,GET /public/posologia/drugs/:aic_code,POST /public/posologia/calc/deriveGET /public/equivalents/by-aic/:aic_code,GET /public/formats/by-aic/:aic_code
/v1/* con API key.
Sincronizzazione incrementale (scalabile)
Se il tuo software salva localmente i JSON PharmaX, evita full refresh: usa il cursore di delta sync
con /public/changes e aggiorna solo gli AIC modificati.
- Salva localmente il cursore:
since_updated_at+since_aic. - Chiama
/public/changes?since_updated_at=...&since_aic=...&limit=200. - Per ogni AIC ricevuto, ricarica dettaglio e fai upsert nel tuo DB.
- Memorizza
next_cursorper il ciclo successivo.
record_version aiuta a capire rapidamente se una riga locale e obsoleta.
Campi JSON da usare per update automatici
Per aggiornare una riga farmaco in modo affidabile, i software client devono leggere e salvare questi campi.
sync.record_version: fingerprint della riga farmaco (chiave confronto update).sync.source_updated_at: timestamp sorgente record.sync.dataset_version: versione dataset che ha prodotto il record.sync.schema_version: versione schema payload.dataset.imported_at: data import runtime utile per audit.
record_version cambia, aggiorna la riga locale; se e uguale, non ricaricare.
Blocchi runtime v2.4 da usare lato client
Contratto dati
Usa normalized, normalized_core e interop come superfici primarie, non solo i campi piatti legacy.
Calcolo SaaS
Nel risultato di derive privilegia suggested_operational_unit, runtime_contracts e package_units_source.
Sync incrementale
Per i client che mantengono un DB locale, il flusso corretto resta: /public/changes -> ricarico dettaglio -> upsert per record_version.
Conformita Open Data AIFA e licenza
PharmaX usa i dataset farmaco pubblici secondo la policy Open Data AIFA e la licenza CC BY 4.0. Le integrazioni client devono mantenere la catena di attribuzione anche dopo normalizzazioni e calcoli derivati.
- Attribuzione obbligatoria della fonte AIFA.
- Link esplicito alla licenza CC BY 4.0.
- Indicazione delle modifiche applicate ai dati (normalizzazione, arricchimento, calcoli).
- Nessuna rappresentazione che implichi endorsement AIFA del software cliente.
- Riuso di eventuali dati personali solo nei limiti della normativa vigente.
Esempi veloci
Ricerca farmaci (API protetta)
curl -H "X-API-Key: <CLIENT_KEY>" "https://pharmax.aipersonal.it/v1/search?query=paracetamolo&limit=5&page=1"
Calcolo SaaS (derive)
curl -X POST \
-H "Content-Type: application/json" \
-H "X-API-Key: <CLIENT_KEY>" \
"https://pharmax.aipersonal.it/v1/calc/derive?drops_per_ml=20&allow_percentage_volume=1" \
-d '{"aic_code":"025333016"}'
Endpoint pubblico demo
curl "https://pharmax.aipersonal.it/public/advanced-search?q=paracetamolo&limit=10&offset=0"
Error model e troubleshooting
400: input non valido (es. AIC non a 9 cifre).401: API key mancante/non valida.403: permessi insufficienti (route admin).404: risorsa non trovata.429: rate limit o quota giornaliera superata.
Formato standard errore: {"error":{"code":"...","message":"...","request_id":"..."}}.
SLA e modello supporto
- Disponibilita target SaaS: 99.5% mensile (finestra di manutenzione esclusa).
- Presa in carico incidente critico: entro 4 ore lavorative.
- Presa in carico incidente alto: entro 1 giorno lavorativo.
- Canale supporto: pagina contatti ufficiale con tracciamento ticket.
Versioning e deprecazione
- Versione API corrente:
v1(backward compatibility per cambi non-breaking). - Versioni dati esposte via
/v1/datasetcondataset_versioneschema_version. - Deprecazioni annunciate con anticipo minimo 90 giorni per endpoint/parametri critici.
- Per ogni release: aggiornamento OpenAPI + verifica smoke runtime/UI/go-live.
Changelog pubblico (ultimi aggiornamenti)
- 2026-03-29: attivazione runtime build-based con dataset v2.4 e search build allineato.
- 2026-03-29: allineamento dataset runtime a
dataset_version=2026-03-29,schema_version=2.4. - 2026-03-20: introdotto endpoint
/public/changesper sync incrementale a cursore.
Questa sezione riassume solo novita funzionali lato client e integrazione.
FAQ aggiornamento automatico
- Come capisco se un farmaco e cambiato? Confronta
record_versionlocale vs API. - Ogni quanto sincronizzare? 6-12 ore per uso standard, 1-2 ore per alta rotazione.
- Serve riscaricare tutto il catalogo? No, dopo bootstrap usa solo delta sync.
- Se il delta fallisce? Riprendi dall'ultimo
next_cursorvalido salvato.
Security posture
- API key per
/v1/*, RBAC admin, sessioni web protette e CSRF su scrittura. - Rate limiting su canali protetti e pubblici con header espliciti in risposta.
- Hardening server-side: blocco path sensibili, noindex aree admin/API, header sicurezza.
- Canale disclosure:
/.well-known/security.txt.
Checklist go-live
- Chiavi separate per test e produzione.
- Monitoraggio su
/health,/ready,/v1/dataset. - Gestione esplicita errori
401/403/429lato client. - Fallback UI per timeout/retry e log
request_id. - Validazione finale con casi reali su ricerca, dettaglio e calcolo.
Supporto
Per supporto tecnico o commerciale usa la pagina contatti ufficiale.
Vai alla pagina contatti