SMART on FHIR 개요

대체 가능한 의료 애플리케이션 및 재사용 가능한 기술(SMART on FHIR)은 애플리케이션이 데이터 저장소를 통해 임상 정보에 액세스할 수 있는 의료 표준입니다. OAuth2 및 OpenID Connect를 비롯한 개방형 표준을 기반으로 하는 보안 계층을 FHIR 인터페이스에 추가하여 EHR 시스템과 통합할 수 있도록 합니다. SMART on FHIR을 사용하면 다음 세 가지 이상의 중요한 이점이 제공됩니다.

  • 애플리케이션에는 FHIR 리포지토리에 대한 인증/권한 부여를 가져오는 알려진 방법이 있습니다.
  • SMART on FHIR을 사용하여 FHIR 리포지토리에 액세스하는 사용자는 리포지토리의 모든 데이터에 액세스하지 않고 사용자와 연결된 리소스로 제한됩니다.
  • 사용자는 SMART 임상 범위를 사용하여 애플리케이션에 제한된 데이터 집합에 대한 액세스 권한을 부여할 수 있습니다.

아래 자습서에서는 FHIR 서비스를 사용하여 SMART on FHIR 애플리케이션을 사용하도록 설정하는 단계를 설명합니다.

필수 구성 요소

AHDS 샘플 OSS를 사용하는 SMART on FHIR(SMART on FHIR(고급))

1단계: FHIR SMART 사용자 역할 설정

사용자 관리: 역할에 사용자 할당 섹션에 나열된 단계를 따릅니다. 역할에 추가된 모든 사용자 - "FHIR SMART User"는 fhirUser 클레임 및 임상 범위 클레임을 포함하는 액세스 토큰이 있는 요청과 같이 해당 요청이 SMART on FHIR 구현 가이드를 준수하는 경우 FHIR 서비스에 액세스할 수 있습니다. 이 역할의 사용자에게 부여된 액세스는 fhirUser 구획과 관련된 리소스 및 임상 범위의 제한에 의해 제한됩니다.

2단계: 샘플과 FHIR 서버 통합

Azure Health Data Service 샘플 OSS의 단계를 따릅니다. 이렇게 하면 FHIR 서버를 다른 Azure 서비스(예: APIM, Azure 함수 등)와 통합할 수 있습니다.

참고

샘플은 오픈 소스 코드이며, 사용하기 전에 GitHub의 정보 및 라이선스 조건을 검토해야 합니다. Azure Health Data Service의 일부가 아니며 Microsoft 지원 지원되지 않습니다. 이러한 샘플은 Azure Active Directory를 ID 공급자 워크플로로 사용하여 ONC(g)(10) 규정 준수를 시연하기 위해 Azure Health Data Services 및 기타 오픈 소스 도구를 함께 사용하는 방법을 보여 주는 데 사용할 수 있습니다.

SMART on FHIR 프록시

클릭하여 확장합니다.

참고

위에서 언급한 SMART on FHIR(고급)의 또 다른 옵션입니다. SMART on FHIR 프록시 옵션은 EHR 시작 시퀀스만 사용하도록 설정합니다.

SMART on FHIR을 사용하려면 먼저 앱을 인증하고 권한을 부여해야 합니다. SMART on FHIR을 처음 사용할 때 앱이 FHIR 리소스에 액세스할 수 있도록 관리 동의를 받아야 합니다.

앱에 소유권 역할이 없는 경우 앱 소유자에게 문의하여 앱에서 관리자 동의를 부여하도록 요청합니다.

관리자 권한이 있는 경우 다음 단계를 완료하여 관리자에게 직접 동의를 부여합니다. (나중에 앱에서 메시지가 표시되면 관리자 동의를 자신에게 부여할 수도 있습니다.) 동일한 단계를 완료하여 다른 사용자를 소유자로 추가하여 이 앱 등록을 보고 편집할 수 있습니다.

자신 또는 다른 사용자를 앱의 소유자로 추가하려면 다음을 수행합니다.

  1. Azure Portal에서 Azure Active Directory로 이동합니다.
  2. 왼쪽 메뉴에서 앱 등록을 선택합니다.
  3. 만든 앱 등록을 검색한 다음 선택합니다.
  4. 왼쪽 메뉴의 관리에서 소유자를 선택합니다.
  5. 소유자 추가를 선택한 다음 관리자 동의를 구하려는 사용자 또는 자신을 추가합니다.
  6. 저장을 선택합니다.

2단계: SMART on FHIR 프록시 사용

SMART on FHIR를 사용하려면 Audience의 식별자 URI가 FHIR 서비스의 URI와 동일해야 합니다. Azure API for FHIR의 표준 구성은 https://azurehealthcareapis.comAudience 값을 사용합니다. 그러나 FHIR 서비스의 특정 URL과 일치하는 값을 설정할 수도 있습니다(예: https://MYFHIRAPI.azurehealthcareapis.com). 이 설정은 SMART on FHIR 프록시를 작업할 때 필요합니다.

Azure API for FHIR instance 대한 인증 설정에서 SMART on FHIR 프록시를 사용하도록 설정하려면 SMART on FHIR 프록시 검사 상자를 선택합니다.

스크린샷은 SMART on FHIR 프록시를 사용하도록 설정하는 것을 보여줍니다.

SMART on FHIR 프록시는 SMART on FHIR 앱과 Azure AD 간의 중개자 역할을 합니다. 인증 회신(인증 코드)은 앱 자체가 아닌 SMART on FHIR 프록시로 이동해야 합니다. 그러면 프록시가 앱에 회신을 전달합니다.

