Я добавлю немного псевдокода ниже, но эта библиотека, по сути, является оболочкой и не имеет серверной части, поэтому вы определенно можете использовать ее для оболочки других серверов 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.