首页 > 解决方案 > 如何使用 Hl7.Fhir.Rest 客户端搜索 HealthCareService 的

问题描述

我对 FHIR 完全陌生,偶然发现了这个 NuGet 包“Hl7.Fhir.STU3”,并想用它来搜索此处定义的医疗保健服务:https ://digital.nhs.uk/developer/api-catalogue/ e-referral-service-fhir#api-Default-a010-patient-service-search

到目前为止,我的代码有限,并且知道我需要通过某种形式的搜索条件,但不知道如何继续。我从 NHS 客户那里得到的只是:

“根对象没有类型指示 (resourceType),因此不能用于构造 FhirJsonNode。或者,使用参数指定 nodeName。”

我的代码是:

var settings = new FhirClientSettings
        {
            Timeout = 10,
            PreferredFormat = ResourceFormat.Json,
            PreferredReturn = Prefer.ReturnMinimal,
        };

        var client = new FhirClient("https://sandbox.api.service.nhs.uk/referrals/FHIR/STU3/HealthcareService/$ers.searchHealthcareServicesForPatient", settings);
        client.RequestHeaders.Add("Authorization", "Bearer g1112R_ccQ1Ebbb4gtHBP1aaaNM");
        client.RequestHeaders.Add("nhsd-ers-ods-code", "R69");
        client.RequestHeaders.Add("nhsd-ers-business-function", "REFERRING_CLINICIAN");
        client.RequestHeaders.Add("X-Correlation-Id", Guid.NewGuid().ToString());

        var services = client.Search<HealthcareService>();

我真的很感激任何帮助。

标签: hl7-fhir

解决方案


您设置为 FHIR 服务器端点的 URL 实际上是操作调用的 URL,因此这不起作用。如果将服务器 URL 设置为"https://sandbox.api.service.nhs.uk/referrals/FHIR/STU3/",则应该可以使用 FhirClient 进行操作调用:

// Note that you have to send parameters in with your request, so set them up first:
var params = new Parameters();
params.Add("requestType", new Coding("https://fhir.nhs.uk/STU3/CodeSystem/eRS-RequestType-1", "APPOINTMENT_REQUEST"));
// etc...

var result = c.TypeOperation<HealthcareService>("ers.searchHealthcareServicesForPatient", params);

原始 url 中的 $ 符号不是操作名称的一部分,所以我在请求中省略了它。FhirClient 将在传出请求中添加 $。


推荐阅读