AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Laboratuvar Sonuçları FHIR Kaydına Nasıl Aktarılır

Eğitim: bir laboratuvar raporunu CSV ve HL7 v2 ORU^R01 olarak FHIR R4 Gözlemlerine LOINC kodları ve referans aralıklarıyla aktarma, eşlenmemiş işaretçileri ve yeniden gönderilen raporları işleme ve her sonucu laboratuvarına izleme.

Bu eğitim, bir laboratuvar raporunu CSV dosyası ve HL7 v2 ORU^R01 mesajı olarak alır, her biri için tek bir istekte hastanın HL7 FHIR R4 kaydına içe aktarır ve geri dönenleri gösterir: LOINC kodları, referans aralıkları ve köken bilgileri içeren laboratuvar Observation kaynakları. Ayrıca, her laboratuvar entegrasyonunun karşılaştığı iki sorunu da kapsar: otomatik olarak eşlenemeyen işaretçiler ve iki kez gönderilen raporlar. Her şey, sentetik bir hasta ile ücretsiz sandbox üzerinde çalışır.

Laboratuvar Sonuçlarının Saklanmasının Zorlukları

Bir laboratuvar raporu basit görünür: bir işaretleyici, bir değer, bir birim, bir referans aralığı, bir tarih. Pratikte her laboratuvar işaretleyicileri kendi yöntemleriyle adlandırır ("Hemoglobina glicozilata", "HbA1c", "Glycated haemoglobin"), ondalık sayılar için virgül veya nokta kullanır, aralıkları 4,0-5,6, <5 veya >3.5 şeklinde yazar ve bir şeyler başarısız olduğunda aynı raporu yeniden gönderir. Serbest metin olarak saklanan bu sonuçlar zaman içinde karşılaştırılamaz, grafiklenemez, başka bir uygulamayla paylaşılamaz veya bir yapay zeka modeline güvenle verilemez.

Bir FHIR kaydı, her sonucu bir Observation olarak LOINC kodu, bir UCUM birimi, bir değer, bir referans aralığı ve bir tarih ile saklar ve kimin gönderdiğini bir Provenance kaynağında tutar. Laboratuvar bağlayıcısı bu dönüşümü sizin için yapar.

 lab report (CSV, HL7 v2, JSON)
        │  POST /v1/patients/{id}/labs/import
        ▼
 ┌──────────────────────────────────────────────┐
 │ parse rows → map marker to LOINC → parse     │
 │ value, unit, range → stable id per row       │
 └──────────────────────────────────────────────┘
        │
        ▼
 Observation (category laboratory) + Provenance (author_type import, source system, report id)
        │
        ├─► the patient's app and every app they consented to
        └─► webhooks: resource.created per Observation

Başlamadan Önce

platform.anpheros.com/dashboard adresinden bir sandbox anahtarına (sk_test_…) ihtiyacınız olacak (Bir sandbox anahtarı alın). Örnekler curl'ü kullanır; SDK'lar aynı çağrıları kullanır (labs.importCsv, labs.importHl7, labs.importItems).

export BASE=https://platform.anpheros.com
export KEY=sk_test_…
# Elena Ionescu, a synthetic patient with type 2 diabetes
export PID=$(curl -s "$BASE/fhir/R4/Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|p02" \
  -H "Authorization: Bearer $KEY" | jq -r '.entry[0].resource.id')

Adım 1: Bir CSV raporu içe aktarın

Bir Romen laboratuvarının raporu şu şekilde dışa aktarabileceği durum: noktalı virgüller, ondalık virgüller, Romen sütun adları ve tarihler DD.MM.YYYY olarak. Bağlayıcı, Romen ve İngilizce sütun adlarını tanır.

cat > report.csv <<'EOF'
Analiza;Rezultat;UM;Interval de referinta;Data
Hemoglobina glicozilata (HbA1c);6,9;%;4,0-5,6;01.10.2026
Glicemie;131;mg/dL;70-100;01.10.2026
TSH;2,1;mUI/L;0,4-4,0;01.10.2026
Marker foarte rar;12;U/L;0-20;01.10.2026
EOF

curl -X POST "$BASE/v1/patients/$PID/labs/import" -H "Authorization: Bearer $KEY" \
     -H "Content-Type: text/csv" -H "X-Anpheros-Source-System: labx" \
     -H "Idempotency-Key: report-2026-10-01-elena" --data-binary @report.csv

Yanıt (201):

{"created": 4, "skipped": 0, "unmapped": ["Marker foarte rar"], "warnings": [],
 "observations": [
  {"id": "ff0bbb44-…", "marker": "Hemoglobina glicozilata (HbA1c)", "code": "4548-4", "system": "http://loinc.org", "value": 6.9, "unit": "%", "date": "2026-10-01"},
  {"id": "ebe5522f-…", "marker": "Glicemie", "code": "2345-7", "system": "http://loinc.org", "value": 131.0, "unit": "mg/dL", "date": "2026-10-01"},
  {"id": "bace44a8-…", "marker": "TSH", "code": "3016-3", "system": "http://loinc.org", "value": 2.1, "unit": "mUI/L", "date": "2026-10-01"},
  {"id": "26fd2270-…", "marker": "Marker foarte rar", "code": "marker_foarte_rar", "system": "urn:anpheros:lab-code", "value": 12.0, "unit": "U/L", "date": "2026-10-01"}]}

