Skriva Azure-webbprogram för att läsa FHIR-data i Azure API för FHIR
Viktigt!
Azure API för FHIR avvecklas den 30 september 2026. Följ migreringsstrategierna för att övergå till Azure Health Data Services FHIR-tjänsten® senast det datumet. På grund av tillbakadragandet av Azure API för FHIR tillåts inte nya distributioner från och med den 1 april 2025. Azure Health Data Services FHIR-tjänsten är den utvecklade versionen av Azure API för FHIR som gör det möjligt för kunder att hantera FHIR-, DICOM- och MedTech-tjänster med integreringar i andra Azure-tjänster.
Nu när du kan ansluta till FHIR-servern och POST-data är du redo att skriva ett webbprogram som läser FHIR-data. I det här sista steget i självstudien går vi igenom hur du skriver och kommer åt webbprogrammet.
Skapa webbprogram
I Azure väljer du Skapa en resurs och sedan Webbapp. Se till att namnge webbprogrammet vad du har angett i omdirigerings-URI:n för klientprogrammet eller gå tillbaka och uppdatera omdirigerings-URI:n med det nya namnet.
När webbprogrammet är tillgängligt går du till resursen. Välj App Service-redigeraren (förhandsversion) under Utvecklingsverktyg till höger och välj sedan Gå. Om du väljer Go öppnas App Service-redigeraren. Högerklicka i det grå utrymmet under Utforska och skapa en ny fil med namnet index.html.
Inkluderad är den kod som du kan mata in i index.html. Du måste uppdatera följande objekt:
- clientId – Uppdatera med ditt klientprogram-ID. Det här ID:t är samma ID som du hämtade när du hämtade din token
- authority – Uppdatera med ditt Microsoft Entra-klient-ID
- FHIRendpoint – Uppdatera FHIRendpoint för att ha ditt FHIR-tjänstnamn
- scopes – Uppdatera för att återspegla den fullständiga URL:en för din målgrupp
<!DOCTYPE html>
<html>
<head>
<title>FHIR Patient browser sample app</title>
<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.0/js/msal.js"></script>
</head>
<body>
<div class="leftContainer">
<p id="WelcomeMessage">Welcome to the FHIR Patient browsing sample Application</p>
<button id="SignIn" onclick="signIn()">Sign In</button>
</div>
<div id="patientTable">
</div>
<script>
var msalConfig = {
auth: {
clientId: '<CLIENT-ID>',
authority: "https://login.microsoftonline.com/<AZURE-AD-TENANT-ID>"
},
cache: {
cacheLocation: "localStorage",
storeAuthStateInCookie: true
}
}
var FHIRConfig = {
FHIRendpoint: "https://<FHIR-SERVER-NAME>.azurehealthcareapis.com"
}
var requestObj = {
scopes: ["https://<FHIR-SERVER-NAME>.azurehealthcareapis.com/user_impersonation"]
}
function authRedirectCallBack(error, response) {
if (error) {
console.log(error);
} else {
if (response.tokenType === "access_token") {
callFHIRServer(FHIRConfig.FHIRendpoint + '/Patient', 'GET', null, response.accessToken, FHIRCallback);
}
}
}
var myMSALObj = new Msal.UserAgentApplication(msalConfig);
myMSALObj.handleRedirectCallback(authRedirectCallBack);
function signIn() {
myMSALObj.loginPopup(requestObj).then(function (loginResponse) {
showWelcomeMessage();
acquireTokenPopupAndCallFHIRServer();
}).catch(function (error) {
console.log(error);
})
}
function showWelcomeMessage() {
var divWelcome = document.getElementById('WelcomeMessage');
divWelcome.innerHTML = "Welcome " + myMSALObj.getAccount().userName + " to FHIR Patient Browsing App";
var loginbutton = document.getElementById('SignIn');
loginbutton.innerHTML = 'Sign Out';
loginbutton.setAttribute('onclick', 'signOut()')
}
function signOut() {
myMSALObj.logout();
}
function acquireTokenPopupAndCallFHIRServer() {
myMSALObj.acquireTokenSilent(requestObj).then(function (tokenResponse) {
callFHIRServer(FHIRConfig.FHIRendpoint + '/Patient', 'GET', null, tokenResponse.accessToken, FHIRCallback);
}).catch(function (error) {
console.log(error);
if (requiresInteraction(error.errorCode)) {
myMSALObj.acquireTokenPopup(requestObj).then(function (tokenResponse) {
callFHIRServer(FHIRConfig.FHIRendpoint + '/Patient', 'GET', null, tokenResponse.accessToken, FHIRCallback);
}).catch(function (error) {
console.log(error);
})
}
});
}
function callFHIRServer(theUrl, method, message, accessToken, callBack) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200)
callBack(JSON.parse(this.responseText));
}
xmlHttp.open(method, theUrl, true);
xmlHttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xmlHttp.setRequestHeader('Authorization', 'Bearer ' + accessToken);
xmlHttp.send(message);
}
function FHIRCallback(data) {
patientListHtml = '<ol>';
data.entry.forEach(function(e) {
patientListHtml += '<li>' + e.resource.name[0].family + ', ' + e.resource.name[0].given + ' (' + e.resource.id + ')';
});
patientListHtml += '</ol>';
document.getElementById("patientTable").innerHTML = patientListHtml;
}
</script>
</body>
</html>
Härifrån kan du gå tillbaka till webbprogramresursen och öppna URL:en som finns på sidan Översikt. Logga in för att se patienten James Tiberious Kirk som du skapade tidigare.
Nästa steg
Du har distribuerat Azure API för FHIR, registrerat ett offentligt klientprogram, testat åtkomst och skapat ett litet webbprogram. Ta en titt på funktionerna i Azure API för FHIR som stöds som ett nästa steg.
FHIR® är ett registrerat varumärke som tillhör HL7 och används med tillstånd av HL7.