목록으로

Programming Notes

# Microsoft Fabric에서 원격 환자 모니터링 솔루션과 의료 데이터 솔루션 통합하기

본 문서에 제시된 정보는 제품 지침을 구성하지 않습니다. Microsoft Fabric에서 원격 환자 모니터링 솔루션과 의료 데이터 솔루션의 통합을 용이하게 하기 위한 관점(잠재적 접근 방식)을 제공합니다. 공동 저자: Kemal Kepenek, Mustafa Al-Durra...

본 문서에 제시된 정보는 제품 지침을 구성하지 않습니다. Microsoft Fabric에서 원격 환자 모니터링 솔루션과 의료 데이터 솔루션의 통합을 용이하게 하기 위한 관점(잠재적 접근 방식)을 제공합니다.

공동 저자: Kemal Kepenek, Mustafa Al-Durra PhD, Matt Dearing, Jason Foerch, Manoj Kumar

서론

원격 환자 모니터링 솔루션은 연결된 장치, 웨어러블 기술, 고급 소프트웨어 플랫폼을 활용하여 환자 건강 데이터를 수집하고 전송합니다. 이를 통해 활력 징후, 만성 질환 및 행동 패턴을 모니터링할 수 있습니다. Microsoft Fabric의 의료 데이터 솔루션은 Microsoft for Healthcare의 일부로 안전하고 확장 가능하며 상호 운용 가능한 데이터 플랫폼을 제공합니다. 이러한 통합 데이터 플랫폼은 분산된 데이터 소스를 통합하고 실행 가능한 건강 인사이트를 생성하는 데 매우 중요합니다.

본 문서는 Fabric에서 원격 환자 모니터링 솔루션과 의료 데이터 솔루션을 통합하기 위한 참조 아키텍처와 단계를 제공합니다. 이 통합은 낮은 데이터 해상도 사용 사례를 충족하는 것을 목표로 합니다. 낮은 데이터 해상도를 통해 분석적 통찰력을 생성하기 위해 일괄적으로 사용될 수 있도록 의료 데이터 솔루션에 집계되거나 특정 시점의 스냅샷 장치 데이터를 시간당, 매일 또는 더 드물게 전송하는 것을 다룹니다. 고해상도 의료 기기 데이터(예: EKG 또는 ECG 데이터)를 고빈도로 전송하여 일괄 처리 또는 (거의) 실시간 분석 처리 및 소비에 대한 입력이 되도록 하는 고해상도 사용 사례에 대한 통합 단계는 향후 문서에서 다룰 예정입니다.

오늘날 시장에는 원격 환자 모니터링 솔루션을 Fabric의 의료 데이터 솔루션과 통합할 수 있는 여러 가지 방법, 솔루션 및 파트너가 있습니다. 본 문서에서는 Life365 (Microsoft 파트너)의 솔루션을 활용했습니다. 여기서 논의된 통합 접근 방식은 Microsoft Fabric에 프로그래밍 방식으로 액세스할 수 있는(예: REST API 호출을 통해) 플랫폼 내에서 통합 로직(코드)을 실행할 수 있는 대부분의 원격 환자 모니터링 솔루션에 적용할 수 있습니다. 우리의 접근 방식에서는 선택된 통합 플랫폼이 Microsoft Azure 내의 Function App 서비스입니다.

본 문서의 후속 섹션에서는 통합 접근 방식을 두 단계로 다룹니다.

  1. 상호 운용성 단계: 원격 환자 모니터링 솔루션에서 사용되는 의료 기기의 데이터를 Fabric의 의료 데이터 솔루션으로 전송하기에 적합한 형식으로 변환하는 방법을 보여줍니다.
  2. 분석 처리 및 소비 단계: 의료 기기 데이터를 Fabric을 통해 쉽게 액세스할 수 있는 통찰력으로 바꾸는 단계를 제공합니다.

통합 접근 방식

상호 운용성 단계

[이미지]

