# Συνθετικά δεδομένα ασθενών για δοκιμές

> Synthea, personas και μοντελοποιημένα δεδομένα σε σύγκριση, τι περιέχουν τα καλά δεδομένα δοκιμών και τι συνέβη όταν φορτώσαμε ασθενείς Synthea σε έναν διακομιστή FHIR.

Source: https://developers.anpheros.com/el/guides/synthetic-patient-data

**Τα συνθετικά δεδομένα ασθενών είναι επινοημένα ιατρικά αρχεία — ασθενείς, διαγνώσεις, φάρμακα, εργαστηριακά αποτελέσματα, επισκέψεις — που δημιουργούνται για να μοιάζουν και να συμπεριφέρονται σαν πραγματικά, ώστε να μπορείτε να δημιουργείτε, να δοκιμάζετε και να παρουσιάζετε λογισμικό υγειονομικής περίθαλψης χωρίς να αγγίζετε πληροφορίες υγείας κανενός.** Είναι η προεπιλογή για την ανάπτυξη: πραγματικά δεδομένα ασθενών σε περιβάλλον δοκιμών αποτελούν κίνδυνο απορρήτου και συνήθως νομικό πρόβλημα. Αυτή η σελίδα καλύπτει τους κύριους τρόπους απόκτησης συνθετικών δεδομένων, τι είναι καλό και κακό σε καθένα, πώς να σχεδιάσετε δοκιμές γύρω από αυτά και πώς να τα φορτώσετε σε έναν διακομιστή FHIR — συμπεριλαμβανομένου του τι συνέβη όταν φορτώσαμε ασθενείς Synthea στην Anpheros.

## Τρεις τρόποι λήψης συνθετικών ασθενών

