FHIR

FHIR profilleri ve uzantıları: bir uygulama kılavuzu bir kaynağı nasıl kısıtlar ve buna karşı nasıl doğrulama yapılır

FHIR profili: Temel kaynağı daraltan StructureDefinition (gerekli öğeler, sabit kodlar, dilimleme, bağlamalar, değişmezler). Uzantı: Temel kaynağa eklemeler. Profillerin yayınlanması, meta.profile anlamı, doğrulayıcı kontrolü ve örnekler.

yazan Yayınlandı 5 dk okuma

Kısa cevap: Temel FHIR kaynakları kasıtlı olarak esnektir: neredeyse her şey isteğe bağlıdır ve çoğu kod yalnızca örnektir, böylece tek bir standart her ülkeye uyar. Bir profil, bir kaynağı tek bir kullanım için sıkılaştıran bir StructureDefinition'dır: bu bağlamda, Patient'ın bu türde bir tanımlayıcısı olmalı, Observation.code bu listeden bir LOINC kodu olmalı, bu öğe desteklenmeli, diğeri görünmemelidir. Bir uzantı, temel kaynakta bulunmayan, bir URL ile tanımlanan ve kendi StructureDefinition'ı ile tanımlanan bir öğe ekler. Uygulama kılavuzları (US Core, IPS, ulusal kılavuzlar), profiller, uzantılar, değer kümeleri ve örneklerin koleksiyonlarıdır. Bir kaynak, meta.profile içinde hangi profillere uyduğunu belirtir ve bir doğrulayıcı onu kontrol eder.

Bir profil neyi değiştirebilir?

Bir FHIR profili, bir kaynağı yalnızca daraltarak değiştirebilir: kardinaliteyi sıkılaştırabilir, öğeleri 'mutlaka desteklenmeli' olarak işaretleyebilir, değerleri veya kalıpları düzeltebilir, öğeleri bir güçle değer kümelerine bağlayabilir, listeleri adlandırılmış parçalara ayırabilir, seçim türlerini kısıtlayabilir, FHIRPath değişmezleri ekleyebilir ve referans hedeflerini sınırlayabilir. Bir profil öğe ekleyemez, hiçbir şeyi yeniden adlandıramaz veya temel belirtimi gevşetemez.

Kısıtlama Ne yapar Örnek
Kardinalite İsteğe bağlı öğeleri gerekli hale getirir veya yasaklar Patient.identifier 1..*; Patient.photo 0..0
Desteklenmeli Alıcılar, öğe gönderildiğinde onu depolayabilmeli ve görüntüleyebilmelidir US Core, doğum tarihini desteklenmeli olarak işaretler
Sabit değer veya desen Bir öğeyi tek bir değere kilitler Observation.category vital-signs olarak sabitlenmiş
Bağlama Bir öğeyi bir güçle bir değer kümesine yönlendirir Observation.code, yaşamsal belirtiler listesine bağlı, zorunlu
Dilimleme Bir listeyi kendi kurallarıyla adlandırılmış parçalara ayırır Kan basıncı: bileşen sistolik ve diyastolik olarak dilimlenmiş
Tür kısıtlaması Bir seçeneği sınırlar value[x] valueQuantity ile sınırlandırılmış
Değişmez Tutulması gereken bir FHIRPath kuralı "effective[x] mevcut olmalı" veya "value veya dataAbsentReason"
Referans hedefi Bir referansın neye işaret edebileceğini sınırlar konu yalnızca Patient ve yalnızca bu profile uyan hastalar

Bir profil yalnızca daraltabilir. Öğeler ekleyemez (bunun için uzantılar vardır), hiçbir şeyi yeniden adlandıramaz veya temeli gevşetemez.

Bağlama gücü

FHIR dört bağlama gücü tanımlar. required (gerekli): kod değer kümesinden gelmelidir. extensible (genişletilebilir): bir kavram uyuyorsa değer kümesini kullanın; aksi takdirde başka bir kod da izin verilir. preferred (tercih edilen): önerilir, zorunlu değil. example (örnek): yalnızca açıklayıcıdır, çoğu temel kaynağın sahip olduğu budur. extensible'ı required olarak yanlış okumak, yanlış doğrulama hatalarının yaygın bir nedenidir.

