针对对象计算Java中的FHIR表达式

针对对象计算Java中的FHIR表达式,java,hl7-fhir,hapi-fhir,fhir-resource,Java,Hl7 Fhir,Hapi Fhir,Fhir Resource,我是FHIR标准的新手,我需要一些帮助来了解如何针对对象计算ruleExpression 这是我的目标: @ResourceDef(name = "TestObj", profile = "http://hl7.org/fhir/StructureDefinition/TestObj") @Data public class TestObj extends DomainResource { private static final long se

我是FHIR标准的新手,我需要一些帮助来了解如何针对对象计算ruleExpression

这是我的目标:

@ResourceDef(name = "TestObj", profile = "http://hl7.org/fhir/StructureDefinition/TestObj")
@Data
public class TestObj extends DomainResource {

    private static final long serialVersionUID = 1L;
    
    @Child(name = "numMarbles")
    @Extension(url = "http://hl7.org/fhir/CustomExtension/numMarbles", definedLocally = true, isModifier = false)
    @Description(shortDefinition = "The number of marbles I have in my pocket")
    private IntegerType numMarbles;
}
我想知道如何对它进行规则评估。例如:

字符串ruleExp=“%numMarbles>3”

为了尝试选择。。我已经设置了以下集成测试:

@Test
void doRuleEval() throws Exception {
    TestObj t = new TestObj();
    t.setNumMarbles(4);
    
    String ruleExp = "%numMarbles > '3'";
    
    FhirPathR4 path = new FhirPathR4(fhirContext);
    
    // ?????
    Object something = path.evaluate(t, ruleExp, null);

    // Line above always fails: "unknown fixed constant %numMarbles"
    
    log.info("something: " + something.toString());
}
我浏览了FHIR文档,找不到java示例来说明如何根据FHIR模型评估动态规则。在Javascript库中,我们使用了“compile”方法,但我找不到等效的Java方法

我觉得我错过了一些基本的东西

“evaluate”方法没有文档记录-它接收一个“IBase”对象,我可以告诉它是任何FHIR对象,并返回某种列表。。。谁知道呢

FhirPathR4对象还包含一个“parse”方法,该方法不返回任何内容,也没有文档记录


感谢您提供的帮助或提示,为我指明了根据对象字段计算“ruleExpression”的正确方向。

我将进入HAPI FHIR谷歌小组,询问那里的计算方法。

欢迎使用堆栈溢出!这似乎并没有回答问题,我建议大家看一看。