이 단계의 1단계에서는 독점적인 장치 데이터의 전송을 수행합니다. 이 단계의 일부로 의료 기기에서 데이터 세트를 수집하여 통합 플랫폼 또는 서비스로 전송합니다(일반적으로 파일 형태). 참조 아키텍처에서 데이터 세트는 통합 기능을 담당하는 Function App(Azure 리소스 그룹 내부)으로 전송됩니다. 이러한 데이터 세트에는 (최소한) 세 가지 개념 또는 엔터티에 대한 정보가 포함되어야 합니다.

  1. 데이터 세트가 수집된 의료 기기.
  2. 데이터 세트가 속한 환자.
  3. 환자가 이러한 기기를 사용하는 동안 의료 기기에서 얻은 판독 값. 의료 기기 판독 값 데이터는 특정 시점의 데이터 캡처, 메트릭, 측정, 계산, 컬렉션 또는 유사한 데이터 포인트일 수 있습니다.

위에서 나열된 엔터티에 대한 정보는 분석 처리 및 소비를 수행할 두 번째 단계로 전송될 리소스로 이 정보를 변환할 상호 운용성 단계의 뒷부분(아래에서 설명)에서 사용됩니다.

2단계에서 독점적인 장치 데이터와 FHIR® 리소스 간의 매핑을 유지하기 위해 변환 템플릿을 사용하거나 프로그래밍 방식에 따라 의료 기기에서 받은 데이터 세트를 적절한 FHIR® 리소스로 변환할 수 있습니다. 이전 단계에서 언급한 엔터티를 사용하여 변환은 다음과 같이 수행됩니다.

  1. 의료 기기 정보는 FHIR®의 Device 리소스로 변환됩니다*.
  2. 환자 정보는 FHIR®의 Patient 리소스로 변환됩니다.
  3. 장치 판독 값 정보는 FHIR®의 Observation 리소스로 변환됩니다.

* 현재 Fabric의 의료 데이터 솔루션은 FHIR® 릴리스 4 (R4) 표준을 지원합니다. 따라서 이 단계의 일부로 생성된 FHIR® 리소스는 동일한 표준을 따라야 합니다.

변환 및 매핑 활동은 각 특정 원격 환자 모니터링 통합 솔루션의 관할 하에 있으며 본 문서에서는 자세히 검토하지 않습니다. 예로서 Microsoft 파트너(Life365) 중 하나가 Fabric의 의료 데이터 솔루션과 원격 환자 모니터링 솔루션을 통합하기 위해 따랐던 높은 수준의 단계를 아래에 제공했습니다.

Life365 팀은 내부 장치 데이터를 표준화된 FHIR® (Fast Healthcare Interoperability Resources) 관찰로 변환하여 Microsoft Fabric의 의료 데이터 솔루션 및 기타 건강 데이터 에코시스템과의 호환성을 가능하게 하는 클라우드 기반 변환 서비스를 개발했습니다.

이 서비스는 Microsoft Azure Cloud에서 구현되었으며 혈압 모니터, 체중계, 맥박 산소 측정기를 포함한 Life365 연결 의료 기기에서 구조화된 페이로드를 수집하고 이를 실시간으로 FHIR® 호환 형식으로 변환하도록 설계되었습니다.

판독 값을 받으면:

  • 이 서비스는 관련 임상 메트릭(예: 수축기/이완기 혈압, 심박수, 체중, SpO₂)을 식별합니다.
  • 이러한 메트릭은 업계 표준 LOINC 코드 및 단위를 사용하여 FHIR® Observation 리소스에 매핑됩니다.
  • 각 Observation은 관련 환자 및 장치에 대한 참조로 보강되어 Fabric의 의료 데이터 솔루션의 섭취 요구 사항을 충족하기 위해 NDJSON으로 형식이 지정됩니다.
  • 결과 FHIR® 호환 데이터는 토큰 기반 인증을 사용하여 Fabric 인스턴스로 안전하게 전송됩니다.

이 구현은 Life365 장치 데이터가 다운스트림 FHIR® 기반 플랫폼과 통합할 수 있는 일관되고 표준에 맞는 경로를 제공하는 동시에 원래 장치 페이로드의 독점적인 구조를 추상화합니다.

공개 도메인의 예로는 다음 오픈 소스 프로젝트를 참조로 사용할 수 있습니다.

위의 오픈 소스 저장소는 최신 상태가 아닐 수 있습니다. 의료 기기 데이터를 FHIR®에 매핑하는 완전한 (엔드 투 엔드) 솔루션을 제공하지 않을 수 있지만 시작점으로 여전히 도움이 될 수 있습니다. 이를 원격 환자 모니터링 통합 솔루션에 통합하기로 결정한 경우 해당 기능을 검증하고 솔루션의 요구 사항을 충족하기 위해 필요한 변경 사항을 적용하십시오.