Okunabilir bir profil alıntısı

Bir FHIR profili, yalnızca temel kaynaktan farklı olan kısıtlamaları listeleyen bir differential'a sahip bir StructureDefinition'dır, oysa snapshot'ı her öğeyi listeler. Aşağıdaki okunabilir alıntı, Gözlemi (Observation) ev kan basıncına göre kısıtlar: kod LOINC 85354-9'a sabitlenmiştir ve bileşen tam olarak bir sistolik ve bir diyastolik parçaya ayrılmıştır.

Bir profilin farkı, temelden yalnızca neyin değiştiğini listeler; anlık görüntüsü her şeyi listeler. Bu fark, bir kan basıncı Gözleminin LOINC 85354-9 ve tam olarak iki bileşen taşıması gerektiğini belirtir:

{
  "resourceType": "StructureDefinition",
  "url": "https://example.org/fhir/StructureDefinition/bp-home",
  "name": "HomeBloodPressure",
  "status": "active",
  "kind": "resource",
  "abstract": false,
  "type": "Observation",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Observation",
  "derivation": "constraint",
  "differential": {"element": [
    {"id": "Observation.code", "path": "Observation.code",
     "patternCodeableConcept": {"coding": [{"system": "http://loinc.org", "code": "85354-9"}]}},
    {"id": "Observation.component", "path": "Observation.component", "min": 2, "max": "2",
     "slicing": {"discriminator": [{"type": "pattern", "path": "code"}], "rules": "closed"}},
    {"id": "Observation.component:systolic", "path": "Observation.component", "sliceName": "systolic", "min": 1, "max": "1"},
    {"id": "Observation.component:systolic.code", "path": "Observation.component.code",
     "patternCodeableConcept": {"coding": [{"system": "http://loinc.org", "code": "8480-6"}]}},
    {"id": "Observation.component:diastolic", "path": "Observation.component", "sliceName": "diastolic", "min": 1, "max": "1"},
    {"id": "Observation.component:diastolic.code", "path": "Observation.component.code",
     "patternCodeableConcept": {"coding": [{"system": "http://loinc.org", "code": "8462-4"}]}}
  ]}
}

Profiller nadiren elle yazılır; yazarlar SUSHI ile FHIR Shorthand (FSH) veya Forge ve Simplifier gibi araçlar kullanır ve HL7 IG Publisher ile yayınlar. Kılavuzlar, doğrulayıcılar ve sunucuların yüklediği paketler (hl7.fhir.us.core#6.1.0, hl7.fhir.uv.ips#1.1.0) olarak dağıtılır.

Uzantılar

Bir uzantı, extension (veya kaynağın anlamını değiştiren ve göz ardı edilmemesi gereken durumlarda modifierExtension) içine yerleştirilmiş bir anahtar-değer öğesidir. url'si, kendi StructureDefinition'ının kanonik URL'sidir; değeri, türü belirtilmiş bir value[x] veya iç içe uzantılardır. Doğum yeri, Patient üzerindeki bir HL7 tanımlı uzantıdır:

{
  "resourceType": "Patient",
  "id": "example",
  "extension": [{
    "url": "http://hl7.org/fhir/StructureDefinition/patient-birthPlace",
    "valueAddress": {"city": "Lyon", "country": "FR"}
  }],
  "name": [{"family": "Doe", "given": ["Jane"]}]
}

İyi uygulama kuralları: Bir uzantı tanımlamadan önce mevcut bir uzantıyı (HL7'nin kayıt defteri ve ulusal kılavuzlar) arayın; kontrol ettiğiniz bir alan adı altında bir URL verin; başkalarının doğrulayabilmesi için bir StructureDefinition'da tanımlayın; bir uzantıyı, temel bir öğenin zaten kapsadığı bir şey için asla kullanmayın.

meta.profile ve doğrulama

meta.profile, bir FHIR kaynağının uyduğunu iddia ettiği kanonik URL'lerin listesidir ve iddia etmek kanıtlamak değildir. Bir doğrulayıcı, kaynağı temel belirtilime ve iddia edilen her profile karşı veya adlandırdığınız bir profile karşı kontrol eder. HL7 referans doğrulayıcısı paketlerle yerel olarak çalışır ve FHIR sunucuları bir profil parametresi kabul eden bir $validate işlemi sunar.

meta.profile, bir kaynağın uyduğunu iddia ettiği kanonik URL'leri listeler. İddia etmek kanıtlamak değildir: bir doğrulayıcı, kaynağı temel belirtimlere ve iddia edilen her profile (veya kullanmasını istediğiniz bir profile) karşı kontrol eder. HL7 referans doğrulayıcısı (validator_cli.jar) yerel olarak çalışır ve paketleri yükler; sunucular POST /Observation/$validate?profile=… sunar; IG Publisher, bir kılavuzdaki tüm örnekleri doğrular. Bir kaynak, çelişmedikleri sürece aynı anda birden fazla profile (ulusal bir Patient profili ve IPS Patient) uyabilir.

İki pratik kural: CapabilityStatement'ında bir profil bildiren bir sunucu, onu geçemeyen kaynakları reddetmelidir; kaynakları alan bir istemci, bilinmeyen uzantıları veya bir profilin yasaklamadığı ek öğeleri reddetmemelidir, çünkü temel belirtim bunları izin verir.

Anpheros'ta

Anpheros Platform, gözlemler için LOINC, ilaçlar için ATC ve uygun olduğunda SNOMED CT kullanan bir FHIR R4 sunucusudur ve bir kaynağın yapısını FHIR R4'e karşı kontrol eden ücretsiz bir doğrulayıcı sunar. Bir klinik, meta.profile'ı ulusal veya IPS profiline ayarlanmış kaynaklar gönderdiğinde, iddia korunur, böylece aşağı akış sistemi buna karşı doğrulama yapabilir.

Ücretsiz doğrulayıcı geliştirici sitesindedir. Kılavuzların kendisi için FHIR uygulama kılavuzları açıklandı bölümüne bakın.

İlgili sayfalar

Kaynaklar

Sık sorulan sorular

Bir profil bir kaynağa yeni bir öğe ekleyebilir mi?

Hayır. Profiller yalnızca kısıtlar. Yeni veriler, profilin daha sonra herhangi bir öğe gibi gerektirebileceği veya yasaklayabileceği bir uzantıya gider.

Desteklenmeli neyi gerektirir?

Uygulama kılavuzu bunu tanımlar; tipik olarak bir göndericinin veriye sahip olduğunda öğeyi doldurması ve bir alıcının onu depolayabilmesi ve görüntüleyebilmesidir. Öğeyi zorunlu kılmaz.

Bir kaynağın meta.profile'ı yoksa, geçersiz midir?

Hayır. meta.profile bir iddiadır, gereklilik değildir. Bir sunucu veya kılavuz bunu gerektirebilir; temel belirtim gerektirmez. Doğrulayıcılardan, kaynağın beyan etmediği bir profile karşı kontrol etmeleri istenebilir.

Ülkemde hangi profili kullanacağımı nasıl bilirim?

Her ulusal FHIR topluluğu bir çekirdek kılavuz yayınlar (US Core, UK Core, nl-core, Alman Basisprofile vb.); uygulama kılavuzları sayfası bunları nasıl bulacağınızı açıklar. Sınır ötesi özetler IPS'yi kullanır.

Anpheros Platform

Sandbox'ta ücretsiz deneyin

İlk FHIR çağrınız 5 dakikada. Hasta izniyle yerleşik HL7 FHIR R4 API: sandbox'ta deneyin, ardından kendi uygulamanızı veya klinik sisteminizi bağlayın.

Ücretsiz · 30 sentetik hasta · kart gerekmez

Bu rehber bilgilendirme amaçlıdır ve tıbbi muayenenin yerini tutmaz. Sağlığınızla ilgili kararlar için doktorunuzla konuşun. Acil bir durumda yerel acil numarasını arayın (Avrupa’da 112).
Yazan
Anpheros Ekibi

Anpheros, hasta kontrolünde olan ve herhangi bir klinik ile paylaşılabilecek, AB merkezli bir HL7 FHIR R4 platformu üzerinde tıbbi kayıtlar oluşturur. Bu rehberler, sağlığınızı anlamanıza ve düzenlemenize yardımcı olur; doktorunuzun yerini tutmaz.

Anpheros Hakkında →