이와 같은 2단계 인증 코드 전달 때문에 Azure AD 클라이언트 애플리케이션의 회신 URL(콜백)을 SMART on FHIR 프록시의 회신 URL과 SMART on FHIR 앱의 회신 URL 조합으로 설정해야 합니다. 결합된 회신 URL은 다음 형식을 사용합니다.

https://MYFHIRAPI.azurehealthcareapis.com/AadSmartOnFhirProxy/callback/aHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9zYW1wbGVhcHAvaW5kZXguaHRtbA

이 회신에서 aHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9zYW1wbGVhcHAvaW5kZXguaHRtbA는 URL을 지원하는 base64로 인코딩된 SMART on FHIR 앱의 회신 URL 버전입니다. SMART on FHIR 앱 시작 관리자의 경우 앱이 로컬로 실행되면 회신 URL은 https://localhost:5001/sampleapp/index.html입니다.

다음과 같은 스크립트를 사용하여 결합된 회신 URL을 생성할 수 있습니다.

$replyUrl = "https://localhost:5001/sampleapp/index.html"
$fhirServerUrl = "https://MYFHIRAPI.azurewebsites.net"
$bytes = [System.Text.Encoding]::UTF8.GetBytes($ReplyUrl)
$encodedText = [Convert]::ToBase64String($bytes)
$encodedText = $encodedText.TrimEnd('=');
$encodedText = $encodedText.Replace('/','_');
$encodedText = $encodedText.Replace('+','-');

$newReplyUrl = $FhirServerUrl.TrimEnd('/') + "/AadSmartOnFhirProxy/callback/" + $encodedText

앞에서 Azure AD에 대해 만든 퍼블릭 클라이언트 애플리케이션에 회신 URL을 추가합니다.

공용 클라이언트에 대해 회신 URL을 구성하는 방법을 보여 준 스크린샷

3단계: 테스트 환자 가져오기

Azure API for FHIR 및 SMART on FHIR 프록시를 테스트하려면 데이터베이스에 환자가 한 명 이상 있어야 합니다. 아직 API와 상호 작용하지 않았고 데이터베이스에 데이터가 없는 경우 Postman을 사용하여 FHIR 서비스 액세스를 참조하여 환자를 로드합니다. 특정 환자의 ID를 적어 둡니다.

4단계: SMART on FHIR 앱 시작 관리자 다운로드

오픈 소스인 Azure 리포지토리용 FHIR 서버에는 간단한 SMART on FHIR 앱 시작 관리자와 SMART on FHIR 앱 샘플이 포함되어 있습니다. 이 자습서에서는 이 SMART on FHIR 시작 관리자를 로컬로 사용하여 설치를 테스트합니다.

다음 명령을 사용하여 GitHub 리포지토리를 복제하고 애플리케이션으로 이동할 수 있습니다.

git clone https://github.com/Microsoft/fhir-server
cd fhir-server/samples/apps/SmartLauncher

애플리케이션에서 몇 가지 구성을 설정해야 하며 appsettings.json에서 설정할 수 있습니다.

{
    "FhirServerUrl": "https://MYFHIRAPI.azurehealthcareapis.com",
    "ClientId": "APP-ID",
    "DefaultSmartAppUrl": "/sampleapp/launch.html"
}

다음과 같이 dotnet user-secrets 기능을 사용하는 것이 좋습니다.

dotnet user-secrets set FhirServerUrl https://MYFHIRAPI.azurehealthcareapis.com
dotnet user-secrets set ClientId <APP-ID>

다음 명령을 사용하여 애플리케이션을 실행합니다.

dotnet run

5단계: SMART on FHIR 프록시 테스트

SMART on FHIR 앱 시작 관리자를 시작한 후에는 브라우저에서 다음 화면이 표시되는 https://localhost:5001을 가리킬 수 있습니다.

SMART on FHIR 앱 시작 관리자의 스크린샷

환자, 방문 기록 또는 의사 정보를 입력하면 시작 컨텍스트가 업데이트되는 것을 볼 수 있습니다. Azure API for FHIR를 사용하는 경우 시작 컨텍스트는 환자, 의사 등에 대한 정보를 포함하는 JSON 문서입니다. 이 시작 컨텍스트는 base64로 인코딩되어 SMART on FHIR 앱에 launch 쿼리 매개 변수로 전달됩니다. SMART on FHIR 사양에 따라 이 변수는 SMART on FHIR 앱에 대해 불투명하며 ID 공급자에게 전달됩니다.

SMART on FHIR 프록시는 이 정보를 사용하여 토큰 응답의 필드를 채웁니다. SMART on FHIR 앱은 이러한 필드를 사용하여 데이터를 요청할 환자 및 애플리케이션을 화면에 렌더링하는 방법을 제어할 수 있습니다. SMART on FHIR 프록시는 다음 필드를 지원합니다.

  • patient
  • encounter
  • practitioner
  • need_patient_banner
  • smart_style_url

이러한 필드는 앱에 대한 지침을 제공하는 것이 그 목적이지만 보안 정보를 전달하지는 않습니다. SMART on FHIR 애플리케이션에서는 이러한 필드를 무시해도 됩니다.

SMART on FHIR 앱 시작 관리자는 페이지 맨 아래에 있는 시작 URL 정보를 업데이트합니다. 시작을 선택하여 샘플 앱을 시작합니다.

## 다음 단계

이제 SMART on FHIR 기능을 사용하도록 설정하는 방법에 대해 알아보았으므로 검색 매개 변수, 한정자 및 기타 FHIR 검색 방법을 사용하여 검색하는 방법에 대한 자세한 내용은 검색 샘플 페이지를 참조하세요.

FHIR®은 HL7의 등록 상표이며 HL7 의 권한으로 사용됩니다.