| Προσέγγιση | Παράδειγμα | Κατάλληλο για | Προσοχή |
|---|---|---|---|
| Προσομοίωση βάσει κανόνων | [Synthea](https://github.com/synthetichealth/synthea) (open source, από το MITRE): προσομοιώνει ζωές από τη γέννηση με ενότητες ασθενειών και εξάγει FHIR R4 bundles, C-CDA και CSV | Όγκος, πλήρη ιστορικά, τυπικές μορφές | Εστιασμένο στις ΗΠΑ από προεπιλογή (δημογραφικά στοιχεία, πόροι χρέωσης, κωδικοί). τα μοτίβα είναι τόσο ρεαλιστικά όσο οι ενότητες |
| Επιμελημένες προσωπικότητες | Ασθενείς σχεδιασμένοι στο χέρι με συγκεκριμένες παθήσεις | Επιδείξεις, ακραίες περιπτώσεις, επαναλήψιμες δοκιμές | Λίγοι ασθενείς· κάποιος πρέπει να τους διατηρεί συνεκτικούς |
| Στατιστική ή ML παραγωγή από πραγματικά δεδομένα | Μοντέλα εκπαιδευμένα σε ένα πραγματικό σύνολο δεδομένων | Ρεαλισμός έρευνας | Μπορεί να διαρρεύσει πραγματικούς ανθρώπους αν γίνει άσχημα· απαιτεί αξιολόγηση απορρήτου, όχι απλώς "είναι συνθετικό" |

Το κείμενο που γράφεται από ένα γλωσσικό μοντέλο κατ' απαίτηση είναι μια τέταρτη, επικίνδυνη πηγή: διαβάζεται καλά, αλλά συχνά αντιφάσκει στον εαυτό του (ένα φάρμακο χωρίς την πάθηση που θεραπεύει, αδύνατες τιμές εργαστηριακών εξετάσεων) και δεν πρέπει να αποτελεί τη βάση δοκιμών.

## Τι περιέχει καλά δεδομένα δοκιμών

Οι ρεαλιστικοί μέσοι όροι δεν αρκούν. Ο κώδικας "σπάει" στα άκρα, οπότε βεβαιωθείτε ότι τα δεδομένα σας, συνθετικά ή μη, περιλαμβάνουν:

- **Ελλιπή και μερικά δεδομένα:** ένα αποτέλεσμα εργαστηριακής εξέτασης χωρίς εύρος αναφοράς, ένα φάρμακο χωρίς δοσολογία, ένας ασθενής χωρίς ημερομηνία γέννησης.
- **Μονάδες και μορφές:** η ίδια εξέταση σε mg/dL και mmol/L, δεκαδικά κόμματα, ώρες με και χωρίς ζώνη ώρας.
- **Διορθώσεις και ιστορικό:** ένα τροποποιημένο αποτέλεσμα, μια διαγραμμένη (`entered-in-error`) καταχώρηση, μια πάθηση που έχει επιλυθεί.
- **Διπλότυπα:** η ίδια αναφορά που στάλθηκε δύο φορές.
- **Μακρύ και σύντομο ιστορικό:** ένα νεογέννητο, κάποιος με δέκα χρόνια δεδομένων, κάποιος με μία επίσκεψη.
- **Αρκετές γλώσσες και χώρες** εάν εξυπηρετείτε περισσότερες από μία αγορές.
- **Αλλαγές συναίνεσης:** μια εφαρμογή της οποίας η πρόσβαση ανακαλείται στη μέση μιας συνεδρίας.

## Φόρτωση ασθενών Synthea σε διακομιστή FHIR

Το Synthea γράφει ένα πακέτο FHIR R4 `transaction` ανά ασθενή. Δημιουργήσαμε δύο ασθενείς (`java -jar synthea-with-dependencies.jar -p 2 -s 4242 Massachusetts`) και τους φορτώσαμε σε μια τοπική εγκατάσταση του Anpheros. Το πακέτο του πρώτου ασθενούς είχε 221 καταχωρήσεις:

| Διατηρήθηκαν (τύποι που αποθηκεύει το Anpheros) | Αφαιρέθηκαν (τύποι που δεν αποθηκεύει το 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 |

Ο φορτωτής ρωτά τον διακομιστή ποιοι τύποι υποστηρίζονται, διατηρεί μόνο αυτούς και δημοσιεύει τους υπόλοιπους ως μία συναλλαγή:

```ts
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);
```

Αποτέλεσμα: 182 πόροι δημιουργήθηκαν σε μία συναλλαγή. Οι `urn:uuid` αναφορές μεταξύ των διατηρημένων καταχωρήσεων επιλύθηκαν σε αναγνωριστικά διακομιστή (μια `result` DiagnosticReport δείχνει σε μια Observation που υπάρχει). οι αναφορές στις 39 απορριφθείσες καταχωρήσεις παραμένουν όπως γράφτηκαν, οπότε πριν τη φόρτωση, συλλέξτε τις `fullUrl` κάθε απορριφθείσας καταχώρησης και αφαιρέστε ή μετατρέψτε τις διατηρημένες αναφορές που δείχνουν σε αυτές, και το `Patient/{id}/$summary` παρήγαγε ένα International Patient Summary με 15 προβλήματα, 6 εμβολιασμούς, 15 αποτελέσματα και 28 ζωτικά σημεία. Το `$everything` επέστρεψε 363 καταχωρήσεις, συμπεριλαμβανομένης της προέλευσης που προσθέτει η πλατφόρμα σε κάθε εγγραφή.

Τρία πράγματα που πρέπει να γνωρίζετε πριν βασιστείτε σε αυτό:

- **Οι υπό όρους αναφορές παραμένουν όπως γράφτηκαν.** Το Synthea δείχνει σε επαγγελματίες υγείας, οργανισμούς και τοποθεσίες με υπό όρους αναφορές όπως η `Practitioner?identifier=http://hl7.org/fhir/sid/us-npi|9999967398`. Το Anpheros δεν επιλύει υπό όρους αναφορές σε μια συναλλαγή. αποθηκεύονται όπως γράφτηκαν, με το `display` κείμενό τους, και δεν επιλύονται σε πόρο. Εάν ο κώδικάς σας ακολουθεί αυτούς τους συνδέσμους, φορτώστε επαγγελματίες υγείας και οργανισμούς ξεχωριστά και ξαναγράψτε τις αναφορές.
- **Τα δεδομένα χρέωσης και προμήθειας έχουν χαθεί.** Οι δηλώσεις και οι εξηγήσεις παροχών είναι κεντρικές στο μοντέλο κόστους των ΗΠΑ του Synthea και δεν αποτελούν μέρος ενός κλινικού αρχείου στο Anpheros.
- **Οι συνταγές γίνονται απόντες, όχι μετατρεπόμενες.** Η `MedicationRequest` αφαιρείται. εάν χρειάζεστε τα φάρμακα στο αρχείο, μετατρέψτε τα σε `MedicationStatement` πριν τη φόρτωση.

Τα ονόματα στο Synthea περιλαμβάνουν αριθμούς (`Marcelo725 Gulgowski816`) επίτηδες, ώστε κανείς να μην τα συγχέει με πραγματικούς ανθρώπους.

## Συνθετικοί ασθενείς στο sandbox του Anpheros

Κάθε project sandbox του Anpheros λαμβάνει το δικό του αντίγραφο 30 συνθετικών ασθενών, που δημιουργούνται από χειροποίητες περσόνες: ηλικίες από 3 έως 85 ετών, διάφορες χώρες και γλώσσες της ΕΕ, καταστάσεις κωδικοποιημένες σε ICD-10, φάρμακα σε ATC, εργαστηριακές εξετάσεις και ζωτικά σημεία σε LOINC με μονάδες UCUM και εύρη αναφοράς, έξι μήνες ιστορικού και έγγραφα. Ένα φρεσκο-εγκατεστημένο project περιέχει 30 ασθενείς, 43 καταστάσεις, 51 δηλώσεις φαρμακευτικής αγωγής, 1.811 παρατηρήσεις, 57 έγγραφα και 6 αλλεργίες. Τα δεδομένα είναι ντετερμινιστικά — κάθε project βλέπει τους ίδιους ανθρώπους με τις ίδιες τιμές, μόνο διαφορετικά IDs — και μια επαναφορά τα αποκαθιστά. Κάθε περσόνα διατηρεί ένα σταθερό αναγνωριστικό, οπότε το `Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|p02` βρίσκει πάντα τον ίδιο άνθρωπο. Δείτε [Δωρεάν βάση δεδομένων FHIR και sandbox](https://developers.anpheros.com/el/guides/free-fhir-database).

Χρησιμοποιήστε τις περσόνες όταν θέλετε μικρά, συνεκτικά αρχεία που καλύπτουν ευρωπαϊκές γλώσσες και τις δικές του δυνατότητες της πλατφόρμας. Φορτώστε το Synthea όταν χρειάζεστε όγκο ή ιστορικά τύπου ΗΠΑ.

## Συχνές ερωτήσεις

### Τι είναι τα συνθετικά δεδομένα ασθενών;
Επινοημένα ιατρικά αρχεία που μοιάζουν με τα πραγματικά σε δομή και μοτίβα, αλλά δεν περιγράφουν κανένα πραγματικό πρόσωπο. Επιτρέπει στους προγραμματιστές να δημιουργούν και να δοκιμάζουν χωρίς να χρησιμοποιούν προστατευμένες πληροφορίες υγείας.

### Είναι τα συνθετικά δεδομένα ανώνυμα εξ ορισμού;
Τα δεδομένα που παράγονται από κανόνες, όπως αυτά του Synthea, δεν περιέχουν πραγματικούς ασθενείς. Τα δεδομένα που παράγονται από μοντέλα εκπαιδευμένα σε πραγματικά αρχεία μπορούν ακόμα να αποκαλύψουν πραγματικούς ανθρώπους και χρειάζονται αξιολόγηση απορρήτου πριν κοινοποιηθούν.

### Μπορώ να εισαγάγω δεδομένα Synthea σε έναν διακομιστή FHIR;
Ναι. Το Synthea εξάγει πακέτα συναλλαγών FHIR R4. Αφαιρέστε τους τύπους πόρων που ο διακομιστής δεν υποστηρίζει, ελέγξτε πώς χειρίζεται τις υπό όρους αναφορές και δημοσιεύστε κάθε πακέτο ως συναλλαγή.

### Περιλαμβάνει το sandbox Anpheros συνθετικούς ασθενείς;
Ναι: 30 ανά έργο, με έξι μήνες κωδικοποιημένου ιστορικού, συν έως και 50 ασθενείς δοκιμής που δημιουργείτε μόνοι σας.

## Σχετικά

- [Δωρεάν βάση δεδομένων και sandbox FHIR](https://developers.anpheros.com/el/guides/free-fhir-database)
- [Παραδείγματα FHIR R4 JSON](https://developers.anpheros.com/tools/fhir-examples/)
- [Πώς να κανονικοποιήσετε ιατρικά δεδομένα](https://developers.anpheros.com/el/guides/normalize-medical-data)
- [Πώς να αποθηκεύσετε ιατρικά αρχεία χρησιμοποιώντας FHIR R4](https://developers.anpheros.com/el/guides/store-medical-records-fhir)
- [Πλατφόρμα FHIR](https://developers.anpheros.com/el/guides/fhir)
