Создание резолверов, работающих с внешним сервером FHIR - PullRequest
0 голосов
/ 04 августа 2020

Я изучаю эту библиотеку https://github.com/Asymmetrik/graphql-fhir

Она не содержит logi c о том, как реализовать преобразователи для стороннего FHIR-сервера.

Имеет кто-нибудь пытался это сделать?

1 Ответ

0 голосов
/ 05 августа 2020

Я добавлю немного псевдокода ниже, но эта библиотека, по сути, является оболочкой и не имеет серверной части, поэтому вы определенно можете использовать ее для оболочки других серверов FHIR. Резолверы GraphQL могут разрешать syn c или asyn c. Итак, если мы возьмем резолвер пациентов (https://github.com/Asymmetrik/graphql-fhir/blob/master/src/resources/4_0_0/profiles/patient/resolver.js), например, и захотим подключить его к стороннему серверу, например HAPI или другому серверу. Вы можете реализовать это так (псевдокод так непроверен):

module.exports.getPatient = function getPatient(root, args, context = {}, info) {
    // args contains the arguments in GraphQL format, note that these may
    // not map directly to another FHIR server for naming restriction reasons
    // e.g. fooBar in graphql might be foo-bar in REST
    
    // Make an HTTP request, use any http library, for example, fetch
    return fetch('some/fhir/server/patient', {
        method: 'post',
        body: JSON.stringify(args) // remember args may need to be mapped
      })
      .then(response => response.json())
      .then(results => {
        // Make sure the response matches what the resolver expects, in this
        // case, a single patient
        return results;
      });
};

Есть пример на https://github.com/Asymmetrik/graphql-fhir/blob/master/FAQ.md#resolvers, но он загружает местного пациента, вам просто нужно сделать HTTP-запрос на какой-то сторонний сервер и асинхронный возврат результатов. Для обработки ошибок обязательно ознакомьтесь с этим: https://github.com/Asymmetrik/graphql-fhir/blob/master/FAQ.md#resolvers.

...