Сопоставьте нестандартные данные JSON из REST API в FHIR

В настоящее время я создаю "мост" REST API, к которому не подключена база данных, и я хотел преобразовать ответ JSON из другого API, преобразовать его в FHIR, а затем передать его клиенту, который его запрашивает.

Из-за подробных требований к реализации самого FHIR я подумал использовать node-fhir-server-coreсделать это. Где реализовать функции сопоставления не-FHIR-to-FHIR? Можно ли использоватьnode-fhir-server-core? Если это не так, как реализовать проверку / поддержку FHIR с помощью простогоexpress заявление?

1 ответ

Укороченная версия:

Вам нужно выяснить, поддерживает ли https://github.com/Asymmetrik/node-fhir-server-core то, что

Сервер Hapi Fhir вызывает "простой сервер":: https://hapifhir.io/hapi-fhir/docs/server_plain/introduction.html

а Вонк называет "фасадом":: https://fire.ly/products/vonk/vonk-fhir-facade/

На их диаграмме (ниже... в правом нижнем углу) я вижу "Поставщики ресурсов", но я не уверен, является ли это "ваш пользовательский поставщик ресурсов" или "наш (асимметричный) встроенный поставщик ресурсов".

Я просмотрел их документацию и не нашел ничего о том, "как реализовать свой собственный поставщик ресурсов". (Я начал здесь и немного покопался). https://github.com/Asymmetrik/node-fhir-server-core/blob/master/docs/GettingStarted.md

Но, надеюсь, эти хлебные крошки для того, что другие называют такого рода настройками... помогут вашему поиску.

Если найдете что-то конкретное, сообщите, пожалуйста, мне самому любопытно.

Но с hapi или vonk у вас будет настройка сервера fhir, он будет получать запросы (обычно GET), переводить запрос на ваш (другой) внутренний REST-сервер... возвращать данные, конвертировать их в fhir (обычно r4 на данный момент) ресурс........ и он будет отправлен конечному клиенту. В двух словах, шаблон проектирования "адаптер".

Более длинная версия:

Если вы "собираете" данные в свою собственную базу данных, это нормально. Затем вы настроите сервер fhir для предоставления этих данных. "Обычный сервер" Hapi Fhir или фасадный паттерн Vonk (платный продукт) - это пути, по которым эти данные будут открываться внешнему миру. Вы возьмете свой проприетарный объект, конвертируете его в fhir объекты и выставите.

Вариант 2. Поскольку у вас новый код, вы можете попытаться сохранить данные КАК ОБЪЕКТЫ FHIR в хранилище данных (db или nosql). А затем вы открываете эти объекты внешнему миру.

FHIR - это....... обычная хорошо известная объектная модель. "Язык" медицинской беседы.

Моя личная метафора такова... "как будто все начинают говорить по-английски друг с другом, НО это больше похоже на то, что кто-то говорит на американском английском, а кто-то говорит на британском". Я имею в виду... это не всегда идеально. Бывают редкие случаи, когда болтовня не идеальна. Но это близко. И это намного лучше, чем иметь переводчика для всего.

Если вы читали эту статью (ниже) о "простом сервере" (простом сервере fhir) (речь идет о преобразовании ваших СУЩЕСТВУЮЩИХ проприетарных данных в ресурсы fhir)

https://hapifhir.io/hapi-fhir/docs/server_plain/introduction.html

vs (то, что hapi называет "jpa", но в целом это универсальный сервер fhir

https://hapifhir.io/hapi-fhir/docs/server_jpa/introduction.html

......

Вы начнете видеть различные варианты настройки сервера fhir.

Если у вас пустое хранилище данных (база данных, nosql и т. Д.), Существует несколько вариантов настройки сервера fhir.

Хапи Fhir + хранилище данных с поддержкой JPA.

MS Fhir Server (с открытым исходным кодом) с использованием CosmoDB или Sql Server.

(Платный продукт) Вонк "полный" сервер.

"Spark" - это более старый (но открытый) сервер fhir.

........

Однако большинство людей не могут начать с чистого листа данных.

Тогда у вас есть несколько вариантов.

Hapi Fhir, где вы пишете реализации для IResourceProvider (где вы должны писать PatientResourceProvider, (любые / большинство других ресурсов Fhir) ... и т. Д. И т. Д.

Vonk (платный продукт) имеет ту же концепцию, которую они называют Facade Pattern.

.......

Прямо сейчас я не знаю гибридов. Вы должны выбрать один или другой (хранилище данных с чистого листа ИЛИ шаблон адаптера / iresourceprovider / фасада.

........

Хорошо, если вы хотите создать fhir-сервер.

........

Вы можете просто захотеть использовать чужой fhir сервер. Затем вы хотите посмотреть на "fhir клиенты", чтобы работать с кем-нибудь другим fhir server.

у хапи есть первый клиент

https://hapifhir.io/hapi-fhir/docs/client/introduction.html

наверное есть и другие.

.........

Теперь о вашем конкретном выборе.

Вероятно, вы НЕ хотите поддерживать объектную модель. Вы хотите повторно использовать работу других, кто создал объектные модели.

https://www.nuget.org/packages/Hl7.Fhir.R4/2.0.0-beta1

Firely (компания, стоящая за Vonk) предоставляет библиотеку объектов dotnet с открытым исходным кодом. hapi имеет библиотеку объектов Java.

вам следует выбрать язык, на котором можно использовать эти многократно используемые библиотеки объектов. если у python он есть, то я думаю, вы можете использовать python. лично я бы не стал. я бы остался с dotnet-core (который имеет открытый исходный код) или java. может быть библиотека объектной модели python fhir, но если ее нет... я бы не стал выбирать python. Слишком сложно имитировать весь этот библиотечный материал.
.........

Вот некоторые общие точки начала документации.

https://hapifhir.io/hapi-fhir/docs/model/working_with_resources.html

(возьмите приведенную ниже информацию по ссылкам... с долей скепсиса, часть информации устарела)

https://wiki.hl7.org/Open_Source_FHIR_implementations

https://wiki.hl7.org/Publicly_Available_FHIR_Servers_for_testing

https://en.wikipedia.org/wiki/Fast_Healthcare_Interoperability_Resources

.......

Личные мысли.

Я бы выбрал dotnet-core или java для проектов fhir. Опять же, найдите более зрелые языки в fhir (прямо сейчас, а не на будущее).

Вещи, о которых не все говорят:

Когда вы предоставляете данные, относящиеся к конкретному пациенту (иначе говоря, не агрегированные), вы должны думать о проблеме сопоставления пациентов. Нельзя просто сказать "вот наблюдения". Вы должны иметь возможность сказать: "Вот наблюдения пациента" Джон Смит "", и я на 99,9999% уверен, что даю вам данные для (ПРАВИЛЬНОГО) Джона Смита. Не недооценивайте эту проблему.

Другие вопросы по тегам