Omówienie funkcji SMART on FHIR

Substytucyjne aplikacje medyczne i technologie wielokrotnego użytku (SMART on FHIR) to standard opieki zdrowotnej, za pomocą którego aplikacje mogą uzyskiwać dostęp do informacji klinicznych za pośrednictwem magazynu danych. Dodaje warstwę zabezpieczeń opartą na otwartych standardach, w tym OAuth2 i OpenID Connect, do interfejsów FHIR, aby umożliwić integrację z systemami EHR. Korzystanie z funkcji SMART on FHIR zapewnia co najmniej trzy ważne korzyści:

  • Aplikacje mają znaną metodę uzyskiwania uwierzytelniania/autoryzacji do repozytorium FHIR.
  • Użytkownicy, którzy uzyskują dostęp do repozytorium FHIR z funkcją SMART on FHIR, są ograniczeni do zasobów skojarzonych z użytkownikiem, a nie do wszystkich danych w repozytorium.
  • Użytkownicy mają możliwość udzielania aplikacji dostępu do dalszego ograniczonego zestawu danych przy użyciu zakresów klinicznych SMART.

W poniższych samouczkach opisano kroki włączania funkcji SMART w aplikacjach FHIR za pomocą usługi FHIR.

Wymagania wstępne

SMART on FHIR using AHDS Samples OSS

Krok 1. Konfigurowanie roli użytkownika FHIR SMART

Wykonaj kroki wymienione w sekcji Zarządzanie użytkownikami: Przypisywanie użytkowników do roli. Każdy użytkownik dodany do roli — "FHIR SMART User" będzie mógł uzyskać dostęp do usługi FHIR, jeśli ich żądania są zgodne z przewodnikiem implementacji SMART on FHIR, takim jak żądanie posiadania tokenu dostępu, który zawiera oświadczenie fhirUser i oświadczenie zakresu klinicznego. Dostęp udzielony użytkownikom w tej roli będzie następnie ograniczony przez zasoby skojarzone z przedziałem fhirUser i ograniczeniami w zakresach klinicznych.

Krok 2. Integracja serwera FHIR z przykładami

Wykonaj kroki opisane w temacie Azure Health Data Service Samples OSS (Przykłady usługi Azure Health Data Service). Umożliwi to integrację serwera FHIR z innymi usługami platformy Azure (takimi jak APIM, Azure Functions i inne).

Uwaga

Przykłady są kodem typu open source i przed jego użyciem należy przejrzeć informacje i postanowienia licencyjne w usłudze GitHub. Nie są one częścią usługi Azure Health Data Service i nie są obsługiwane przez pomoc techniczna firmy Microsoft. Te przykłady mogą służyć do zademonstrowania sposobu, w jaki usługi Azure Health Data Services i inne narzędzia typu open source mogą być używane razem w celu zademonstrowania zgodności z usługą ONC (g)(10) przy użyciu usługi Azure Active Directory jako przepływu pracy dostawcy tożsamości.

SMART na serwerze proxy FHIR

Aby używać funkcji SMART w systemie FHIR, musisz najpierw uwierzytelnić i autoryzować aplikację. Przy pierwszym użyciu funkcji SMART on FHIR należy również uzyskać zgodę administracyjną, aby umożliwić aplikacji dostęp do zasobów FHIR.

Jeśli nie masz roli własności w aplikacji, skontaktuj się z właścicielem aplikacji i poproś go o udzielenie zgody administratora dla Ciebie w aplikacji.

Jeśli masz uprawnienia administracyjne, wykonaj następujące kroki, aby udzielić użytkownikowi zgody administratora bezpośrednio. (Możesz również udzielić użytkownikowi zgody administratora później po wyświetleniu monitu w aplikacji). Możesz wykonać te same kroki, aby dodać innych użytkowników jako właścicieli, aby mogli wyświetlać i edytować tę rejestrację aplikacji.

Aby dodać siebie lub innego użytkownika jako właściciela aplikacji:

  1. W witrynie Azure Portal przejdź do pozycji Azure Active Directory.
  2. W menu po lewej stronie wybierz pozycję Rejestracja aplikacji.
  3. Wyszukaj utworzoną rejestrację aplikacji, a następnie wybierz ją.
  4. W menu po lewej stronie w obszarze Zarządzaj wybierz pozycję Właściciele.
  5. Wybierz pozycję Dodaj właścicieli, a następnie dodaj siebie lub użytkownika, który chcesz wyrazić zgodę administratora.
  6. Wybierz pozycję Zapisz

Krok 2. Włączanie funkcji SMART na serwerze proxy FHIR

Funkcja SMART w systemie FHIR wymaga, aby Audience identyfikator URI identyfikatora był równy identyfikatorowi URI usługi FHIR. Standardowa konfiguracja interfejsu API platformy Azure for FHIR używa Audience wartości https://azurehealthcareapis.com. Można jednak również ustawić wartość zgodną z określonym adresem URL usługi FHIR (na przykład https://MYFHIRAPI.azurehealthcareapis.com). Jest to wymagane podczas pracy z serwerem proxy SMART na serwerze proxy FHIR.

