【问题标题】:Search a FHIR server for a specific resource id在 FHIR 服务器中搜索特定资源 ID
【发布时间】:2016-06-21 07:46:15
【问题描述】:

我正在使用 Hapi FHIR DSTU2 HL7Org。在我的应用程序中,我需要创建一个 MedicationOrder 并提供更新/删除错误条目的可能性。我有创建的 MedicationOrder 的 id、patientId 等,但是用 where 子句编写代码是很成问题的。在我见过的所有例子中,像

这样的条目
where(Patient.FAMILY.matches().value("duck") 

礼物,但我得到 SP_PATIENT、SP_STATUS 等。

FhirContext ctx = FhirContext.forDstu2Hl7Org();
IGenericClient client = ctx.newRestfulGenericClient("http://fhirtest.uhn.ca/baseDstu2");
Bundle bundle = client.search().forResource(MedicationOrder.class).where(MedicationOrder.SP_PATIENT.equals("patientId")).returnBundle(Bundle.class).encodedXml().prettyPrint().execute();

上面的代码没有编译说“IQuery 类型中的方法 where(ICriterion) 不适用于参数 (boolean)”。我无法创建任何 IQuery 对象。

有人可以指导我如何进行吗?

【问题讨论】:

    标签: java hl7-fhir hapi dstu2-fhir


    【解决方案1】:

    这有点奇怪——DSTU2 HL7Org 结构是在我们尚未将所有模型特征从 HAPI 结构引入 HL7Org 结构的时候创建的。那些“非 SP”标准常量是我们没有复制的东西之一。

    好消息是,即使您使用的是 DSTU2-Hl7Org 结构,您仍然可以根据需要使用 DSTU2 或 DSTU3 结构中的结构。你可以这样做:

    FhirContext ctx = FhirContext.forDstu2Hl7Org();
    IGenericClient client = ctx.newRestfulGenericClient("http://fhirtest.uhn.ca/baseDstu2");
    Bundle bundle = client.search().forResource(MedicationOrder.class).where(ca.uhn.fhir.model.dstu2.resource.MedicationOrder.PATIENT.matches().value("duck")).returnBundle(Bundle.class).encodedXml().prettyPrint().execute();
    

    【讨论】:

    • 感谢@James Agnew。我认为资源 url 对于给定资源是唯一的,所以如果我更新/删除资源,where 子句应该包含它。但我看到可用的搜索参数中没有这样的东西。有什么解决方法吗?
    • 抱歉,我不确定我是否关注。您显示的代码用于搜索,而不是创建或删除。如果需要,您可以获取结果并删除它们。如果您尝试执行条件删除,在我们的文档页面here 上有一个示例,您可以执行相同类型的 where 子句。
    • 嗨,我的应用程序在远程 FHIR 服务器中创建 MedicationOrder 资源,并且还应该能够删除创建的资源。由于患者可以在不同的管理时间有多个订单,我认为使用 idPart 进行有条件删除是最好的。这是为了那个目的吗? client.delete().resourceById("MedicationOrder", "<logicalId>").encodedXml().prettyPrint().execute();
    • 这听起来像是有条件的删除。应该这样做:client.delete() .resourceConditionalByType("MedicationOrder") .where(MedicationOrder.PATIENT.hasId("123")) .execute();
    • 我们需要通过我们为标识符设置的值来搜索并删除它,而不是通过患者 ID,显然单个患者可以有多个药物订单。 MedicationOrder 只有像 SP_IDENTIFIER 这样的搜索参数,这样的条件会给出与原始问题相同的错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多