В настоящее время я создаю 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");
Это прекрасно работает и хорошо работает в течение длительного времени.Однако теперь я хочу иметь возможность анализировать созданный мной сегмент.Мой сегмент очень похож на сегмент ZPI, упомянутый в этом примере на сайте Hapi: https://hapifhir.github.io/hapi-hl7v2/xref/ca/uhn/hl7v2/examples/CustomModelClasses.html
Однако, когда я пытаюсь сделать message.get("ZZZ")
для сообщения, которое НЕ имеет сегмента 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 и т. Д.), Потому что тогда мне придется переписывать много кода.