kurz: Azure Active Directory SMART on FHIR proxy
SMART on FHIR je sada otevřených specifikací pro integraci partnerských aplikací se servery FHIR a elektronickými systémy lékařských záznamů s rozhraním FHIR. Jedním z hlavních účelů specifikace je popsání toho, jak má aplikace zjistit koncové body ověřování pro server FHIR a spustit sekvenci ověřování.
Ověřování je založené na OAuth2. protože inteligentní na FHIR používá konvence pojmenování parametrů, které nejsou hned kompatibilní s Azure Active Directory (Azure AD), rozhraní API azure pro FHIR má vestavěný integrovaný azure AD smart on FHIR proxy, který umožňuje podmnožinu inteligentních sekvencí spouštění FHIR. Konkrétně proxy umožňuje sekvenci spuštění EHR.
V tomto kurzu se dozvíte, jak pomocí proxy Povolit inteligentní aplikace FHIR s rozhraním API Azure pro FHIR.
Požadavky
- Instance rozhraní API Azure pro FHIR
- .NET Core 2.2
Konfigurace registrací Azure AD
Inteligentní na FHIR vyžaduje, aby identifikátor Audience URI identifikátoru byl stejný jako identifikátor URI služby FHIR. Standardní konfigurace rozhraní API Azure pro FHIR používá Audience hodnotu https://azurehealthcareapis.com . Můžete ale také nastavit hodnotu, která odpovídá konkrétní adrese URL služby FHIR (například https://MYFHIRAPI.azurehealthcareapis.com ). Tento požadavek je nutný při práci s FHIR proxy INTELIGENTNÍho serveru.
Budete také potřebovat registraci klientské aplikace. Většina INTELIGENTNÍch aplikací v FHIR je jednoduchá stránka JavaScriptu. Proto byste měli postupovat podle pokynů ke konfiguraci veřejné klientské aplikace v Azure AD.
Po dokončení tohoto postupu byste měli mít následující:
- Server FHIR s cílovou skupinou nastavenou na
https://MYFHIRAPI.azurehealthcareapis.com, kdeMYFHIRAPIje název vašeho rozhraní API Azure pro instanci FHIR. - Registrace veřejné klientské aplikace. Poznamenejte si ID aplikace pro tuto klientskou aplikaci.
Nastavení souhlasu správce pro vaši aplikaci
Pokud chcete používat inteligentní na FHIR, musíte nejdřív ověřit a autorizovat aplikaci. Při prvním použití INTELIGENTNÍho zobrazení na FHIR musíte také získat souhlas správce, který aplikaci umožní přístup k prostředkům FHIR.
Pokud v aplikaci nemáte roli vlastnictví, obraťte se na vlastníka aplikace a požádejte ho o udělení souhlasu správce v aplikaci.
Pokud máte oprávnění pro správu, proveďte následující kroky, abyste přímo udělili souhlas správce. (Po zobrazení výzvy v aplikaci můžete také udělit souhlas správce později.) Stejný postup můžete provést, chcete-li přidat další uživatele jako vlastníky, aby mohli tuto registraci aplikace zobrazit a upravit.
Přidání sebe nebo jiného uživatele jako vlastníka aplikace:
- Na webu Azure Portal přejděte na Azure Active Directory.
- V nabídce vlevo vyberte Registrace aplikace.
- Vyhledejte registraci aplikace, kterou jste vytvořili, a pak ji vyberte.
- V nabídce vlevo v části Spravovat vyberte vlastníci.
- Vyberte Přidat vlastníky a pak přidejte sami sebe nebo uživatele, kterému chcete udělit souhlas správce.
- Vyberte Uložit.
Povolit proxy inteligentní na FHIR
Zaškrtněte políčko inteligentní na proxy serveru FHIR v nastavení ověřování pro instanci Azure API pro FHIR, a to tak, že zaškrtnete políčko inteligentní on FHIR proxy :

Povolení CORS
Vzhledem k tomu, že většina INTELIGENTNÍch aplikací v FHIR jsou jednostránkové aplikace JavaScriptu, musíte Povolit sdílení prostředků mezi zdroji (CORS) pro Azure API pro FHIR:

Konfigurace adresy URL odpovědi
Proxy inteligentní na FHIR funguje jako prostředník mezi aplikací SMART v FHIR a Azure AD. Ověřovací odpověď (ověřovací kód) musí místo samotné aplikace přejít na proxy inteligentní na FHIR. Proxy pak pošle odpověď do aplikace.
Z důvodu tohoto oboustranného přenosu ověřovacího kódu musíte nastavit adresu URL odpovědi (zpětného volání) pro vaši klientskou aplikaci Azure AD na adresu URL, která je kombinací adresy URL odpovědi pro inteligentní službu FHIR proxy serveru a adresu URL odpovědi pro aplikaci SMART on FHIR. Kombinovaná adresa URL odpovědi má tento formát:
https://MYFHIRAPI.azurehealthcareapis.com/AadSmartOnFhirProxy/callback/aHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9zYW1wbGVhcHAvaW5kZXguaHRtbA
V této odpovědi aHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9zYW1wbGVhcHAvaW5kZXguaHRtbA je verze adresy URL pro odpověď, která je v aplikaci FHIR zakódovaná pomocí kódování Base64, bezpečná. V případě spuštění aplikace SMART on FHIR, pokud je aplikace spuštěná místně, je adresa URL odpovědi https://localhost:5001/sampleapp/index.html .
Kombinovanou adresu URL odpovědi můžete vygenerovat pomocí skriptu podobného tomuto:
$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
Přidejte adresu URL odpovědi do aplikace veřejné klienta, kterou jste vytvořili dříve pro Azure AD:

Získat pacient testu
K otestování rozhraní API Azure pro FHIR a INTELIGENTNÍho proxy serveru FHIR budete muset mít v databázi aspoň jeden pacient. Pokud jste ještě nespolupracovali s rozhraním API a nemáte v databázi žádná data, přečtěte si téma přístup ke službě FHIR pomocí metody post pro načtení pacienta. Poznamenejte si ID konkrétního pacienta.
Stáhnout spouštěč aplikací SMART on FHIR
Open source Server FHIR pro úložiště Azure obsahuje jednoduchou inteligentní službu pro spouštěč aplikací FHIR a ukázku inteligentních aplikací FHIR. V tomto kurzu pomocí tohoto INTELIGENTNÍho spouštění ve Spouštěči FHIR otestujete instalaci.
můžete klonovat GitHub úložiště a přejít do aplikace pomocí těchto příkazů:
git clone https://github.com/Microsoft/fhir-server
cd fhir-server/samples/apps/SmartLauncher
Aplikace potřebuje několik nastavení konfigurace, která můžete nastavit v appsettings.json :
{
"FhirServerUrl": "https://MYFHIRAPI.azurehealthcareapis.com",
"ClientId": "APP-ID",
"DefaultSmartAppUrl": "/sampleapp/launch.html"
}
Doporučujeme použít tuto dotnet user-secrets funkci:
dotnet user-secrets set FhirServerUrl https://MYFHIRAPI.azurehealthcareapis.com
dotnet user-secrets set ClientId <APP-ID>
Pomocí tohoto příkazu spusťte aplikaci:
dotnet run
Testování proxy INTELIGENTNÍho rozhraní FHIR
Jakmile spustíte spouštěč aplikací SMART on FHIR, můžete nasměrovat prohlížeč na https://localhost:5001 , kde by se měla zobrazit následující obrazovka:

Když zadáte pacienty, zaznamenání nebo informace o specialistě , zjistíte, že je kontext spuštění aktualizovaný. Pokud používáte rozhraní API Azure pro FHIR, je kontext spuštění jednoduše dokumentem JSON, který obsahuje informace o pacientech, specialistech a dalších. Tento kontext spuštění je kódovaný v kódování Base64 a předává se do inteligentní aplikace FHIR jako launch parametr dotazu. Podle specifikace SMART on FHIR je tato proměnná neprůhledná pro aplikaci SMART on FHIR a předala se poskytovateli identity.
Proxy inteligentní na FHIR používá tyto informace k naplnění polí v odpovědi na token. Aplikace SMART on FHIR může tato pole použít k určení toho, pro který pacient žádá o data a jak vykreslí aplikaci na obrazovce. Proxy inteligentní na FHIR podporuje následující pole:
patientencounterpractitionerneed_patient_bannersmart_style_url
Tato pole jsou určena k poskytnutí pokynů pro aplikaci, ale neposkytují žádné informace o zabezpečení. Inteligentní aplikace FHIR je může ignorovat.
Všimněte si, že spouštěč INTELIGENTNÍch aplikací FHIR aktualizuje informace o adrese URL pro spuštění v dolní části stránky. Výběrem Spustit spusťte ukázkovou aplikaci a měli byste vidět něco jako v této ukázce:

Zkontrolujte odpověď tokenu a podívejte se, jak se do aplikace předávají Kontextová pole pro spuštění.
Další kroky
v tomto kurzu jste nakonfigurovali Azure Active Directory SMART on FHIR proxy. Pokud chcete prozkoumat použití INTELIGENTNÍch funkcí v aplikacích FHIR s rozhraním API Azure pro FHIR a open source FHIR serverem pro Azure, přečtěte si v části úložiště ukázek serveru FHIR na GitHub: