Платформа взаимодействия FHIR выбрать

Я хочу создать совместимость платформы FHIR с соблюдением сложной бизнес-логики.

Наши клиенты могут отправлять ресурсы FHIR на платформу.

Лучшая архитектура согласно документации по передовой практике - это система ibrid FHIR + SOA, как говорится в этой ссылке.

Теперь я напишу два примера сценария, которым должен управлять:

Первое:

Я хочу создать ресурс ServiceRequest с темой, в которой я знаю только фискальный код в качестве идентификатора. Если мне нужна другая информация по теме, я могу запросить внешнюю базу данных, например, чтобы узнать имя, фамилию и другие.

Я могу сделать это, отправить на мою платформу взаимодействия только запрос на обслуживание, как указано ниже?

"resourceType" : "ServiceRequest",
"subject" : {
     "reference" : "Patient?identifier=FISCALCODE"
 }

и так далее

Второй:

Я хочу создать ресурс ServiceRequest со связанным человеком, связанным в теге запрашивающего.

Связанное лицо не является полностью реестром, я знаю только имя и фамилию и ссылку на пациента.

Я должен создать метод SOA createServiceRequestгде я должен передать два параметра ServiceRequest и RelatedPerson? Или я могу использовать метод CRUD для ресурса Bundle, где я помещаю в качестве записей свои ServiceRequest и свое связанное лицо?

Итак, если я попытаюсь подвести итог, возможные способы:

  1. Создайте метод createMyMethodName(ServiceRequest serviceRequest, RelatedPerson relatedPerson)

    • Создание и распространение этого метода является ли это стандартом FHIR?
    • Если ответ первой точки запроса - ДА, на моей платформе у меня будет много настраиваемых методов, но у меня очень строгий контроль над входной информацией.
  2. Используйте метод CRUD Bundle, в котором я передаю в ресурс Bundle следующие записи: ServiceRequest, RelatedPerson

    • Таким образом, я предоставляю только один метод для записи на моей платформе, но я должен реализовать много кода для управления всеми входными пакетами с несколькими разными записями (я предполагаю, что это мегапереключатель, а затем для каждой ветви я применяю элементы управления бизнес-логикой к выполнять мои правила бизнес-логики)

1 ответ

Решение

Этот ответ не является полным ответом на ваш вопрос и исходит с точки зрения США; тем не менее, вы можете найти эту перспективу полезной.

Попался с запросами идентификаторов

"reference" : "Patient?identifier=FISCALCODE"

Как написано, ваш ?identifier=FISCALCODE запросит FISCALCODEключ против всех кодовых систем. Я думаю, что вы хотите указать систему кода, например?identifier=<CodeSystem>|<FiscalCode>Это распространенная ошибка, которая скрыта в документации по поиску FHIR.

Вам нужно будет либо сослаться на существующую систему кодов, например, руководство по реализации для Италии, аналогичное US Core, которое содержит список FiscalCodes, либо создать свою собственную.

Какую парадигму интеграции FHIR вы используете?

Прежде чем углубиться в вопрос createMethod vs Bundle, я думаю, было бы полезно сделать шаг назад и выбрать общий подход к интеграции FHIR.

На мой взгляд, есть три основных подхода:

  • Загрузить данные в существующий автономный сервер FHIR
    • Проблема: дрейф между данными, загруженными на сервер FHIR, и другими хранилищами данных
  • Сервер FHIR запрашивает не-FHIR API
    • Проблема: дублирование между FHIR API и не FHIR API
    • NB: В предельном случае данные не хранятся на самом сервере FHIR. Кроме того, некоторые назовут эту реализацию "шлюзом FHIR", а не "сервером FHIR".
  • Сервер FHIR запрашивает промежуточную базу данных для данных FHIR
    • Задача: необходимо записывать доступ к данным для каждого ресурса FHIR и каждого элемента данных.

В будущем может появиться четвертый подход, в котором язык отображения FHIR будет использоваться в реальном времени от промежуточной исходной модели к нескольким целевым объектам.

Ваш "CRUD Bundle method" больше соответствует POSTing данных на автономный сервер FHIR, тогда как ваш createMyMethodName больше соответствует записи DAO (объектов доступа к данным) во внешнюю базу данных.

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

В пределах, когда у вас уже есть сопоставления с промежуточной моделью данных (в США многие крупные поставщики услуг будут иметь сопоставления либо с USCDI, либо с общим набором клинических данных), вам будет легче писать CRUD на сервере FHIR против существующая база данных.

Для более глубокого обсуждения на FHIR Dev Days 2018, начиная со слайда 21, был разговор о шаблонах интеграции FHIR. Обратите внимание, что автор предполагает знакомство с архитектурными образцами, такими как узор фасада.

Выберите автономный сервер или библиотеку

Если у вас нет убедительных требований или вы не являетесь крупной компанией, рекомендуется использовать существующий автономный сервер с открытым исходным кодом или реализацию библиотеки. Три самых популярных:

  • HAPI-FHIR (Java)
  • Microsoft (.NET)
  • IBM (Java)

Если выбрать автономный вариант, популярные коммерческие серверы FHIR

  • Microsoft (размещено в Azure)
  • Smile CDR (коммерческая версия HAPI-FHIR)
  • Firely Vonk
Другие вопросы по тегам