# Πώς να ενσωματώσετε συστήματα κλινικής με ένα FHIR backend

> Οδηγός: σύνδεση ενός EMR κλινικής με τα FHIR R4 αρχεία ασθενών — κατάλογος γιατρών, αντιστοίχιση με αριθμό αρχείου, επίσκεψη ως μία συναλλαγή με τον γιατρό ως συντάκτη, εργαστηριακές αναφορές, δεδομένα άλλων παρόχων και webhooks.

Source: https://developers.anpheros.com/el/guides/integrate-clinic-systems-fhir

**Αυτός ο οδηγός συνδέει το λογισμικό μιας κλινικής (ένα 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` με το αρχείο |
| εργαστηριακά αποτελέσματα | ο [σύνδεσμος εργαστηρίου](https://developers.anpheros.com/el/guides/lab-connector), σε `Observation` |

## Βήμα 1: Εγγραφή της κλινικής και των γιατρών της

Οι πόροι καταλόγου δεν έχουν ασθενή. Άλλα έργα στο ίδιο περιβάλλον μπορούν να τους διαβάσουν, έτσι ώστε οι άλλοι πάροχοι ενός ασθενούς να βλέπουν ποιος έγραψε τι, αλλά μόνο το έργο σας μπορεί να τα τροποποιήσει.

```bash
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` με τον αριθμό μητρώου της κλινικής ως αναγνωριστικό:

```bash
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"}'
```

Από εκεί και πέρα, βρείτε τον ασθενή με αυτόν τον αριθμό, ποτέ με όνομα και ημερομηνία γέννησης:

```bash
curl "$BASE/Patient?identifier=https://clinic.example/mrn|MRN-20981" -H "Authorization: Bearer $KEY"
```

**Όταν το άτομο έχει ήδη εγγραφή στο Anpheros**, από τη δική του εφαρμογή ή από άλλο πάροχο, η κλινική δεν δημιουργεί δεύτερη. Ζητά από το άτομο πρόσβαση με OAuth, από ένα tablet στο γραφείο υποδοχής ή μέσω ενός συνδέσμου που αποστέλλεται πριν από την επίσκεψη, χρησιμοποιώντας μια **εμπιστευτική** εφαρμογή (ο διακομιστής της κλινικής διατηρεί το μυστικό). Το άτομο επιλέγει την εγγραφή του και για πόσο χρονικό διάστημα η κλινική μπορεί να έχει πρόσβαση σε αυτήν. Τα βήματα περιγράφονται στο [Πώς να υλοποιήσετε τη συναίνεση ασθενούς με SMART on FHIR](https://developers.anpheros.com/el/guides/smart-on-fhir-backend). Το πεδίο `patient` του token είναι το id που πρέπει να αποθηκεύσετε στο αρχείο σας.

## Βήμα 3: Καταγραφή μιας επίσκεψης ως μία συναλλαγή

Μια επίσκεψη παράγει πολλούς πόρους που ανήκουν μαζί. Στείλτε τους σε ένα `transaction` ώστε να αποθηκευτούν όλοι μαζί ή καθόλου, και δηλώστε ποιος εργάζεται: το `X-Anpheros-Acting-As` ορίζει τον ρόλο του γιατρού. Αυτό γίνεται ο συγγραφέας στο Provenance, γράφεται στο αρχείο καταγραφής πρόσβασης και εμφανίζεται στον ασθενή με το όνομα.

```bash
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 του καθενός ορίζει τον ρόλο του γιατρού, την κλινική και το σύστημα πηγής:

```json
"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 ιατρικών δεδομένων](https://developers.anpheros.com/el/guides/medical-data-provenance).

## Βήμα 4: Εργαστηριακά αποτελέσματα και έγγραφα

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

```bash
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](https://developers.anpheros.com/el/guides/import-lab-results-fhir) και [API ιατρικών δεδομένων](https://developers.anpheros.com/el/guides/medical-data-api).

## Βήμα 5: Διαβάστε τι έγραψαν άλλοι πάροχοι και μείνετε στη δική σας αρμοδιότητα

Με τη συγκατάθεση του ασθενούς, η κλινική διαβάζει ολόκληρο τον φάκελο εντός των πεδίων εμβέλειάς της, συμπεριλαμβανομένων όσων πρόσθεσαν άλλες κλινικές, εργαστήρια και ο ασθενής. Μπορεί να αλλάξει μόνο ό,τι έγραψε η ίδια. Μια ενημέρωση ή διαγραφή πόρου άλλου οργανισμού απαντά `403`, και το πρωτότυπο παραμένει ως είχε. Για να διορθώσετε κάτι που έγραψε άλλος πάροχος, γράψτε τον δικό σας πόρο (για παράδειγμα, ένα νέο `Condition` με την αξιολόγησή σας) και αφήστε τον φάκελο να δείχνει και τα δύο, το καθένα με τον συγγραφέα του.

Πριν από μια επίσκεψη, το `GET $BASE/Patient/$PID/$summary` παρέχει τη Διεθνή Περίληψη Ασθενούς του φακέλου: προβλήματα, φάρμακα, αλλεργίες και πρόσφατα ζωτικά σημεία, από κάθε πηγή.

## Βήμα 6: Ενημέρωση για νέα δεδομένα

Καταχωρήστε ένα webhook μία φορά για το έργο της κλινικής:

```bash
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](https://developers.anpheros.com/el/guides/webhooks).

## Τι βλέπει ο ασθενής

Ο ασθενής βλέπει την επίσκεψη, τον καρδιακό ρυθμό και την προσωρινή διάγνωση στο αρχείο του, καθένα από τα οποία σημειώνεται ως προστιθέμενο από την Δρ. Άννα Ποπέσκου στην Clinica Cardio Nord. Στις συνδέσεις του, η εφαρμογή της κλινικής καταγράφει κάθε πρόσβαση, με το όνομα όταν ένας επαγγελματίας υγείας ενεργούσε. Αυτή η διαφάνεια είναι που κάνει τους ασθενείς πρόθυμους να παραχωρήσουν πρόσβαση στην επόμενη κλινική.

## Λίστα ελέγχου για τη μετάβαση σε παραγωγικό περιβάλλον

- [ ] Οργανισμοί, Επαγγελματίες υγείας και Ρόλοι Επαγγελματιών υγείας καταχωρημένοι· όσοι αποχωρούν έχουν οριστεί ως ανενεργοί
- [ ] Ασθενείς αντιστοιχίζονται με βάση το αναγνωριστικό του ιατρείου, ποτέ με βάση το όνομα
- [ ] Υπάρχοντα αρχεία προσπελαύνονται μέσω συναίνεσης OAuth, χωρίς διπλοεγγραφές
- [ ] Κάθε αίτημα από το κλινικό προσωπικό φέρει `X-Anpheros-Acting-As`
- [ ] Επισκέψεις καταγράφονται ως συναλλαγές· διαγνώσεις με την κατάλληλη κατάσταση επαλήθευσης
- [ ] Σύστημα προέλευσης ορίζεται σε κάθε εγγραφή· εργαστηριακές αναφορές μέσω του συνδέσμου
- [ ] Τελικό σημείο Webhook επαληθεύει υπογραφές· `consent.revoked` διαχειρίζεται
- [ ] Έργο παραγωγικού περιβάλλοντος με υπογεγραμμένη συμφωνία DPA (κλειδιά `sk_live_…`)· δείτε [Τιμολόγηση](https://developers.anpheros.com/el/guides/pricing)

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

### Διαθέτει το Anpheros έτοιμο σύνδεσμο για το EMR μου;
Όχι. Δεν υπάρχουν έτοιμοι σύνδεσμοι για συγκεκριμένα EMRs ή εργαστηριακά συστήματα. Η ενσωμάτωση γίνεται έναντι των FHIR R4 και REST APIs, συνήθως ως μια μικρή υπηρεσία δίπλα στο EMR. Τα μηνύματα εργαστηρίου HL7 v2 γίνονται αποδεκτά ως έχουν.

### Μπορεί ένας γιατρός να εργάζεται για δύο κλινικές;
Ναι. Ένας `Practitioner` μπορεί να έχει ένα `PractitionerRole` σε κάθε οργανισμό. Ο ρόλος που αναφέρεται στο `X-Anpheros-Acting-As` αποφασίζει για ποια κλινική καταγράφεται κάθε εγγραφή.

### Τι συμβαίνει όταν ο ασθενής ανακαλεί την πρόσβαση της κλινικής;
Οι κλήσεις της κλινικής για αυτήν την εγγραφή επιστρέφουν `401`, και αποστέλλεται ένα webhook `consent.revoked`. Ό,τι έγραψε η κλινική παραμένει στην εγγραφή του ασθενούς με την προέλευσή του. Η κλινική απλώς δεν μπορεί πλέον να την διαβάσει ή να την τροποποιήσει.

## Σχετικά

- [Ενσωματώσεις υγειονομικής περίθαλψης](https://developers.anpheros.com/el/guides/healthcare-integrations): όλα τα πρότυπα ενσωμάτωσης με μια ματιά
- [Προέλευση ιατρικών δεδομένων εξηγείται](https://developers.anpheros.com/el/guides/medical-data-provenance)
- [Πώς να υλοποιήσετε τη συναίνεση ασθενούς με SMART on FHIR](https://developers.anpheros.com/el/guides/smart-on-fhir-backend)
- [Πώς να εισαγάγετε αποτελέσματα εργαστηρίου σε ένα αρχείο FHIR](https://developers.anpheros.com/el/guides/import-lab-results-fhir)
- [Διαλειτουργικότητα δεδομένων υγειονομικής περίθαλψης](https://developers.anpheros.com/el/guides/interoperability)
