AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Dati paziente sintetici per test

Synthea, personas e dati generati da modelli a confronto, cosa contengono i dati di test di qualità e cosa è successo quando abbiamo caricato pazienti Synthea in un server FHIR.

I dati di pazienti sintetici sono cartelle cliniche inventate — pazienti, diagnosi, farmaci, risultati di laboratorio, visite — generate per assomigliare e comportarsi come quelle reali, in modo da poter creare, testare e dimostrare software sanitario senza toccare le informazioni sanitarie di nessuno. È l'impostazione predefinita per lo sviluppo: i dati reali dei pazienti in un ambiente di test rappresentano un rischio per la privacy e solitamente un problema legale. Questa pagina copre i modi principali per ottenere dati sintetici, i punti di forza e di debolezza di ciascuno, come progettare test attorno ad essi e come caricarli su un server FHIR — incluso cosa è successo quando abbiamo caricato pazienti Synthea su Anpheros.

Tre modi per ottenere pazienti sintetici

Approccio Esempio Ideale per Attenzione a
Simulazione basata su regole Synthea (open source, da MITRE): simula vite dalla nascita con moduli di malattia ed esporta bundle FHIR R4, C-CDA e CSV Volume, cronologie complete, formati standard Di default incentrato sugli USA (demografia, risorse di fatturazione, codici); i pattern sono realistici solo quanto i moduli
Personaggi curati Pazienti progettati manualmente con condizioni specifiche Demo, casi limite, test ripetibili Pochi pazienti; qualcuno deve mantenerli coerenti
Generazione statistica o ML da dati reali Modelli addestrati su un set di dati reale Realismo della ricerca Può rivelare persone reali se fatto male; richiede valutazione della privacy, non solo "è sintetico"

Il testo scritto da un modello linguistico su richiesta è una quarta fonte, rischiosa: si legge bene ma spesso si contraddice (un farmaco senza la condizione che tratta, valori di laboratorio impossibili) e non dovrebbe essere la base dei test.

Cosa contiene una buona suite di dati di test

Le medie realistiche non sono sufficienti. Il codice si rompe sui casi limite, quindi assicurati che i tuoi dati, sintetici o meno, includano:

Caricamento di pazienti Synthea su un server FHIR

Synthea scrive un Bundle FHIR R4 transaction per paziente. Abbiamo generato due pazienti (java -jar synthea-with-dependencies.jar -p 2 -s 4242 Massachusetts) e li abbiamo caricati in un'istanza locale di Anpheros. Il bundle del primo paziente conteneva 221 voci:

Mantenute (tipi archiviati da Anpheros) Rimosse (tipi non archiviati da Anpheros)
Observation 61, Procedure 48, DiagnosticReport 24, Condition 15, Encounter 12, DocumentReference 12, Immunization 6, Patient, CareTeam, CarePlan, Provenance Claim 13, ExplanationOfBenefit 13, SupplyDelivery 9, Device 2, ImagingStudy 1, MedicationRequest 1

Il loader chiede al server quali tipi supporta, mantiene solo quelli e invia il resto come una transazione:

import { readFile } from 'node:fs/promises';
import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });   // sk_test_… key
const SUPPORTED = new Set(((await anpheros.fhir.metadata()) as any).rest[0].resource.map((r: any) => r.type));
const bundle = JSON.parse(await readFile(process.argv[2], 'utf8'));            // one Synthea patient file
const kept = bundle.entry.filter((e: any) => SUPPORTED.has(e.resource.resourceType));
const out: any = await anpheros.fhir.transaction({ ...bundle, entry: kept } as any);
console.log('created', out.entry.length);

Risultato: 182 risorse create in una transazione. I riferimenti urn:uuid tra le voci mantenute sono stati risolti in ID del server (un result di DiagnosticReport punta a un Observation esistente); i riferimenti alle 39 voci scartate rimangono come scritti, quindi prima del caricamento, raccogliere i fullUrl di ogni voce scartata e rimuovere o convertire i riferimenti mantenuti che puntano ad esse, e Patient/{id}/$summary ha prodotto un International Patient Summary con 15 problemi, 6 immunizzazioni, 15 risultati e 28 segni vitali. $everything ha restituito 363 voci, inclusa la provenance che la piattaforma aggiunge a ogni scrittura.

Tre cose da sapere prima di fare affidamento su di esso:

I nomi in Synthea includono numeri (Marcelo725 Gulgowski816) di proposito, in modo che nessuno li scambi per persone reali.

Pazienti sintetici nella sandbox Anpheros

Ogni progetto sandbox Anpheros ottiene la propria copia di 30 pazienti sintetici, generati da persone progettate manualmente: età da 3 a 85 anni, diversi paesi e lingue dell'UE, condizioni codificate in ICD-10, farmaci in ATC, laboratori e parametri vitali in LOINC con unità UCUM e intervalli di riferimento, sei mesi di cronologia e documenti. Un progetto appena inizializzato contiene 30 pazienti, 43 condizioni, 51 dichiarazioni di farmaci, 1.811 osservazioni, 57 documenti e 6 allergie. I dati sono deterministici: ogni progetto vede le stesse persone con gli stessi valori, solo ID diversi, e un reset li ripristina. Ogni persona mantiene un identificatore stabile, quindi Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|p02 troverà sempre la stessa persona. Vedere Database FHIR gratuito e sandbox.

Utilizzare le persone quando si desiderano record piccoli e coerenti che coprano le lingue europee e le funzionalità della piattaforma; caricare Synthea quando si necessita di volume o di cronologie in stile USA.

Domande frequenti

Cos'è il dato paziente sintetico?

Record sanitari inventati che assomigliano a quelli reali per struttura e pattern, ma non descrivono alcuna persona reale. Permette agli sviluppatori di creare e testare senza utilizzare informazioni sanitarie protette.

Il dato sintetico è anonimo per definizione?

I dati generati da regole, come quelli di Synthea, non contengono pazienti reali. I dati generati da modelli addestrati su record reali possono comunque rivelare persone reali e necessitano di una valutazione della privacy prima di essere condivisi.

Posso importare dati Synthea in un server FHIR?

Sì. Synthea esporta bundle di transazioni FHIR R4. Rimuovere i tipi di risorsa che il server non supporta, verificare come gestisce i riferimenti condizionali e inviare ogni bundle come transazione.

Il sandbox Anpheros include pazienti sintetici?

Sì: 30 per progetto, con sei mesi di cronologia codificata, più fino a 50 pazienti di test che crei tu stesso.

Correlati

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy