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
- FHIR uygulama kılavuzları açıklandı
- FHIR'da CodeableConcept ve Kodlama
- FHIR Gözlemi açıklandı
- FHIR Patient kaynağı açıklandı
- Terminoloji sunucuları açıklandı
- FHIR doğrulayıcısı (geliştirici sitesi)
Kaynaklar
- HL7 FHIR R4: FHIR'ı Profillendirme
- HL7 FHIR R4: Genişletilebilirlik
- HL7 FHIR R4: StructureDefinition
- HL7 FHIR R4: Terminoloji bağlamaları
- HL7 FHIR Shorthand
- HL7 FHIR doğrulayıcısı
- HL7 FHIR R4: patient-birthPlace uzantısı
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.
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