Aby włączyć serwer proxy SMART on FHIR w ustawieniach uwierzytelniania dla wystąpienia usługi Azure API for FHIR, zaznacz pole wyboru SMART on FHIR proxy :

Zrzut ekranu przedstawiający włączanie funkcji SMART na serwerze proxy FHIR.

Smart on FHIR proxy działa jako pośrednik między aplikacją SMART on FHIR i Azure AD. Odpowiedź uwierzytelniania (kod uwierzytelniania) musi przejść do serwera proxy SMART na serwerze proxy FHIR zamiast samej aplikacji. Następnie serwer proxy przekazuje odpowiedź do aplikacji.

Ze względu na ten dwuetapowy przekaźnik kodu uwierzytelniania należy ustawić adres URL odpowiedzi (wywołanie zwrotne) dla aplikacji klienckiej Azure AD na adres URL, który jest kombinacją adresu URL odpowiedzi dla serwera proxy SMART on FHIR i adresu URL odpowiedzi dla aplikacji SMART on FHIR. Połączony adres URL odpowiedzi ma następującą formę:

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

W tej odpowiedzi aHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9zYW1wbGVhcHAvaW5kZXguaHRtbA jest bezpieczną wersją adresu URL zakodowaną w formacie base64 adresu URL odpowiedzi dla aplikacji SMART on FHIR. W przypadku uruchamiania aplikacji SMART on FHIR, gdy aplikacja jest uruchomiona lokalnie, adres URL odpowiedzi to https://localhost:5001/sampleapp/index.html.

Możesz wygenerować połączony adres URL odpowiedzi przy użyciu skryptu w następujący sposób:

$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

Dodaj adres URL odpowiedzi do publicznej aplikacji klienckiej utworzonej wcześniej dla Azure AD:

Zrzut ekranu przedstawiający sposób konfigurowania adresu URL odpowiedzi dla klienta publicznego.

Krok 3. Uzyskanie pacjenta testowego

Aby przetestować interfejs API platformy Azure dla platformy FHIR i serwer proxy SMART na serwerze proxy FHIR, musisz mieć co najmniej jednego pacjenta w bazie danych. Jeśli jeszcze nie korzystasz z interfejsu API i nie masz danych w bazie danych, zobacz Uzyskiwanie dostępu do usługi FHIR przy użyciu narzędzia Postman w celu załadowania pacjenta. Zanotuj identyfikator konkretnego pacjenta.

Krok 4. Pobieranie aplikacji SMART on FHIR app launcher

Serwer FHIR typu open source dla platformy Azure zawiera prostą aplikację SMART on FHIR app launcher i przykładową aplikację SMART on FHIR. W tym samouczku użyj tego narzędzia SMART on FHIR launcher lokalnie, aby przetestować konfigurację.

Repozytorium GitHub można sklonować i przejść do aplikacji przy użyciu następujących poleceń:

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

Aplikacja wymaga kilku ustawień konfiguracji, które można ustawić w programie appsettings.json:

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

Zalecamy korzystanie z dotnet user-secrets funkcji:

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

Użyj tego polecenia, aby uruchomić aplikację:

dotnet run

Krok 5. Testowanie smart na serwerze proxy FHIR

Po uruchomieniu aplikacji SMART on FHIR app launcher możesz wskazać przeglądarkę na https://localhost:5001, gdzie powinien zostać wyświetlony następujący ekran:

Zrzut ekranu przedstawiający aplikację SMART w funkcji uruchamiania aplikacji FHIR.

Po wprowadzeniu informacji o pacjentach, spotkaniach lub praktykach zauważysz, że kontekst uruchamiania jest aktualizowany. W przypadku korzystania z interfejsu API platformy Azure for FHIR kontekst uruchamiania jest po prostu dokumentem JSON zawierającym informacje o pacjentach, praktykach i nie tylko. Ten kontekst uruchamiania jest zakodowany w formacie base64 i przekazywany do aplikacji SMART on FHIR jako launch parametr zapytania. Zgodnie ze specyfikacją SMART on FHIR ta zmienna jest nieprzezroczysta dla aplikacji SMART on FHIR i przekazywana do dostawcy tożsamości.

Serwer proxy SMART na serwerze proxy FHIR używa tych informacji do wypełniania pól w odpowiedzi tokenu. Aplikacja SMART on FHIR może używać tych pól do kontrolowania, które pacjent żąda danych i jak renderuje aplikację na ekranie. Serwer proxy SMART on FHIR obsługuje następujące pola:

  • patient
  • encounter
  • practitioner
  • need_patient_banner
  • smart_style_url

Te pola mają na celu dostarczenie wskazówek dla aplikacji, ale nie przekazują żadnych informacji zabezpieczających. Aplikacja SMART on FHIR może je zignorować.

Zwróć uwagę, że funkcja SMART on FHIR app launcher aktualizuje informacje o adresie URL uruchamiania w dolnej części strony. Wybierz pozycję Uruchom, aby uruchomić przykładową aplikację.

FHIR® jest zastrzeżonym znakiem towarowym HL7 i jest używany z uprawnieniem HL7 .