Обзор SMART on FHIR
Substitutable Medical Applications and Reusable Technologies (SMART on FHIR) — это стандарт здравоохранения, по которому приложения могут получать доступ к клинической информации через хранилище данных. Он добавляет уровень безопасности на основе открытых стандартов, включая OAuth2 и OpenID Connect, в интерфейсы FHIR, чтобы обеспечить интеграцию с системами EHR. Использование SMART on FHIR обеспечивает по крайней мере три важных преимущества:
- Приложения имеют известный метод для получения проверки подлинности и авторизации в репозитории FHIR.
- Пользователи, обращаюющиеся к репозиторию FHIR с помощью SMART on FHIR, ограничены ресурсами, связанными с пользователем, а не имеют доступ ко всем данным в репозитории.
- Пользователи могут предоставлять приложениям доступ к еще более ограниченному набору данных с помощью клинических областей SMART.
В приведенных ниже руководствах описаны шаги по включению приложений SMART on FHIR с помощью службы FHIR.
Предварительные требования
- Экземпляр службы FHIR
- Пакет SDK для .NET версии 6.0
- Включение общего доступа к ресурсам независимо от источника (CORS)
- Регистрация общедоступного клиентского приложения в Azure AD
- После регистрации приложения запишите значение applicationId для клиентского приложения.
- Убедитесь, что у вас есть доступ к подписке Azure службы FHIR, чтобы создавать ресурсы и добавлять назначения ролей.
SMART on FHIR с использованием примеров AHDS OSS (SMART on FHIR(Enhanced))
Шаг 1. Настройка роли пользователя FHIR SMART
Выполните действия, перечисленные в разделе Управление пользователями: назначение пользователей роли. Любой пользователь, добавленный к роли " FHIR SMART User", сможет получить доступ к службе FHIR, если его запросы соответствуют руководству по реализации SMART on FHIR, например запрос с маркером доступа, который включает утверждение fhirUser и утверждение клинических областей. Доступ, предоставленный пользователям в этой роли, будет ограничен ресурсами, связанными с их отсеком fhirUser, и ограничениями в клинических областях.
Шаг 2. Интеграция сервера FHIR с примерами
Выполните действия, описанные в разделе Azure Health Data Services Samples OSS . Это позволит интегрировать сервер FHIR с другими службами Azure (например, APIM, функциями Azure и т. д.).
Примечание
Примеры представляют собой код с открытым исходным кодом, и перед его использованием следует ознакомиться с информацией и условиями лицензирования на сайте GitHub. Они не входят в службу данных о работоспособности Azure и не поддерживаются служба поддержки Майкрософт. Эти примеры можно использовать для демонстрации совместного использования служб Azure Health Data Services и других средств с открытым кодом для демонстрации соответствия требованиям ONC (g)(10), используя Azure Active Directory в качестве рабочего процесса поставщика удостоверений.
Прокси-сервер SMART on FHIR
Щелкните, чтобы развернуть!
Примечание
Это еще один вариант smart on FHIR (Enhanced), упомянутый выше. Параметр прокси-сервера SMART on FHIR включает только последовательность запуска EHR.
Шаг 1. Настройка согласия администратора для клиентского приложения
Чтобы использовать SMART on FHIR, необходимо сначала пройти проверку подлинности и авторизовать приложение. При первом использовании SMART на FHIR необходимо также получить административное согласие, чтобы разрешить приложению доступ к ресурсам FHIR.
Если у вас нет роли владельца в приложении, обратитесь к владельцу приложения и попросите его предоставить вам согласие администратора в приложении.
Если у вас есть права администратора, выполните следующие действия, чтобы предоставить согласие администратора напрямую. (Вы также можете предоставить согласие администратора себе позже при появлении запроса в приложении.) Вы можете выполнить те же действия, чтобы добавить других пользователей в качестве владельцев, чтобы они могли просматривать и изменять эту регистрацию приложения.
Чтобы добавить себя или другого пользователя в качестве владельца приложения, сделайте следующее:
- На портале Azure откройте Azure Active Directory.
- В меню слева выберите Регистрация приложений.
- Найдите созданную вами регистрацию приложения и выберите ее.
- В меню слева в разделе Управление выберите Владельцы.
- Выберите Добавить владельцев, а затем добавьте себя или пользователя, для которого требуется согласие администратора.
- Нажмите кнопку Сохранить.
Шаг 2. Включение прокси-сервера SMART on FHIR
При использовании SMART on FHIR для Audience
требуется идентификатор URI, совпадающий с URI службы FHIR. В стандартной конфигурации Azure API для FHIR для Audience
задано значение https://azurehealthcareapis.com
. Однако вы можете изменить это значение на соответствующее конкретному URL-адресу вашей службы FHIR (например, https://MYFHIRAPI.azurehealthcareapis.com
). Это необходимо при работе с прокси-сервером SMART on FHIR.
Чтобы включить прокси-сервер SMART on FHIR в параметрах проверки подлинности для экземпляра Azure API для FHIR, установите флажок SMART on FHIR proxy проверка:
Прокси-сервер SMART on FHIR выступает в качестве посредника между приложением SMART on FHIR и Azure AD. Ответ проверки подлинности (код проверки подлинности) должен поступать на прокси-сервер SMART on FHIR, а не в само приложение. Затем прокси-сервер переадресует ответ приложению.
Из-за такой двухэтапной ретрансляции кода проверки подлинности в качестве URL-адреса ответа (обратный вызов) для клиентского приложения Azure AD необходимо задать URL-адрес, который представляет собой комбинацию URL-адреса ответа для прокси-сервера SMART on FHIR и URL-адреса ответа для приложения SMART on FHIR. Комбинированный URL-адрес выглядит следующим образом:
https://MYFHIRAPI.azurehealthcareapis.com/AadSmartOnFhirProxy/callback/aHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9zYW1wbGVhcHAvaW5kZXguaHRtbA
В этом ответе aHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9zYW1wbGVhcHAvaW5kZXguaHRtbA
является безопасной версией URL-адреса ответа в кодировке base64 для приложения SMART on FHIR. Для средства запуска приложения 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
Добавьте URL-адрес ответа в общедоступное клиентское приложение, созданное ранее для Azure AD:
Шаг 3. Получение тестового пациента
Чтобы проверить функционирование Azure API для FHIR и прокси-сервера SMART on FHIR, в базе данных должны иметься данные хотя бы одного пациента. Если вы еще не взаимодействовали с API и у вас нет данных в базе данных, см. статью Доступ к службе FHIR с помощью Postman для загрузки пациента. Запишите идентификатор конкретного пациента.
Шаг 4. Скачивание средства запуска приложений SMART on FHIR
Сервер FHIR с открытым исходным кодом для хранилища Azure содержит простое средство запуска приложений 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
. Откроется следующая страница:
После заполнения полей Patient (Пациент), Encounter (Прием) или Practitioner (Врач-практик) содержимое раздела Launch context (Контекст запуска) будет обновлено. При использовании Azure API для FHIR контекст запуска представляет собой простой документ JSON, содержащий информацию о пациенте, практикующем враче и т. д. Этот контекст запуска кодируется с использованием base64 и передается в приложение SMART on FHIR в качестве параметра запроса launch
. В соответствии со спецификацией SMART on FHIR эта переменная непрозрачна для приложения SMART on FHIR и передается поставщику удостоверений.
Прокси-сервер 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.