HbA1c, glukoz ve TSH, adlarından LOINC'e eşleştirildi. Ondalık virgüller sayılara dönüştü ve aralıklar referenceRange oldu. unmapped içinde bir satır geri geldi. Laboratuvarın kendi kodu (urn:anpheros:lab-code) altında, rapordaki tam metinle birlikte hala saklanmaktadır, bu nedenle hiçbir şey kaybolmaz.

Adım 2: Eşlenmemiş işaretçileri işleme

Bazı isimler bir karar gerektirir. "Glicemie" (kan şekeri) iyi bir örnektir: LOINC'in serum veya plazmadaki glikoz için bir kodu (2345-7, laboratuvarda alınan venöz bir örnek) ve tam kanda glikoz için başka bir kodu (2339-0, örneğin parmaktan alınan bir örnek) vardır. Bir laboratuvar raporunda, sadece "Glicemie" serum veya plazmaya eşlenir. "Capilar", "capillary" veya "sânge integral" diyen bir isim tam kana eşlenir:

{"created": 1, "skipped": 0, "unmapped": [], "warnings": [],
 "observations": [{"id": "00480a6d-…", "marker": "Glicemie capilara", "code": "2339-0", "system": "http://loinc.org", "value": 140.0, "unit": "mg/dL", "date": "2026-10-02"}]}

Bağlayıcının tanımadığı işaretçiler için kodu arayın:

curl "$BASE/v1/terminology/loinc?q=glucose" -H "Authorization: Bearer $KEY"
{"data": [
  {"system": "http://loinc.org", "code": "2339-0", "display": "Glucose [Mass/volume] in Blood", "display_ro": "Glicemie (sânge)", "category": "laboratory", "unit": "mg/dL"},
  {"system": "http://loinc.org", "code": "2345-7", "display": "Glucose [Mass/volume] in Serum or Plasma", "display_ro": "Glicemie (ser)", "category": "laboratory", "unit": "mg/dL"}],
 "total": 2}

Ardından kodu LOINC sütununa gönderin. Rapordaki bir kod her zaman isme üstün gelir. Bu eşlemeyi laboratuvar başına kendi tarafınızda saklayın ve her rapordan buna bir sütun ekleyin:

Analiza;Rezultat;UM;Interval de referinta;Data;LOINC
Glicemie;99;mg/dL;70-100;04.10.2026;2339-0

LOINC'in hiç kapsamadığı, uydurma "Marker foarte rar" gibi işaretçiler laboratuvarın kodu altında kalabilir. Hastaya gösterilir ve kayda dahil edilir. Diğer laboratuvarların sonuçlarıyla karşılaştırılamazlar.

Adım 3: Raporu İki Kez Gönderme

Laboratuvarlar raporları yeniden gönderir. Her satır, rapor kimliği, kod, tarih ve değerden oluşan kararlı bir tanımlayıcı alır, bu nedenle aynı raporun ikinci bir içe aktarılması hiçbir şey oluşturmaz:

{"created": 0, "skipped": 4, "unmapped": ["Marker foarte rar"], "warnings": [], "observations": []}

Değişen satırlar, örneğin düzeltilmiş bir değer, yeni sonuçlar olarak içe aktarılır. Idempotency-Key üstbilgisi ikinci bir güvence ekler: aynı anahtarla bir ağ yeniden denemesi ilk yanıtı değişmeden döndürür.

Adım 4: Bir HL7 v2 ORU^R01 mesajı içe aktarın

Laboratuvar bilgi sistemlerinin çoğu HL7 v2 kullanır. Mesajı olduğu gibi (ER7 metni, segmentler CR veya LF ile ayrılmış) gönderin:

MSH|^~\&|LABX|LAB1|ANPHEROS|EHR|202610010930||ORU^R01|MSG00077|P|2.5.1
PID|1||12345||Ionescu^Elena||19850903|F
OBR|1||R-77|24331-1^Lipid panel^LN|||202610010800
OBX|1|NM|2093-3^Cholesterol [Mass/volume] in Serum or Plasma^LN||212|mg/dL|<200|H|||F|||202610010800
OBX|2|NM|2085-9^HDL Cholesterol^LN||52|mg/dL|>40|N|||F|||202610010800
curl -X POST "$BASE/v1/patients/$PID/labs/import" -H "Authorization: Bearer $KEY" \
     -H "Content-Type: x-application/hl7-v2+er7" --data-binary @oru.hl7
{"created": 2, "skipped": 0, "unmapped": [], "warnings": [],
 "observations": [
  {"id": "b562045b-…", "marker": "Cholesterol [Mass/volume] in Serum or Plasma", "code": "2093-3", "system": "http://loinc.org", "value": 212.0, "unit": "mg/dL", "date": "2026-10-01T08:00:00Z"},
  {"id": "9b3274e4-…", "marker": "HDL Cholesterol", "code": "2085-9", "system": "http://loinc.org", "value": 52.0, "unit": "mg/dL", "date": "2026-10-01T08:00:00Z"}]}

