FHIR 서비스에서 Patient-everything 사용

Patient-everything 작업은 환자와 관련된 모든 리소스에 대한 보기를 제공하는 데 사용됩니다. 이 작업은 환자에게 전체 레코드에 대한 액세스 권한을 부여하거나 공급자 또는 다른 사용자가 환자와 관련된 대량 데이터 다운로드를 수행하는 데 유용할 수 있습니다. FHIR®(Fast Healthcare Interoperability Resources) 사양에 따르면 Patient-everything은 이 작업이 호출되는 리소스 또는 컨텍스트에 설명된 한 명 이상의 환자와 관련된 모든 정보를 반환합니다. Azure Health Data Services의 FHIR 서비스(이하 FHIR 서비스)에서는 Patient-everything을 사용하여 특정 환자와 관련된 데이터를 끌어올 수 있습니다.

Patient-everything 사용

Patient-everything을 호출하려면 다음 명령을 사용합니다.

GET {FHIRURL}/Patient/{ID}/$everything

참고 항목

특정 환자의 ID를 지정해야 합니다. 모든 환자에 대한 모든 데이터가 필요한 경우 $export를 참조하세요.

FHIR 서비스는 제공된 환자 ID와 일치하는 환자를 찾을 수 있는지 유효성을 검사합니다. 결과가 발견되면 응답은 다음 정보가 포함된 searchset 형식의 번들입니다.

  • 환자 리소스.
  • 환자 리소스에서 직접 참조되는 리소스, 단, see also에 속하지 않거나 seealso 링크가 RelatedPerson을 참조하는 링크 참조는 제외됩니다.
  • 다른 환자에 대한 seealso 링크 참조가 있는 경우 결과에는 나열된 seealso 환자에 대한 Patient-everything 작업이 포함됩니다.
  • 환자 구획의 리소스
  • 환자 리소스를 참조하는 디바이스 리소스

참고 항목

환자에게 100개 이상의 디바이스가 연결되어 있는 경우 100개만 반환됩니다.

Patient-everything 매개 변수

FHIR 서비스는 다음 쿼리 매개 변수를 지원합니다. 이러한 매개 변수는 모두 선택 사항입니다.

쿼리 매개 변수 설명
_type 응답에 포함할 리소스 유형을 지정할 수 있습니다. 예를 들어 _type=Encounter는 환자와 연결된 Encounter 리소스만 반환합니다.
_since 제공된 시간 이후 수정된 리소스만 반환합니다.
start 시작 날짜를 지정하면 임상 날짜가 지정된 시작 날짜 이후인 리소스를 끌어옵니다. 시작 날짜가 제공되지 않으면 종료 날짜 이전의 모든 레코드가 범위에 포함됩니다.
end 종료 날짜를 지정하면 임상 날짜가 지정된 종료 날짜 이전인 리소스를 끌어옵니다. 종료 날짜가 제공되지 않으면 시작 날짜 이후의 모든 레코드가 범위에 포함됩니다.

참고 항목

이 Patient-everything 구현은 _count 매개 변수를 지원하지 않습니다.

환자 리소스에는 환자를 다른 환자 또는 관련인과 연결하는 링크라는 요소가 있습니다. 이렇게 연결된 환자는 원래 환자에 대한 전체적인 시각을 제공하는 데 도움이 됩니다. 링크 참조는 환자가 다른 환자를 교체하는 경우 또는 두 환자 리소스에 보완적인 정보가 있는 경우 사용할 수 있습니다. 링크의 한 가지 사용 사례는 ADT 38 또는 39 HL7v2 메시지가 오는 경우입니다. 이것은 환자에 대한 업데이트를 설명합니다. 이 업데이트는 링크 요소에 있는 두 환자 간의 참조로 저장될 수 있습니다.

FHIR 사양에는 다양한 유형의 환자 링크에 대한 자세한 개요가 있지만 대략적인 요약도 포함되어 있습니다.

  • replaces - 환자 리소스가 다른 환자를 대체합니다.
  • refer - 환자가 유효하지만 정보의 주요 소스로 간주되지 않습니다. 추가 정보를 검색하려면 다른 환자를 가리킵니다.
  • see also - 환자에는 동등하게 유효한 다른 환자에 대한 링크가 포함되어 있습니다.
  • replaced-by - 환자 리소스가 다른 환자를 대체합니다.

FHIR 서비스의 Patient-everything 작업은 환자에 대한 가장 전체적인 시각을 제공하기 위해 다양한 방식으로 환자 링크를 처리합니다.

참고 항목

링크는 RelatedPerson을 참조할 수도 있습니다. 현재 RelatedPerson 리소스는 Patient-everything에서 처리되지 않으며 번들로 반환되지 않습니다.

