이 페이지에서는 Cloud Healthcare API가 FHIR 확장 프로그램을 지원하는 방법을 설명합니다.
개요
FHIR는 리소스 및 데이터 유형에 대한 사용자 정의 확장 프로그램을 허용합니다. Cloud Healthcare API는 이러한 확장 프로그램 저장 및 검색을 지원합니다.
확장 프로그램 값
확장 프로그램 요소는 키-값 쌍입니다. url
필드에 저장된 키는 확장 프로그램의 콘텐츠와 의미를 정의하는 확장 프로그램 정의의 표준 URL을 나타냅니다. value
필드는 다양한 FHIR 데이터 유형을 포함할 수 있는 선택 요소입니다.
이 메커니즘은 이전 버전에는 사용 가능한 데이터 유형이 적다는 점을 제외하면 모든 FHIR 버전에서 동일합니다. 확장 프로그램에 사용 가능한 데이터 유형은 FHIR 표준(DSTU2, STU3, R4)에서 찾을 수 있습니다.
다음 예시에서는 루트 요소에 머리색 및 시민권이라는 두 가지 확장 프로그램이 있는 Patient
리소스를 보여줍니다.
{
"resourceType": "Patient",
"active": true,
"gender": "male",
"extension": [
{
"url": "http://example.com/fhir/StructureDefinition/hair-color",
"valueString": "brown"
},
{
"url": "http://example.com/fhir/StructureDefinition/patient-citizenship",
"valueCodeableConcept": {
"coding" : [{
"system" : "urn:iso:std:iso:3166",
"code" : "US"
}]
}
}
]
}
하위 필드가 있는 복잡한 데이터 유형과 요소도 확장 프로그램을 포함할 수 있습니다. 예를 들어 이 Patient
는 복잡한 데이터 유형인 identifier
필드의 확장 프로그램과 다른 하위 필드가 있는 communication
필드의 확장 프로그램을 포함합니다.
{
"resourceType": "Patient",
"active": true,
"gender": "male",
"identifier": [
"system": "MRN",
"value": "AB1234",
"extension": [
{
"url": "http://example.com/fhir/StructureDefinition/last-verified",
"valueDateTime": "2021-01-01T00:00:00Z"
}
]
],
"communication": [
{
"language": {
"coding": [{
"system": "urn:iso:std:iso:639",
"code": "EN"
}]
},
"extension": [
{
"url": "http://example.com/fhir/StructureDefinition/fluency-level",
"valueInteger": 7
}
]
}
]
}
각 확장 프로그램 요소에는 하나의 값 필드만 있을 수 있습니다. 값 배열이 포함된 확장 프로그램을 정의하려면 url
가 동일한 여러 확장 프로그램 요소를 정의해야 합니다.
다음 리소스 유형의 경우 루트 요소에 확장 프로그램을 정의할 수 없습니다.
Binary
Bundle
Parameters
복잡한 확장 프로그램
확장 프로그램에는 중첩 구조를 정의하는 확장 프로그램이 포함될 수 있습니다. 하위 확장 프로그램의 url
이름은 외부 확장 프로그램을 기준으로 합니다. 각 확장 프로그램 요소에는 값 요소 또는 중첩된 하위 요소 확장 프로그램 중 하나만 있어야 합니다.
다음 예시에서는 하위 확장 프로그램 code
및 period
가 있는 복잡한 patient-citizenship
확장 프로그램을 포함하는 Patient
리소스를 보여줍니다.
{
"resourceType": "Patient",
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-citizenship",
"extension": [
{
"url": "code",
"valueCodeableConcept": {
"coding": [{
"system": "urn:iso:std:iso:3166",
"code": "CA"
}]
}
},
{
"url": "period",
"valuePeriod": {
"start": "2010-01-01"
}
}
]
}
]
}
기본 유형의 확장 프로그램
FHIR의 기본 데이터 유형에는 확장 프로그램도 포함될 수 있습니다. FHIR JSON 표현에 정의된 대로 JSON 형식으로 표현되면 확장 프로그램은 기본 요소의 이름 앞에 _
가 추가된 추가 JSON 속성으로 표현됩니다.
JSON 형식의 다음 예시는 birthDate
필드에 확장 프로그램이 있는 Patient
리소스를 보여줍니다.
{
"resourceType": "Patient",
"active": true,
"gender": "male",
"birthDate": "1970-01-01",
"_birthDate": {
"extension": [
{
"url": "http://example.com/fhir/StructureDefinition/date-type",
"valueString": "A"
}
]
}
}
기본 요소가 반복되는 경우 _
가 포함된 속성도 배열로 처리되며, null 값은 확장 값을 해당 기본 요소와 정렬하는 데 사용됩니다.
다음 예시는 name.given
의 두 번째 값에 확장 프로그램이 있지만 첫 번째 값에는 확장 프로그램이 없는 Patient
리소스를 보여줍니다.
{
"resourceType": "Patient",
"name": {
"given": [
"ABC",
"DEF"
],
"_given": [
null,
{
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/display",
"valueString": "XYZ"
}
]
}
]
}
}
StructureDefinition
으로 확장 프로그램 정의
상호 운용성을 위해 확장 프로그램의 이름과 의미는 데이터의 소비자가 해석할 수 있도록, 게시하거나 배포할 수 있는 StructureDefinition
리소스로 정의될 수 있습니다. 이는 Cloud Healthcare API에서 확장 프로그램을 사용하는 경우 선택사항입니다.
이 정의의 ID는 'url' 필드의 표준 URL로 표시됩니다. 조직 간에 교환되는 데이터의 경우 데이터 소비자가 StructureDefinition
를 얻도록 따를 수 있는 URL을 사용하는 것이 좋습니다. Cloud Healthcare API는 이 URL의 유효성을 검사하거나 확인을 시도하지 않습니다.
StructureDefinition
리소스의 콘텐츠는 복잡할 수 있으며 FHIR 프로필 작성 도구를 사용하여 정의되는 경우가 많습니다.
한정자 확장 프로그램
한정자 확장 프로그램은 확장 프로그램과 비슷하지만 modifierExtension
필드에 저장됩니다. 한정자 확장 프로그램은 이를 포함하는 요소의 해석을 무효화할 수 있으므로 무시할 수 없는 추가 데이터입니다.
예를 들어 한정자 확장 프로그램은 환자가 특정 조건이 없거나 또는 약물이 처방되지 않아야 함을 나타낼 수 있습니다.
Cloud Healthcare API는 한정자 확장 프로그램을 저장하고 검색하지만 그 의미를 해석하려고 시도하지 않습니다. 애플리케이션은 이해할 수 없는 한정자 확장 프로그램을 접할 때 경고를 표시하거나 리소스를 완전히 거부함으로써 적절한 조치를 취하는 것이 좋습니다. 구현자는 가능하면 한정자 확장 프로그램을 사용하지 않아야 합니다.