OBX-3, LN kodlama sistemi ile doğrudan LOINC olarak kullanılır. OBX-7 referans aralığı olur ve OBX-8 (H, N) yorum olur. OBR-3 (R-77) provenance'da rapor kimliği olarak saklanır. Hasta URL'deki hastadır: PID segmenti hasta bulmak için kullanılmaz, bu nedenle yanlış bir PID başkasının sonuçlarını ekleyemez.

Zaten ayrıştırılmış sonuçlarınız mı var? JSON gönderin: {"date": "2026-10-01", "origin": "report-77", "items": [{"marker": "Ferritin", "value": 38, "unit": "ng/mL", "ref_low": 15, "ref_high": 150}]}. Ferritin, LOINC 2276-4'e eşlenir.

Adım 5: Sonuçları FHIR olarak okuma

curl "$BASE/fhir/R4/Observation?patient=$PID&code=http://loinc.org|4548-4&_sort=-date&_count=1" \
     -H "Authorization: Bearer $KEY"

İçe aktarılan HbA1c, şu şekilde saklanır:

{
  "resourceType": "Observation",
  "id": "62b1b0c0-…",
  "meta": {"versionId": "1", "lastUpdated": "2026-10-12T20:05:57.011Z"},
  "identifier": [{"system": "urn:anpheros:lab-import", "value": "c52d3cd6449291d34f6bef1516d0ac05"}],
  "status": "final",
  "category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "laboratory"}]}],
  "code": {"coding": [{"system": "http://loinc.org", "code": "4548-4", "display": "Hemoglobin A1c/Hemoglobin.total in Blood"}],
           "text": "Hemoglobina glicozilata (HbA1c)"},
  "subject": {"reference": "Patient/…"},
  "effectiveDateTime": "2026-10-01",
  "valueQuantity": {"value": 6.9, "unit": "%"},
  "referenceRange": [{"low": {"value": 4.0, "unit": "%"}, "high": {"value": 5.6, "unit": "%"}}]
}

LOINC gösterimi standart İngilizce isimdir. code.text laboratuvarın kendi ifadesini korur, böylece hasta kağıt raporda gördüğünü görmeye devam eder. Kaynaklar ve arama hakkında daha fazla bilgi için FHIR platformu kılavuzuna ve FHIR kod sistemlerine bakın.

Adım 6: Göndereni Kontrol Etme

curl "$BASE/v1/patients/$PID/provenance/Observation/62b1b0c0-…" -H "Authorization: Bearer $KEY"
{"data": [{"version": 1, "activity": "CREATE", "recorded": "2026-10-12T20:05:57.011000Z",
           "author_type": "import", "author": "proj_…", "source_system": "labx", "origin_id": null,
           "fhir": "Provenance/f15c4fee-…"}], "total": 1}

author_type: import ve source_system: labx değerle birlikte kalır. Bir yapay zeka uygulaması bu sonucu daha sonra bağlam API'si aracılığıyla okuduğunda, bu [import/labx] olarak etiketlenir, böylece model bir laboratuvar sonucunu hastanın girdiği bir değerden ayırt edebilir.

Sonraki Adımlar

Sıkça Sorulan Sorular

FHIR'a hangi laboratuvar raporu formatları aktarılabilir?

Başlık satırı olan CSV (virgül, noktalı virgül veya sekme, ondalık virgül kabul edilir), HL7 v2 ORU^R01 mesajları ve JSON. PDF raporları belge olarak saklanabilir; bunlardan çıkarılan değerler belgeye geri işaret eder.

LOINC kodu olmayan işaretleyicilere ne olur?

Laboratuvarın kendi kodu altında, rapordaki tam metinle birlikte saklanır ve unmapped'te listelenir. O laboratuvar için bir LOINC sütunu eklenirse eşleştirilir. Rapordaki bir kod her zaman adın önüne geçer.

Bir raporu yeniden göndermek güvenli midir?

Evet. Her satır, rapor, kod, tarih ve değerden oluşan kararlı bir tanımlayıcıya sahiptir, bu nedenle zaten aktarılmış satırlar atlanır; değiştirilen satırlar yeni sonuçlar olarak aktarılır.

Bir laboratuvar herhangi bir hasta için sonuçları aktarabilir mi?

Hayır. Bir laboratuvar, projesinin oluşturduğu veya kişinin OAuth aracılığıyla paylaştığı kayıtların bulunduğu hastalara aktarım yapar. Diğer hastalar onun için mevcut değildir (404).

İlgili Konular

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy