Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Πώς να ενσωματώσετε συστήματα κλινικών με backend FHIR
Οδηγός: συνδέστε ένα EMR κλινικής με τα αρχεία FHIR R4 των ασθενών — κατάλογος γιατρών, αντιστοίχιση με αριθμό αρχείου, μια επίσκεψη ως μία συναλλαγή με τον γιατρό ως συγγραφέα, εργαστηριακές αναφορές, δεδομένα άλλων παρόχων και webhooks.
Αυτός ο οδηγός συνδέει το λογισμικό μιας κλινικής (ένα EMR, ένα σύστημα διαχείρισης ιατρείου ή ένα εργαλείο κρατήσεων) με τα HL7 FHIR R4 αρχεία ασθενών στο Anpheros: η κλινική και οι γιατροί της καταχωρούνται στον κατάλογο, οι ασθενείς αντιστοιχίζονται με τον αριθμό αρχείου της κλινικής, μια επίσκεψη καταγράφεται ως μία συναλλαγή με τον γιατρό να αναφέρεται ως συντάκτης, και η κλινική ενημερώνεται για δεδομένα που προσθέτουν άλλοι πάροχοι. Κάθε αίτημα curl εναντίον του δωρεάν sandbox, και οι απαντήσεις είναι του ίδιου του platform.
Η ενσωμάτωση εκτελείται στον server της κλινικής, με ένα API key έργου για τους ασθενείς που καταχωρεί η κλινική και, για άτομα που έχουν ήδη ένα Anpheros αρχείο, μια OAuth χορήγηση που εγκρίνουν.
Τι αντιστοιχεί σε τι
| Στο σύστημα της κλινικής | Στο FHIR R4 |
|---|---|
| η κλινική, τα τμήματά της | Organization |
| ένας γιατρός ή νοσηλευτής | Practitioner |
| αυτό το άτομο που εργάζεται στην κλινική, με ειδικότητα | PractitionerRole |
| το αρχείο του ασθενούς και ο αριθμός του | Patient με ένα identifier στο σύστημα της κλινικής |
| μια επίσκεψη | Encounter |
| ζωτικά σημεία, αποτελέσματα που μετρήθηκαν κατά την επίσκεψη | Observation συνδεδεμένα με το Encounter |
| μια διάγνωση | Condition (ICD-10), με verificationStatus προσωρινή ή επιβεβαιωμένη |
| μια συνταγή, τρέχουσα θεραπεία | MedicationStatement (ATC) |
| ένα γράμμα, μια περίληψη εξιτηρίου, μια σάρωση | DocumentReference με το αρχείο |
| εργαστηριακά αποτελέσματα | ο σύνδεσμος εργαστηρίου, σε Observation |
Βήμα 1: Εγγραφή της κλινικής και των γιατρών της
Οι πόροι καταλόγου δεν έχουν ασθενή. Άλλα έργα στο ίδιο περιβάλλον μπορούν να τους διαβάσουν, έτσι ώστε οι άλλοι πάροχοι ενός ασθενούς να βλέπουν ποιος έγραψε τι, αλλά μόνο το έργο σας μπορεί να τα τροποποιήσει.
export BASE=https://platform.anpheros.com/fhir/R4
export KEY=sk_test_…
H=(-H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json")
curl -X POST $BASE/Organization "${H[@]}" -d '{"resourceType": "Organization", "active": true, "name": "Clinica Cardio Nord",
"identifier": [{"system": "https://clinic.example/org", "value": "CCN"}]}'
curl -X POST $BASE/Practitioner "${H[@]}" -d '{"resourceType": "Practitioner", "active": true,
"name": [{"family": "Popescu", "given": ["Ana"], "prefix": ["Dr."]}]}'
curl -X POST $BASE/PractitionerRole "${H[@]}" -d '{"resourceType": "PractitionerRole", "active": true,
"practitioner": {"reference": "Practitioner/'$PRACTITIONER'"},
"organization": {"reference": "Organization/'$ORG'"},
"code": [{"text": "Cardiologist"}]}'
Διατηρήστε τα ανακτηθέντα αναγνωριστικά δίπλα στα αρχεία του προσωπικού σας. Όταν κάποιος αποχωρεί, ορίστε το PractitionerRole του σε "active": false. οι προηγούμενες εγγραφές του διατηρούν το όνομά του και δεν μπορεί πλέον να ενεργεί μέσω του συστήματός σας.
Βήμα 2: αντιστοίχιση ασθενών
Για τους ασθενείς που καταχωρεί η κλινική, δημιουργήστε το Patient με τον αριθμό μητρώου της κλινικής ως αναγνωριστικό:
curl -X POST $BASE/Patient "${H[@]}" -d '{"resourceType": "Patient",
"identifier": [{"system": "https://clinic.example/mrn", "value": "MRN-20981"}],
"name": [{"family": "Dinu", "given": ["Andrei"]}], "gender": "male", "birthDate": "1968-11-05"}'
Από εκεί και πέρα, βρείτε τον ασθενή με αυτόν τον αριθμό, ποτέ με όνομα και ημερομηνία γέννησης:
curl "$BASE/Patient?identifier=https://clinic.example/mrn|MRN-20981" -H "Authorization: Bearer $KEY"
Όταν το άτομο έχει ήδη εγγραφή στο Anpheros, από τη δική του εφαρμογή ή από άλλο πάροχο, η κλινική δεν δημιουργεί δεύτερη. Ζητά από το άτομο πρόσβαση με OAuth, από ένα tablet στο γραφείο υποδοχής ή μέσω ενός συνδέσμου που αποστέλλεται πριν από την επίσκεψη, χρησιμοποιώντας μια εμπιστευτική εφαρμογή (ο διακομιστής της κλινικής διατηρεί το μυστικό). Το άτομο επιλέγει την εγγραφή του και για πόσο χρονικό διάστημα η κλινική μπορεί να έχει πρόσβαση σε αυτήν. Τα βήματα περιγράφονται στο Πώς να υλοποιήσετε τη συναίνεση ασθενούς με SMART on FHIR. Το πεδίο patient του token είναι το id που πρέπει να αποθηκεύσετε στο αρχείο σας.
Βήμα 3: Καταγραφή μιας επίσκεψης ως μία συναλλαγή
Μια επίσκεψη παράγει πολλούς πόρους που ανήκουν μαζί. Στείλτε τους σε ένα transaction ώστε να αποθηκευτούν όλοι μαζί ή καθόλου, και δηλώστε ποιος εργάζεται: το X-Anpheros-Acting-As ορίζει τον ρόλο του γιατρού. Αυτό γίνεται ο συγγραφέας στο Provenance, γράφεται στο αρχείο καταγραφής πρόσβασης και εμφανίζεται στον ασθενή με το όνομα.
curl -X POST $BASE "${H[@]}" \
-H "X-Anpheros-Acting-As: PractitionerRole/$ROLE" \
-H "X-Anpheros-Author-Type: practitioner" \
-H "X-Anpheros-Source-System: ccn-emr" -d '{
"resourceType": "Bundle", "type": "transaction",
"entry": [
{"fullUrl": "urn:uuid:aa000000-0000-4000-8000-000000000001",
"resource": {"resourceType": "Encounter", "status": "finished",
"class": {"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "AMB", "display": "ambulatory"},
"subject": {"reference": "Patient/'$PID'"},
"serviceProvider": {"reference": "Organization/'$ORG'"},
"participant": [{"individual": {"reference": "PractitionerRole/'$ROLE'"}}],
"period": {"start": "2026-10-09T10:00:00Z", "end": "2026-10-09T10:30:00Z"}},
"request": {"method": "POST", "url": "Encounter"}},
{"resource": {"resourceType": "Observation", "status": "final",
"category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-signs"}]}],
"code": {"coding": [{"system": "http://loinc.org", "code": "8867-4", "display": "Heart rate"}]},
"subject": {"reference": "Patient/'$PID'"},
"encounter": {"reference": "urn:uuid:aa000000-0000-4000-8000-000000000001"},
"effectiveDateTime": "2026-10-09T10:10:00Z",
"valueQuantity": {"value": 92, "unit": "/min", "system": "http://unitsofmeasure.org", "code": "/min"}},
"request": {"method": "POST", "url": "Observation"}},
{"resource": {"resourceType": "Condition",
"subject": {"reference": "Patient/'$PID'"},
"encounter": {"reference": "urn:uuid:aa000000-0000-4000-8000-000000000001"},
"clinicalStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "active"}]},
"verificationStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "provisional"}]},
"code": {"coding": [{"system": "http://hl7.org/fhir/sid/icd-10", "code": "I48.0", "display": "Paroxysmal atrial fibrillation"}]}},
"request": {"method": "POST", "url": "Condition"}}
]}'
Το transaction-response έχει 201 Created για το Encounter, το Observation και το Condition. Το Observation και το Condition τώρα δείχνουν στο πραγματικό Encounter/0ca25459-…. Το Provenance του καθενός ορίζει τον ρόλο του γιατρού, την κλινική και το σύστημα πηγής:
"agent": [{"who": {"reference": "PractitionerRole/e6d8c227-…",
"identifier": {"system": "https://anpheros.com/fhir/CodeSystem/author-type", "value": "practitioner"}},
"onBehalfOf": {"reference": "Organization/c3a56a4b-…", "display": "Clinica Cardio Nord"}}],
"entity": [{"role": "source", "what": {"identifier": {"system": "ccn-emr"}}}]
Η διάγνωση είναι provisional μέχρι να επιβεβαιωθεί. Ενημερώστε την σε confirmed αργότερα, και το ιστορικό διατηρεί και τις δύο. Τι σημαίνει κάθε πεδίο εξηγείται στο Επεξήγηση Provenance ιατρικών δεδομένων.
Βήμα 4: Εργαστηριακά αποτελέσματα και έγγραφα
Τα αποτελέσματα από το εργαστήριο της κλινικής, ή οι αναφορές που φέρνει ο ασθενής, περνούν μέσω του εργαστηριακού συνδέσμου σε ένα αίτημα ανά αναφορά:
curl -X POST "https://platform.anpheros.com/v1/patients/$PID/labs/import" -H "Authorization: Bearer $KEY" \
-H "Content-Type: x-application/hl7-v2+er7" -H "X-Anpheros-Source-System: ccn-lab" --data-binary @oru.hl7
Οι επιστολές και οι περιλήψεις εξιτηρίου είναι έγγραφα: δημιουργήστε ένα DocumentReference μέσω /v1/patients/{id}/documents και ανεβάστε το PDF. Το αρχικό αρχείο δεν τροποποιείται ποτέ, και οι τιμές που εξάγονται από αυτό παραπέμπουν σε αυτό. Δείτε Πώς να εισάγετε εργαστηριακά αποτελέσματα σε ένα αρχείο FHIR και API ιατρικών δεδομένων.
Βήμα 5: Διαβάστε τι έγραψαν άλλοι πάροχοι και μείνετε στη δική σας αρμοδιότητα
Με τη συγκατάθεση του ασθενούς, η κλινική διαβάζει ολόκληρο τον φάκελο εντός των πεδίων εμβέλειάς της, συμπεριλαμβανομένων όσων πρόσθεσαν άλλες κλινικές, εργαστήρια και ο ασθενής. Μπορεί να αλλάξει μόνο ό,τι έγραψε η ίδια. Μια ενημέρωση ή διαγραφή πόρου άλλου οργανισμού απαντά 403, και το πρωτότυπο παραμένει ως είχε. Για να διορθώσετε κάτι που έγραψε άλλος πάροχος, γράψτε τον δικό σας πόρο (για παράδειγμα, ένα νέο Condition με την αξιολόγησή σας) και αφήστε τον φάκελο να δείχνει και τα δύο, το καθένα με τον συγγραφέα του.
Πριν από μια επίσκεψη, το GET $BASE/Patient/$PID/$summary παρέχει τη Διεθνή Περίληψη Ασθενούς του φακέλου: προβλήματα, φάρμακα, αλλεργίες και πρόσφατα ζωτικά σημεία, από κάθε πηγή.
Βήμα 6: Ενημέρωση για νέα δεδομένα
Καταχωρήστε ένα webhook μία φορά για το έργο της κλινικής:
curl -X POST https://platform.anpheros.com/v1/webhooks -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"url": "https://ccn.example/anpheros/hook", "events": ["resource.created", "resource.updated", "consent.revoked"]}'
Όταν ένα άλλο έργο γράφει σε μια εγγραφή στην οποία έχει πρόσβαση η κλινική σας, το συμβάν το αναφέρει με data.external: true και την πηγή, ώστε το EMR σας να μπορεί να εμφανίσει "νέα αποτελέσματα από άλλο εργαστήριο" χωρίς να κάνει polling. Ένα συμβάν consent.revoked σημαίνει ότι το άτομο έχει αποσύρει την πρόσβαση της κλινικής: σταματήστε τον συγχρονισμό αυτής της εγγραφής. Οι υπογραφές, οι επαναδοκιμές και τα ωφέλιμα φορτία καλύπτονται στο Webhooks.
Τι βλέπει ο ασθενής
Ο ασθενής βλέπει την επίσκεψη, τον καρδιακό ρυθμό και την προσωρινή διάγνωση στο αρχείο του, καθένα από τα οποία σημειώνεται ως προστιθέμενο από την Δρ. Άννα Ποπέσκου στην Clinica Cardio Nord. Στις συνδέσεις του, η εφαρμογή της κλινικής καταγράφει κάθε πρόσβαση, με το όνομα όταν ένας επαγγελματίας υγείας ενεργούσε. Αυτή η διαφάνεια είναι που κάνει τους ασθενείς πρόθυμους να παραχωρήσουν πρόσβαση στην επόμενη κλινική.
Λίστα ελέγχου για τη μετάβαση σε παραγωγικό περιβάλλον
- [ ] Οργανισμοί, Επαγγελματίες υγείας και Ρόλοι Επαγγελματιών υγείας καταχωρημένοι· όσοι αποχωρούν έχουν οριστεί ως ανενεργοί
- [ ] Ασθενείς αντιστοιχίζονται με βάση το αναγνωριστικό του ιατρείου, ποτέ με βάση το όνομα
- [ ] Υπάρχοντα αρχεία προσπελαύνονται μέσω συναίνεσης OAuth, χωρίς διπλοεγγραφές
- [ ] Κάθε αίτημα από το κλινικό προσωπικό φέρει
X-Anpheros-Acting-As - [ ] Επισκέψεις καταγράφονται ως συναλλαγές· διαγνώσεις με την κατάλληλη κατάσταση επαλήθευσης
- [ ] Σύστημα προέλευσης ορίζεται σε κάθε εγγραφή· εργαστηριακές αναφορές μέσω του συνδέσμου
- [ ] Τελικό σημείο Webhook επαληθεύει υπογραφές·
consent.revokedδιαχειρίζεται - [ ] Έργο παραγωγικού περιβάλλοντος με υπογεγραμμένη συμφωνία DPA (κλειδιά
sk_live_…)· δείτε Τιμολόγηση
Συχνές Ερωτήσεις
Διαθέτει το Anpheros έτοιμο σύνδεσμο για το EMR μου;
Όχι. Δεν υπάρχουν έτοιμοι σύνδεσμοι για συγκεκριμένα EMRs ή εργαστηριακά συστήματα. Η ενσωμάτωση γίνεται έναντι των FHIR R4 και REST APIs, συνήθως ως μια μικρή υπηρεσία δίπλα στο EMR. Τα μηνύματα εργαστηρίου HL7 v2 γίνονται αποδεκτά ως έχουν.
Μπορεί ένας γιατρός να εργάζεται για δύο κλινικές;
Ναι. Ένας Practitioner μπορεί να έχει ένα PractitionerRole σε κάθε οργανισμό. Ο ρόλος που αναφέρεται στο X-Anpheros-Acting-As αποφασίζει για ποια κλινική καταγράφεται κάθε εγγραφή.
Τι συμβαίνει όταν ο ασθενής ανακαλεί την πρόσβαση της κλινικής;
Οι κλήσεις της κλινικής για αυτήν την εγγραφή επιστρέφουν 401, και αποστέλλεται ένα webhook consent.revoked. Ό,τι έγραψε η κλινική παραμένει στην εγγραφή του ασθενούς με την προέλευσή του. Η κλινική απλώς δεν μπορεί πλέον να την διαβάσει ή να την τροποποιήσει.
Σχετικά
- Ενσωματώσεις υγειονομικής περίθαλψης: όλα τα πρότυπα ενσωμάτωσης με μια ματιά
- Προέλευση ιατρικών δεδομένων εξηγείται
- Πώς να υλοποιήσετε τη συναίνεση ασθενούς με SMART on FHIR
- Πώς να εισαγάγετε αποτελέσματα εργαστηρίου σε ένα αρχείο FHIR
- Διαλειτουργικότητα δεδομένων υγειονομικής περίθαλψης
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card