Обзор 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.

Предварительные требования

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.

Чтобы использовать SMART on FHIR, необходимо сначала пройти проверку подлинности и авторизовать приложение. При первом использовании SMART на FHIR необходимо также получить административное согласие, чтобы разрешить приложению доступ к ресурсам FHIR.

Если у вас нет роли владельца в приложении, обратитесь к владельцу приложения и попросите его предоставить вам согласие администратора в приложении.

Если у вас есть права администратора, выполните следующие действия, чтобы предоставить согласие администратора напрямую. (Вы также можете предоставить согласие администратора себе позже при появлении запроса в приложении.) Вы можете выполнить те же действия, чтобы добавить других пользователей в качестве владельцев, чтобы они могли просматривать и изменять эту регистрацию приложения.

Чтобы добавить себя или другого пользователя в качестве владельца приложения, сделайте следующее:

  1. На портале Azure откройте Azure Active Directory.
  2. В меню слева выберите Регистрация приложений.
  3. Найдите созданную вами регистрацию приложения и выберите ее.
  4. В меню слева в разделе Управление выберите Владельцы.
  5. Выберите Добавить владельцев, а затем добавьте себя или пользователя, для которого требуется согласие администратора.
  6. Нажмите кнопку Сохранить.

Шаг 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 выступает в качестве посредника между приложением 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:

Снимок экрана: настройка URL-адреса ответа для общедоступного клиента.

Шаг 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. Откроется следующая страница:

Снимок экрана: средство запуска приложений SMART on FHIR.

После заполнения полей 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.