Как добавить пользовательский сегмент в существующую группу сообщений в хапи? - PullRequest
0 голосов
/ 17 октября 2018

В настоящее время я создаю 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 и т. Д.), Потому что тогда мне придется переписывать много кода.

...