当前,我创建如下的PipeParser:
private PipeParser createPipeParser() {
final CanonicalModelClassFactory factory = new CanonicalModelClassFactory("2.5");
HapiContext context = new DefaultHapiContext(factory);
Parser parser = context.getPipeParser();
return (PipeParser) parser;
}
如果我正在处理类似ADT_A01之类的东西以获取段,则可以这样做(并切出一些异常检查代码):
final MSH msh = (MSH) ((Group) message).get("MSH");
这很好,并且已经工作了很长时间了。但是,现在我希望能够解析我创建的自定义细分。我的细分与Hapi网站上的本示例中引用的ZPI细分非常相似:https://hapifhir.github.io/hapi-hl7v2/xref/ca/uhn/hl7v2/examples/CustomModelClasses.html
但是,当我尝试对没有ZZZ段的消息执行message.get("ZZZ")
时,会收到以下错误消息:
ca.uhn.hl7v2.HL7Exception: ZZZ does not exist in the group ca.uhn.hl7v2.model.v25.message.ADT_A01
如果消息确实具有ZZZ段,并且我尝试将其强制转换为ZZZ,则会收到如下错误:
java.lang.ClassCastException: ca.uhn.hl7v2.model.GenericSegment cannot be cast to ca.uhn.hl7v2.custom.ZZZ
我在做什么错?如何将自定义细分与现有群组相关联?
编辑:由于我使用的是工厂,因此我意识到我的代码与示例稍有不同。我不想将GenericSegment用于预先存在的段(如MSH,PID等),因为那样我就不得不重写很多代码。