Запись веб-приложения Azure для чтения данных FHIR в Azure API для FHIR
Внимание
Поддержка Azure API для FHIR будет прекращена 30 сентября 2026 г. Следуйте стратегиям миграции, чтобы перейти в службу FHIR® служб azure Health Data Services к этой дате. Из-за прекращения поддержки Azure API для FHIR с 1 апреля 2025 г. новые развертывания будут невозможны. Служба FHIR служб работоспособности Azure — это развивающаяся версия Azure API для FHIR, которая позволяет клиентам управлять службами FHIR, DICOM и MedTech с интеграцией с другими службами Azure.
Теперь, когда вы сможете подключиться к серверу FHIR и данным POST, вы можете написать веб-приложение, которое будет считывать данные FHIR. В этом заключительном шаге руководства мы рассмотрим написание и доступ к веб-приложению.
Создание веб-приложения
В Azure выберите действие Создать ресурс и вариант Веб-приложение. Обязательно присвойте веб-приложению то же имя, которое вы указали в URI перенаправления для клиентского приложения, или вернитесь к тому шагу и укажите новый URI перенаправления.
Когда веб-приложение станет доступно, щелкните Перейти к ресурсу. Справа, в разделе "Средства разработки", выберите Редактор службы приложений (предварительная версия) и Перейти. При нажатии кнопки "Перейти" откроется Редактор службы приложений. Щелкните правой кнопкой мыши серый пробел в разделе "Изучение " и создайте новый файл с именем index.html.
Включен код, который можно ввести в index.html. Вам потребуется обновить следующие элементы:
- clientId — обновите идентификатор клиентского приложения. Это будет тот же идентификатор, который вы получили при извлечении маркера.
- центр — обновление с идентификатором клиента Microsoft Entra
- FHIRendpoint — для параметра FHIRendpoint укажите имя службы FHIR.
- scopes — укажите полный URL-адрес аудитории.
<!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>
На этом этапе можно вернуться к ресурсу веб-приложения и открыть URL-адрес на странице общих сведений. Войдите, чтобы увидеть пациента Джеймса Тибериоз Кирка, который вы ранее создали.
Next Steps
Вы успешно развернули API Azure для FHIR, зарегистрировали общедоступное клиентское приложение, протестированный доступ и создали небольшое веб-приложение. На следующем шаге ознакомьтесь поддерживаемыми возможностями Azure API для FHIR.
FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешением HL7 .