Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Sağlık Kayıtları FHIR R4 Kullanılarak Nasıl Saklanır
Eğitim: bir Hasta, bir kan basıncı Gözlemi ve bir Durum oluşturma, bir işlem kullanma, arama yapma, geçmişle güncelleme ve veri kökenini okuma — her istek curl ile ve gerçek yanıtı, ücretsiz test ortamında.
Bu eğitim, HL7 FHIR R4 kaynakları olarak küçük bir tıbbi kayıt saklar: bir Patient, bir tansiyon Observation ve bir teşhis olarak bir Condition, ardından bir hasta ve bir ölçüm tek bir işlemde bir araya getirilir. Bunları arar, önceki sürümü kaybetmeden teşhisi günceller ve kimin ne yazdığını okur. Her istek, ücretsiz Anpheros sandbox'ına karşı düz bir curl'dir ve gösterilen her yanıt API'nin döndürdüğü çıktıdır.
FHIR'a yeni başlıyorsanız, öncelikle kavramlar için FHIR platformu sayfasını okuyun. Bu sayfa uygulamalı kısımdır.
Kayıtların Başladığı Üç Kaynak
| Kaynak | Neler İçerir | Hangi Kodlarla Kodlanır |
|---|---|---|
Patient |
Kaydın kiminle ilgili olduğu: ad, doğum tarihi, cinsiyet, diğer sistemlerden gelen tanımlayıcılar | Sizin tanımlayıcı sistemleriniz |
Observation |
Ölçülen veya bildirilen her şey: yaşamsal belirtiler, laboratuvar sonuçları, bir kilo, bir semptom skoru | LOINC, UCUM birimleri |
Condition |
Bir teşhis veya sağlık sorunu, zaman içindeki durumuyla birlikte | ICD-10 (Lisans bayrağının arkasında SNOMED CT) |
İlaçlar (MedicationStatement), alerjiler (AllergyIntolerance), aşılar ve belgeler aynı deseni izler; 26 desteklenen kaynak türü, /fhir/R4/metadata adresindeki yetenek beyanında listelenmiştir.
Başlamadan Önce
platform.anpheros.com/dashboard adresinden Get a sandbox key seçeneği ile bir sandbox anahtarı (sk_test_…) alın. Burada oluşturduğunuz hiçbir şey gerçek hasta verisi değildir ve başka projeler tarafından görülemez.
export BASE=https://platform.anpheros.com/fhir/R4
export KEY=sk_test_…
Adım 1: Bir Hasta oluşturun
curl -X POST "$BASE/Patient" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" -d '{
"resourceType": "Patient",
"identifier": [{"system": "https://clinic.example/mrn", "value": "MRN-10442"}],
"name": [{"family": "Marin", "given": ["Ioana"]}],
"gender": "female",
"birthDate": "1979-04-12"
}'
201 Created, sunucunun atadığı kimlik ve sürüm ile birlikte:
{"resourceType": "Patient",
"identifier": [{"system": "https://clinic.example/mrn", "value": "MRN-10442"}],
"name": [{"family": "Marin", "given": ["Ioana"]}], "gender": "female", "birthDate": "1979-04-12",
"id": "d09e3942-ed86-4458-b099-fa674ab21b84",
"meta": {"versionId": "1", "lastUpdated": "2026-10-12T20:16:51.043Z"}}
Kendi kimliklerinizi identifier içinde, sizin kontrolünüzde olan bir system (burada bir kliniğin kayıt numarası) ile saklayın, böylece hastayı her zaman GET $BASE/Patient?identifier=https://clinic.example/mrn|MRN-10442 ile tekrar bulabilirsiniz. FHIR id platforma aittir ve projenize özeldir: başka bir proje aynı kişiyi farklı bir kimlik altında görür.
export PID=d09e3942-ed86-4458-b099-fa674ab21b84
Adım 2: Bir ölçümü Gözlem (Observation) olarak saklama
Kan basıncı, sistolik ve diyastolik olmak üzere iki bileşeni olan bir gözlemdir ve her birinin kendi LOINC kodu vardır. Kimin ölçtüğünü belirtin: burada evde kullanılan bir cihaz.
curl -X POST "$BASE/Observation" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
-H "X-Anpheros-Author-Type: device" -H "Idempotency-Key: bp-2026-10-10-0830" -d '{
"resourceType": "Observation",
"status": "final",
"category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-signs"}]}],
"code": {"coding": [{"system": "http://loinc.org", "code": "85354-9", "display": "Blood pressure panel"}]},
"subject": {"reference": "Patient/'$PID'"},
"effectiveDateTime": "2026-10-10T08:30:00Z",
"component": [
{"code": {"coding": [{"system": "http://loinc.org", "code": "8480-6"}]},
"valueQuantity": {"value": 138, "unit": "mmHg", "system": "http://unitsofmeasure.org", "code": "mm[Hg]"}},
{"code": {"coding": [{"system": "http://loinc.org", "code": "8462-4"}]},
"valueQuantity": {"value": 88, "unit": "mmHg", "system": "http://unitsofmeasure.org", "code": "mm[Hg]"}}
]
}'
Yanıt, id ve meta.versionId: "1" ile saklanan kaynaktır. Kullanılabilir bir kayıt için üç ayrıntı önemlidir:
- Etiketler değil, Kodlar.
85354-9, her FHIR sisteminde "kan basıncı paneli" anlamına gelir; serbest metin "BP" gelmez. KodlarıGET /v1/terminology/loinc?q=blood pressure(FHIR kod sistemleri) ile arayın. - UCUM birimleri (
mm[Hg],kg,mg/dL)valueQuantity.codeiçinde, böylece değerler karşılaştırılabilir ve dönüştürülebilir. Idempotency-Key. Bir zaman aşımı sonrasında yeniden deneme, okumayı iki kez saklamak yerine ilk yanıtı döndürür.
Laboratuvar sonuçları, category laboratory ve genellikle bir referenceRange ile aynı kaynaktır. Tam laboratuvar raporlarını getirmek için, Bir FHIR kaydına laboratuvar sonuçlarının nasıl aktarılacağı bölümüne bakın.
Adım 3: Bir tanıyı Durum (Condition) olarak kaydetme
curl -X POST "$BASE/Condition" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
-H "X-Anpheros-Author-Type: practitioner" -d '{
"resourceType": "Condition",
"subject": {"reference": "Patient/'$PID'"},
"clinicalStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "active"}]},
"verificationStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "confirmed"}]},
"code": {"coding": [{"system": "http://hl7.org/fhir/sid/icd-10", "code": "I10", "display": "Essential (primary) hypertension"}]},
"onsetDateTime": "2026-03-02"
}'
clinicalStatus (aktif, çözülmüş, remisyonda) ve verificationStatus (onaylanmış, geçici) kasıtlı olarak ayrıdır: şüpheli bir tanı, onaylanmış bir tanı ile aynı değildir ve çözülmüş bir sorun hala geçmişin bir parçasıdır.
Adım 4: Tek bir işlemde ilgili kaynakları oluşturma
Bir hasta ve ilk ölçümü birlikte geldiğinde, örneğin bir klinik sisteminden, bunları bir transaction Bundle olarak gönderin. Her şey depolanır veya hiçbir şey depolanmaz. Yeni kaynaklar arasındaki referanslar, sunucunun değiştirdiği geçici urn:uuid: kimliklerini kullanır:
curl -X POST "$BASE" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" -d '{
"resourceType": "Bundle", "type": "transaction",
"entry": [
{"fullUrl": "urn:uuid:9f1c0d1e-0000-4000-8000-000000000001",
"resource": {"resourceType": "Patient", "name": [{"family": "Stan", "given": ["Mihai"]}], "gender": "male", "birthDate": "1990-02-01"},
"request": {"method": "POST", "url": "Patient"}},
{"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": "29463-7", "display": "Body weight"}]},
"subject": {"reference": "urn:uuid:9f1c0d1e-0000-4000-8000-000000000001"},
"effectiveDateTime": "2026-10-10",
"valueQuantity": {"value": 82.4, "unit": "kg", "system": "http://unitsofmeasure.org", "code": "kg"}},
"request": {"method": "POST", "url": "Observation"}}
]
}'
transaction-response, her kaynak için bir giriş içerir; bu giriş, "status": "201 Created", location ve depolanan kaynağı içerir. Observation'ın subject'u artık gerçek Patient/fad3665a-…'ye işaret eder.
Adım 5: Arama
curl "$BASE/Observation?patient=$PID&code=http://loinc.org|85354-9&date=ge2026-10-01&_sort=-date" \
-H "Authorization: Bearer $KEY"
Eşleşen kaynakları ve total içeren bir searchset Bundle alırsınız, en yeni önce gelecek şekilde sıralanır. Sıkça kullanacağınız diğer aramalar şunlardır: Condition?patient=$PID&clinical-status=active, Observation?patient=$PID&category=laboratory ve tüm kayıt için Patient/$PID/$everything.
Adım 6: Geçmişi Kaybetmeden Güncelleme
Hipertansiyon düzelir. Durumu değiştirin ve bitiş tarihini ekleyin ve başkasının yaptığı değişikliği asla üzerine yazmamak için okuduğunuz sürümü If-Match ile kullanın:
curl -X PUT "$BASE/Condition/$CID" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
-H 'If-Match: W/"1"' -d '{ …the same Condition…, "clinicalStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved"}]}, "abatementDateTime": "2026-10-11" }'
200 OK, ETag: W/"2" ile. Başka bir yazma işlemi önce oraya ulaştıysa, 412 alırsınız ve tekrar okursunuz. Önceki sürüm hala oradadır:
curl "$BASE/Condition/$CID/_history" -H "Authorization: Bearer $KEY"
her iki sürümü de döndürür: versionId 2 (resolved) ve 1 (active). GET $BASE/Condition/$CID/_history/1 eskini okur. Bir kayıttaki hiçbir şey sessizce üzerine yazılmaz.
Adım 7: Kimin ne yazdığını görün
Her yazma işlemi bir Provenance kaynak oluşturur. Tansiyon ölçümü için:
curl "$BASE/Provenance?target=Observation/$OBS" -H "Authorization: Bearer $KEY"
{"resourceType": "Provenance",
"target": [{"reference": "Observation/d83d9075-…/_history/1"}],
"recorded": "2026-10-12T20:16:51.056000Z",
"activity": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/v3-DataOperation", "code": "CREATE"}]},
"agent": [{"type": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type", "code": "author"}]},
"who": {"identifier": {"system": "https://anpheros.com/fhir/CodeSystem/author-type", "value": "device"}, "display": "proj_…"},
"onBehalfOf": {"identifier": {"system": "https://anpheros.com/fhir/sid/organization", "value": "org_…"}, "display": "…"}}]}
Gönderdiğiniz yazar türü (device), proje ve kuruluş ile birlikte kaydedilir. Bir yazının arkasındaki klinisyeni adlandırmak için X-Anpheros-Author-Ref: Practitioner/<id> gönderin.
Adım 8: Kayıt bir özet olarak
curl "$BASE/Patient/$PID/\$summary" -H "Authorization: Bearer $KEY"
Uluslararası Bir Hasta Özeti döndürür: bu, document Bundle ile başlar ve Problemler, İlaçlar, Alerjiler ve Yaşamsal Bulgular gibi bölümlere sahip, yukarıdaki kaynaklardan oluşturulmuş bir Composition'dir. Bu, başka bir sisteme vermek veya bir doktor için yazdırmak üzere olan formattır (FHIR platformu).
FHIR Olmadan JSON Tercih Edilir mi?
Aynı verilere, /v1 adresindeki daha basit bir REST görünümü aracılığıyla ve aynı kimliklerle erişilebilir: POST /v1/patients/{id}/observations, {"code": "85354-9", "category": "vital-signs", "effective_at": "…", "components": […]}'i alır ve aynı FHIR Observation'ı depolar. Kodunuza hangisi uyarsa onu kullanın. Tıbbi Veri API'sine ve SDK'lara bakın.
Sıkça Sorulan Sorular
Tıbbi kayıtları saklamanın en iyi yolu nedir?
Kodlanmış, sürümlenmiş ve kimin yazdığına dair kaydı tutulan kaynaklar olarak. HL7 FHIR R4 size yapıyı (Patient, Observation, Condition ve diğerleri), LOINC ve ICD-10 gibi standart kod sistemlerini ve geçmişi sunar; bir FHIR arka ucu ise arama, izin ve köken bilgilerini ekler.
FHIR kullanmak için bir FHIR sunucusuna ihtiyacım var mı?
FHIR kaynaklarını saklayan, arayan ve kimlerin okuyabileceğini zorunlu kılan bir yere ihtiyacınız var. Kendi açık kaynaklı FHIR sunucunuzu çalıştırabilir veya Anpheros gibi yönetilen birini kullanabilirsiniz; Anpheros'un diğer FHIR sunucularıyla karşılaştırması seçenekleri değerlendirir ve FHIR'a karşı özel bir tıbbi veritabanı kendi şemanızı oluşturmayı ele alır.
Kan basıncını FHIR'da nasıl saklarım?
Bir Observation olarak, LOINC 85354-9 koduyla ve iki component girdisiyle: sistolik 8480-6 ve diyastolik 8462-4, her biri mm[Hg] cinsinden bir valueQuantity ile.
Saklanan bir kaynağı değiştirebilir miyim?
Evet, PUT ve If-Match ile. Her değişiklik yeni bir sürüm oluşturur; önceki sürümler _history aracılığıyla okunabilir kalır ve Provenance her değişikliği kimin yaptığını kaydeder. Silmeler yumuşaktır ve geçmişi korur.
İlgili Konular
- FHIR platformu: kavramlar, kaynak türleri ve işlemler
- FHIR kod sistemleri: LOINC, ICD-10, ATC, UCUM
- Laboratuvar sonuçlarını bir FHIR kaydına nasıl aktarılır
- Tıbbi veri API'si: aynı verinin daha basit REST görünümü
- Ücretsiz FHIR veritabanı ve sandbox
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card