현재는 Patient-everything 작업에서 replacesrefer 링크가 무시되고, 연결된 환자는 번들로 반환되지 않습니다.

설명된 대로 see also 링크는 원래 환자과 동등하게 유효한 것으로 간주되는 다른 환자를 참조합니다. Patient-everything 작업이 실행된 후, 환자에게 다른 환자에 대한 seealso 링크가 있는 경우 작업은 각 seealso 링크에서 Patient-everything을 실행합니다. 즉, 환자가 seealso 형식 링크를 사용하여 5명의 다른 환자에 연결되면 해당 5명의 환자 각각에 대해 Patient-everything을 실행하게 됩니다.

참고 항목

이 설정은 한 레이어 깊이의 seealso 링크만 따르도록 설정됩니다. seealso 링크의 seealso 링크는 처리하지 않습니다.

See also flow diagram.

마지막 링크 형식은 replaced-by입니다. 이 경우 원래 환자 리소스는 더 이상 사용되지 않으며 replaced-by 링크는 사용해야 하는 환자를 가리킵니다. 이 Patient-everything 구현에는 기본적으로 환자가 더 이상 유효하지 않다는 경고와 함께 번들 시작 시 작업 결과가 포함됩니다. 이는 Prefer 헤더가 handling=lenient로 설정된 경우에도 마찬가지입니다.

또한 Prefer 헤더를 handling=strict로 설정하여 대신 오류를 throw할 수 있습니다. 이 경우 오류 코드 301 MovedPermanently 반환은 현재 환자가 만료되었음을 나타내고 링크에 포함된 올바른 환자의 ID를 반환합니다. 반환된 오류의 ContentLocation 헤더는 올바른 최신 요청을 가리킵니다.

참고 항목

replaced-by 링크가 있고 Prefer: handling=lenient 및 결과가 여러 번들에서 비동기적으로 반환되는 경우 작업 결과만 하나의 번들로 반환됩니다.

Patient-everything 응답 순서

Patient-everything 작업은 결과를 단계별로 반환합니다.

  1. 1단계는 generalPractitionermanagingOrganization 리소스나 참조 외에 Patient 리소스 자체도 반환합니다.
  2. 2단계와 3단계는 모두 환자 구획에 리소스를 반환합니다. start 또는 end 쿼리 매개 변수가 지정된 경우 2단계는 임상 날짜별로 필터링할 수 있는 구획에서 리소스를 반환하고, 3단계는 임상 날짜별로 필터링할 수 없는 구획에서 리소스를 반환합니다. 이러한 매개변수 중 어느 것도 지정되지 않으면 2단계를 건너뛰고 3단계에서 모든 환자 구획 리소스를 반환합니다.
  3. 4단계는 환자를 참조하는 모든 디바이스를 반환합니다.

각 단계는 번들로 결과를 반환합니다. 결과가 여러 페이지에 걸쳐 있는 경우 번들의 다음 링크는 해당 단계에 대한 결과의 다음 페이지를 가리킵니다. 단계의 모든 결과가 반환되면 번들의 다음 링크는 다음 단계를 시작하기 위한 호출을 가리킵니다.

원래 환자에게 seealso 링크가 있는 경우 해당 환자 각각에 대해 1단계부터 4단계까지 반복됩니다.

Patient-everything 예시

다음은 Patient-everything 작업을 사용하는 몇 가지 예입니다. 이러한 예 외에도 seealsoreplaced-by 동작의 작동 방식을 보여주는 샘플 REST 파일이 있습니다.

Patient-everything을 사용하여 2010년부터 2020년 사이에 환자의 모든 것("everything")을 쿼리하려면 다음 호출을 사용합니다.

GET {FHIRURL}/Patient/{ID}/$everything?start=2010&end=2020

Patient-everything을 사용하여 환자의 관찰(Observation) 및 만남(Encounter)을 쿼리하려면 다음 호출을 사용합니다.

GET {FHIRURL}/Patient/{ID}/$everything?_type=Observation,Encounter 

Patient-everything을 사용하여 2021-05-27T05:00:00Z 이후 환자의 모든 것("everything")을 쿼리하려면 다음 호출을 사용합니다.

GET {FHIRURL}/Patient/{ID}/$everything?_since=2021-05-27T05:00:00Z 

이러한 각 호출에 대해 환자가 발견되면 해당 리소스의 Bundle과 함께 200 응답을 받게 됩니다.

다음 단계

Patient-everything 작업을 사용하는 방법을 알게 되었으므로 이제 검색 옵션에 대해 알아볼 수 있습니다. 자세한 내용은 참조하세요.

FHIR®은 HL7의 등록 상표이며, HL7의 사용 허가 하에 사용됩니다.