결과 FHIR® 리소스가 나중에 (Fabric의 의료 데이터 솔루션 내에서) 분석 처리에서 성공적으로 소비되려면 아래 나열된 필수 조건을 충족해야 합니다.

  1. 각 FHIR® 리소스는 전체적으로 NDJSON 형식의 파일에 단일 행으로 저장해야 합니다. FHIR® 리소스 유형당 하나의 NDJSON 파일을 만드는 것이 좋습니다. 즉, 위에서 검토한 세 개의 엔터티에 대해 Device.ndjson, Patient.ndjson 및 Observation.ndjson 파일을 만듭니다.
  1. 각 FHIR® 리소스에는 lastUpdated 값이 포함된 메타 세그먼트가 채워져 있어야 합니다. 예:
"meta":{"lastUpdated":"2025-05-15T15:35:04.218Z", "profile":["http://hl7.org/FHIR®/us/core/StructureDefinition/us-core-documentreference"]}
  1. Observation과 Patient 간의 상호 참조와 Observation과 Device FHIR® 리소스 간의 상호 참조는 공식 FHIR® 식별자 또는 논리적 식별자를 통해 올바르게 표현되어야 합니다. 예를 들어 Observation FHIR® 리소스의 subject 및 device 속성은 다음과 같은 방식으로 Patient 및 Device FHIR® 리소스를 각각 참조해야 합니다.
"subject":{"reference":"Patient/d3281621-1584-4631-bc82-edcaf49fda96"}
"device":{"reference":"Device/5a934020-c2c4-4e92-a0c5-2116e29e757d"}
  1. Patient FHIR® 리소스의 경우 MRN이 식별자로 사용되는 경우 FHIR® 표준에 따라 MRN 값을 표현하는 것이 중요합니다. 환자 식별자는 분석 처리 및 소비 단계 전체에서 교차 FHIR® 리소스 관계를 설정하는 데 사용되는 중요한 속성입니다. 이 문서는 나중에 해당 단계를 검토합니다. 최소한 MRN 코딩을 식별자 유형으로 사용하는 환자 식별자는 value, system, type.coding.systemtype.coding.code (값이 "MR") 속성이 올바르게 채워져 있어야 합니다. 아래 예를 참조하십시오. hl7.org에서 예제 Patient FHIR® 리소스를 참조할 수도 있습니다.
