FHIR 확장 프로그램

이 페이지에서는 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 이름은 외부 확장 프로그램을 기준으로 합니다. 각 확장 프로그램 요소에는 값 요소 또는 중첩된 하위 요소 확장 프로그램 중 하나만 있어야 합니다.

다음 예시에서는 하위 확장 프로그램 codeperiod가 있는 복잡한 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는 한정자 확장 프로그램을 저장하고 검색하지만 그 의미를 해석하려고 시도하지 않습니다. 애플리케이션은 이해할 수 없는 한정자 확장 프로그램을 접할 때 경고를 표시하거나 리소스를 완전히 거부함으로써 적절한 조치를 취하는 것이 좋습니다. 구현자는 가능하면 한정자 확장 프로그램을 사용하지 않아야 합니다.