Сопоставьте нестандартные данные 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% уверен, что даю вам данные для (ПРАВИЛЬНОГО) Джона Смита. Не недооценивайте эту проблему.