"reference": null,
"type": "Patient",
"identifier": {
  "extension": null,
  "use": null,
  "value": "4e7e5bf8-2823-8ec1-fe37-eba9c9d69463",
  "system": "urn:oid: 1.2.36.146.595.217.0.1",
  "type": {
    "extension": null,
    "id": null,
    "coding": [
      {
        "extension": null,
        "id": null,
        "system": "http://terminology.h17.org/CodeSystem/v2-0203",
        "version": null,
        "code": "MR",
        "display": null,
        "userSelected": null
      }
      "text": null
  },
...

3단계에서는 FHIR® 리소스 NDJSON 파일을 Fabric의 의료 데이터 솔루션으로 전송합니다.

  1. 통합 플랫폼(이 경우 Azure Function App)에 Fabric의 의료 데이터 솔루션에 파일을 전송(업로드)할 수 있는 권한이 있는지 확인하십시오.
    1. Azure Function App이 실행 중인 관리 ID 또는 서비스 주체를 찾습니다.
      1. Azure Portal로 이동하여 리소스 그룹 내에서 Function App을 찾습니다.
      2. Function App의 탐색 창에서 "설정" 아래의 "ID"를 선택합니다.
      3. 관리 ID (사용 가능한 경우) 식별: 시스템 할당 관리 ID가 활성화된 경우 해당 개체 ID 및 주체 ID를 포함하여 시스템 할당 관리 ID에 대한 정보가 표시됩니다. 사용자 할당 관리 ID가 연결된 경우 해당 ID에 대한 세부 정보가 표시됩니다. 필요한 경우 여기에서 사용자 할당 ID를 추가할 수도 있습니다.
      4. 서비스 주체 (해당하는 경우): Function App이 서비스 주체를 사용하도록 구성된 경우 Azure Active Directory (일명 Microsoft Entra ID) 내에서 서비스 주체를 찾아야 합니다. Azure Active Directory 내에서 "엔터프라이즈 애플리케이션"을 검색하고 Function App과 연결된 애플리케이션을 찾으면 이를 찾을 수 있습니다.
    2. Azure Function App의 ID에 파일 업로드 권한을 부여합니다.
      1. 관리자 계정으로 Fabric에 로그인한 후 의료 데이터 솔루션 인스턴스가 배포된 Fabric 작업 영역으로 이동합니다. 오른쪽 상단의 "액세스 관리" 버튼을 클릭합니다.
      2. "사용자 또는 그룹 추가"를 클릭합니다.
      3. 드롭다운 목록에서 "기여자"를 선택하여 Azure Function App과 연결된 관리 ID 또는 서비스 주체를 기여자 액세스 권한으로 추가합니다.
  1. 아래 제공된 Python 예제와 유사한 코딩 환경을 사용하여 OneLake 콘텐츠를 프로그래밍 방식으로 관리할 수 있습니다. 여기에는 이전에 생성된 NDJSON 형식 파일을 대상 OneLake 폴더로 전송(업로드)하는 기능이 포함됩니다.
from azure.identity import DefaultAzureCredential
from azure.storage.filedatalake import DataLakeFileClient, DataLakeFileSystemClient

# OneLake URI로 바꿉니다.
onelake_uri = "https://your-account-name.dfs.core.windows.net"

# 파일의 대상 경로로 바꿉니다.
file_path = "/<대상 폴더의 전체 경로 (아래 참조)>/<엔터티 이름>.ndjson"

# 자격 증명을 가져옵니다.
credential = DefaultAzureCredential()

# DataLakeFileClient를 만듭니다.
file_client = DataLakeFileClient(
    url=f"{onelake_uri}{file_path}",
    credential=credential
)

# 파일을 업로드합니다.
with open("<엔터티 이름>.ndjson", "rb") as f:
    file_client.upload_data(f, overwrite=True)

print(f"파일이 성공적으로 업로드되었습니다: {file_path}")

Fabric의 의료 데이터 솔루션에 원격 환자 모니터링 솔루션 통합에 사용할 대상 OneLake 폴더는 다음과 같이 결정됩니다.

  1. Fabric 작업 영역 내에서 의료 데이터 솔루션 인스턴스로 생성된 bronze lakehouse로 이동합니다. lakehouse의 이름은 "healthcare1_msft_bronze"입니다. lakehouse 이름의 "healthcare1" 세그먼트는 작업 영역에 배포된 의료 데이터 솔루션 인스턴스의 이름을 가리킵니다. Fabric 작업 영역에서 다른 이름이 표시될 수 있지만 lakehouse 이름의 나머지 부분("_msft_bronze")은 변경되지 않습니다.
  2. 의료 데이터 솔루션의 통합 폴더 구조는 bronze lakehouse 내에 있습니다. 해당 폴더 구조 내에서 통합 중인 원격 환자 모니터링 솔루션의 이름을 사용하여 하위 폴더를 만듭니다. 아래 스크린샷을 참조하십시오. 이 하위 폴더는 의료 데이터 솔루션 설명서에서 네임스페이스로 참조되며 들어오는(업로드될) 데이터의 소스를 고유하게 식별하는 데 사용됩니다. 이전 상호 운용성 단계에서 생성된 NDJSON 파일은 해당 하위 폴더로 전송(업로드)됩니다. 파일 전송(업로드) 코드에 사용할 대상 OneLake 폴더의 전체 경로는 다음과 같습니다.
healthcare1_msft_bronze.Lakehouse\Files\Ingest\Clinical\FHIR®-NDJSON\<솔루션 이름-네임스페이스>

[이미지]

분석 처리 및 소비 단계

[이미지]

이 단계의 1단계에서는 앞에서 설명한 상호 운용성 단계를 분석 처리 및 소비 단계와 연결합니다. 이 단계의 일부로 NDJSON 파일이 Fabric의 의료 데이터 솔루션의 bronze lakehouse의 통합 폴더 구조 내의 원격 환자 모니터링 솔루션 하위 폴더에 업로드되었는지 간단히 확인할 수 있습니다. 해당 하위 폴더의 경로는 이 문서 앞부분에 제공되어 있습니다.

파일 업로드가 완료되면 장치 판독 값을 분석 목적으로 사용할 수 있도록 데이터 수집 및 변환을 수행하는 데이터 파이프라인을 실행할 준비가 된 것입니다. 의료 데이터 솔루션 인스턴스가 배포된 Fabric 작업 영역에서 "healthcare1_msft_omop_analytics"라는 데이터 파이프라인을 찾아 엽니다. bronze lakehouse 이름과 마찬가지로 데이터 파이프라인 이름의 "healthcare1" 세그먼트는 작업 영역에 배포된 의료 데이터 솔루션 인스턴스의 이름을 가리킵니다. 자체 인스턴스에 따라 Fabric 작업 영역에서 다른 이름이 표시될 수 있습니다.

[이미지]

이 데이터 파이프라인은 4개의 활동을 실행하며, 그 중 첫 번째는 전송된 파일을 통합 폴더 구조 내의 다른 하위 폴더로 복사하여 다음 수집 단계에 대한 입력으로 사용할 수 있도록 합니다. 그런 다음 후속 파이프라인 활동은 위의 분석 처리 및 소비 단계 다이어그램에 설명된 대로 2단계에서 4단계까지 수행합니다.

2단계에서는 전송된(NDJSON) 파일의 콘텐츠를 bronze lakehouse의 ClinicalFHIR 델타 테이블로 수집합니다.

3단계에서는 bronze lakehouse의 ClinicalFHIR 델타 테이블의 콘텐츠를 실버 lakehouse 내부의 평면화된 FHIR® 데이터 모델 콘텐츠로 변환합니다.

4단계에서는 실버 lakehouse의 평면화된 FHIR® 콘텐츠를 gold lakehouse 내부의 OMOP 데이터 모델 콘텐츠로 변환합니다.

5단계의 일부로 실버 lakehouse의 콘텐츠를 사용자 지정 분석 사용 사례에 가장 적합한 데이터 모델로 변환하여 자체 gold lakehouse를 개발할 수 있습니다.

장치 데이터가 gold lakehouse로 변환되면 아래에서 간략하게 논의된 여러 가지 방법을 통해 분석 또는 보고에 사용할 수 있습니다.

6단계에서는 데이터를 자세히 분석할 수 있는 시각적이고 대화형 캔버스를 제공하는 Fabric 내에서 Power BI 보고서 및 대시보드를 구축할 수 있습니다. (Power BI 개요 - Microsoft Fabric | Microsoft Learn)

7단계의 일부로 Fabric 데이터 공유 기능을 사용하여 협업하는 외부 조직 내의 팀에 데이터에 대한 액세스 권한을 부여할 수 있습니다 (Microsoft Fabric의 외부 데이터 공유 - Microsoft Fabric | Microsoft Learn).

마지막으로 8단계에서는 Fabric의 의료 데이터 솔루션의 코호트 검색 및 구축 기능을 활용할 수 있습니다. 이 기능을 사용하면 자연어 쿼리를 제출하여 데이터를 탐색하고 사용 사례가 목표로 하는 기준에 맞는 환자 코호트를 구축할 수 있습니다. (코호트 검색 및 구축에서 생성 AI로 환자 코호트 구축(미리 보기) - Microsoft Cloud for Healthcare | Microsoft Learn)

결론

Fabric의 의료 데이터 솔루션과 통합되면 원격 환자 모니터링 솔루션은 환자 결과 개선, 치료 조정 최적화 및 의료 시스템 운영 간소화에 혁신적인 잠재력을 제공할 수 있습니다. 조직에서 이러한 여정의 다음 단계를 모색하려는 경우 Microsoft 계정 팀에 문의하십시오.

Microsoft 제품 및 서비스는 (1) 의료 기기로 설계, 의도 또는 제공되지 않으며 (2) 전문 의료 조언, 진단, 치료 또는 판단을 대체하도록 설계되거나 의도되지 않았으며 전문 의료 조언, 진단, 치료 또는 판단을 대체하거나 대체할 수 없습니다. 고객/파트너는 솔루션이 적용 가능한 법률 및 규정을 준수하는지 확인할 책임이 있습니다.  

FHIR®는 미국 상표청에 등록된 Health Level Seven International의 등록 상표이며 해당 허가를 받아 사용됩니다.