Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Klinik Sistemleri FHIR Backend ile Nasıl Entegre Edilir
Eğitim: bir klinik EMR'sini hastaların FHIR R4 kayıtlarına bağlama — doktor dizini, kayıt numarasına göre eşleştirme, tek bir işlem olarak ziyaret ve doktorun yazar olarak belirtilmesi, laboratuvar raporları, diğer sağlayıcıların verileri ve webhook'lar.
Bu eğitim, bir kliniğin yazılımını (bir EMR, bir muayenehane yönetim sistemi veya bir randevu aracı) Anpheros'taki hastaların HL7 FHIR R4 kayıtlarına bağlar: klinik ve doktorları dizine kaydedilir, hastalar kliniğin kayıt numarasına göre eşleştirilir, bir ziyaret doktorun yazar olarak belirtildiği tek bir işlem olarak yazılır ve klinik diğer sağlayıcıların eklediği veriler hakkında bilgi edinir. Her istek, curl ücretsiz sandbox'a karşı yapılır ve yanıtlar platformun kendi yanıtlarıdır.
Entegrasyon, kliniğin kaydettiği hastalar için bir proje API anahtarı ve Anpheros kaydı olan kişiler için onayladıkları bir OAuth hibesi ile kliniğin sunucusunda çalışır.
Nelerin Nelerle Eşleştiği
| Klinik sistemde | FHIR R4'te |
|---|---|
| klinik, departmanları | Organization |
| bir doktor veya hemşire | Practitioner |
| o klinikte çalışan, uzmanlığı olan o kişi | PractitionerRole |
| hasta dosyası ve numarası | Patient, klinik sistemindeki bir identifier ile |
| bir ziyaret | Encounter |
| hayati belirtiler, ziyaret sırasında ölçülen sonuçlar | Encounter'e bağlı Observation |
| bir teşhis | Condition (ICD-10), verificationStatus geçici veya kesin olarak |
| bir reçete, mevcut tedavi | MedicationStatement (ATC) |
| bir mektup, taburculuk özeti, bir tarama | dosyayla birlikte DocumentReference |
| laboratuvar sonuçları | laboratuvar bağlayıcısı aracılığıyla Observation'e |
Adım 1: Kliniği ve doktorlarını kaydetme
Dizin kaynaklarının hastası yoktur. Aynı ortamdaki diğer projeler bunları okuyabilir, böylece bir hastanın diğer sağlayıcıları kimin ne yazdığını görebilir, ancak yalnızca sizin projeniz bunları değiştirebilir.
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"}]}'
Döndürülen kimlikleri personel kayıtlarınızın yanında saklayın. Biri ayrıldığında, PractitionerRole alanını "active": false olarak ayarlayın; geçmiş yazıları isimlerini korur ve artık sisteminiz aracılığıyla işlem yapamazlar.
Adım 2: Hastaları Eşleştirme
Klinik tarafından kaydedilen hastalar için, Patient'ü kliniğin kayıt numarası ile bir tanımlayıcı olarak oluşturun:
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"}'
Bundan sonra, hastayı bu numara ile bulun, asla isim ve doğum tarihi ile değil:
curl "$BASE/Patient?identifier=https://clinic.example/mrn|MRN-20981" -H "Authorization: Bearer $KEY"
Kişinin zaten bir Anpheros kaydı varsa, kendi uygulamasından veya başka bir sağlayıcıdan, klinik ikinci bir kayıt oluşturmaz. OAuth ile erişim ister, resepsiyondaki bir tabletten veya ziyaret öncesinde gönderilen bir bağlantı aracılığıyla, gizli bir uygulama kullanarak (kliniğin sunucusu gizliliği saklar). Kişi kendi kaydını ve kliniğin ne kadar süreyle erişebileceğini seçer. Adımlar SMART on FHIR ile hasta onayının nasıl uygulanacağı bölümünde yer almaktadır; belirtecin patient alanı, dosyanızla birlikte saklanacak kimliktir.
Adım 3: Bir ziyareti tek bir işlem olarak yazma
Bir ziyaret, birbiriyle ilişkili birkaç kaynak üretir. Bunları tek seferde veya hiç depolanmayacakları şekilde transaction içinde gönderin ve kimin çalıştığını belirtin: X-Anpheros-Acting-As doktorun rolünü adlandırır. Bu, Provenance'da yazar olur, erişim günlüğüne yazılır ve hastaya isimle gösterilir.
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, Encounter, Observation ve Condition için 201 Created içerir. Observation ve Condition artık gerçek Encounter/0ca25459-…'a işaret eder. Her birinin Provenance'ı doktorun rolünü, kliniği ve kaynak sistemini adlandırır:
"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"}}}]
Teşhis onaylanana kadar provisional'dır. Daha sonra confirmed olarak güncelleyin, böylece geçmiş her ikisini de saklar. Her alanın ne anlama geldiği Tıbbi veri provenance'ı açıklandı bölümünde açıklanmıştır.
Adım 4: Laboratuvar Sonuçları ve Belgeler
Kliniğin kendi laboratuvarından alınan sonuçlar veya hastanın getirdiği raporlar, rapor başına tek bir istekte laboratuvar bağlayıcısından geçer:
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
Mektuplar ve taburcu özetleri belgedir: DocumentReference aracılığıyla /v1/patients/{id}/documents oluşturun ve PDF'yi yükleyin. Orijinal dosya asla değiştirilmez ve ondan çıkarılan değerler ona geri döner. Bir FHIR kaydına laboratuvar sonuçlarının nasıl aktarılacağı ve Tıbbi Veri API'si bölümlerine bakın.
Adım 5: Diğer sağlayıcıların yazdıklarını okuyun ve kendi alanınızda kalın
Hastanın rızasıyla, klinik, diğer kliniklerin, laboratuvarların ve hastanın ekledikleri dahil olmak üzere, kapsamı dahilindeki tüm kaydı okur. Yalnızca kendisinin yazdığı şeyi değiştirebilir. Başka bir kuruluşun kaynağını güncelleme veya silme isteği 403 ile yanıtlanır ve orijinali olduğu gibi kalır. Başka bir sağlayıcının yazdığı bir şeyi düzeltmek için kendi kaynağınızı yazın (örneğin, değerlendirmenizi içeren yeni bir Condition) ve kaydın her biri kendi yazarıyla birlikte her ikisini de göstermesine izin verin.
Bir ziyaret öncesinde, GET $BASE/Patient/$PID/$summary her kaynaktan gelen sorunları, ilaçları, alerjileri ve son yaşamsal belirtileri içeren kaydın Uluslararası Hasta Özetini verir.
Adım 6: Yeni Verilerden Haberdar Olun
Klinik projesi için bir kez webhook kaydedin:
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"]}'
Başka bir proje, kliniğinizin erişebileceği bir kayda yazdığında, olay data.external: true ve kaynak ile bunu belirtir, böylece EMR'niz yoklama yapmadan "başka bir laboratuvardan yeni sonuçlar" gösterebilir. Bir consent.revoked olayı, kişinin kliniğin erişimini geri çektiği anlamına gelir: o kaydın senkronizasyonunu durdurun. İmzalar, yeniden denemeler ve yükler Webhooks bölümünde ele alınmıştır.
Hastanın Gördükleri
Hasta, kaydındaki ziyareti, kalp atış hızını ve geçici tanıyı görür; her biri Dr. Ana Popescu tarafından Clinica Cardio Nord'da eklendiği şeklinde işaretlenir. Bağlantılarında, kliniğin uygulaması, bir uygulayıcı hareket halindeyken adı ile birlikte her erişimi listeler. Bu şeffaflık, hastaların bir sonraki kliniğe erişim izni vermeye istekli olmasını sağlar.
Canlıya Geçiş Kontrol Listesi
- [ ] Organizasyon, Pratisyenler ve Pratisyen Rolleri kaydedildi; ayrılanlar pasif olarak ayarlandı
- [ ] Hastalar kliniğin kimliğiyle eşleştirildi, asla adla değil
- [ ] Mevcut kayıtlar OAuth onayıyla ulaşıldı, kopyalanmadı
- [ ] Klinik personelden gelen her istek
X-Anpheros-Acting-Astaşır - [ ] Ziyaretler işlem olarak yazıldı; doğru doğrulama durumuna sahip teşhisler
- [ ] Her yazma işleminde kaynak sistem ayarlandı; laboratuvar raporları bağlayıcı aracılığıyla
- [ ] İmza doğrulayan webhook uç noktası;
consent.revokedişlendi - [ ] İmzalanmış bir DPA (
sk_live_…anahtarları) ile üretim projesi; Fiyatlandırma bölümüne bakın
Sıkça Sorulan Sorular
Anpheros'un benim EMR'im için hazır bir bağlayıcısı var mı?
Hayır. Belirli EMR'ler veya laboratuvar sistemleri için hazır bağlayıcılar bulunmamaktadır; entegrasyon FHIR R4 ve REST API'lerine karşı oluşturulur, genellikle EMR'nin yanında küçük bir servis olarak. HL7 v2 laboratuvar mesajları olduğu gibi kabul edilir.
Bir doktor iki klinikte çalışabilir mi?
Evet. Bir Practitioner, her kuruluşta bir PractitionerRole'e sahip olabilir. X-Anpheros-Acting-As'te belirtilen rol, her yazımın hangi klinik için kaydedildiğini belirler.
Hasta kliniğin erişimini iptal ettiğinde ne olur?
O kayıt için kliniğin çağrıları 401 ile yanıt verir ve bir consent.revoked webhook'u gönderilir. Kliniğin yazdığı, kökeniyle birlikte hastanın kaydında kalır; klinik artık onu okuyamaz veya değiştiremez.
İlgili Konular
- Sağlık entegrasyonları: tüm entegrasyon desenlerine genel bakış
- Tıbbi veri kökenbilimi (provenance) açıklaması
- SMART on FHIR ile hasta rızası nasıl uygulanır
- Laboratuvar sonuçları bir FHIR kaydına nasıl aktarılır
- Sağlık verisi birlikte çalışabilirliği
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card