2016-09-27 12 views
1

terser 또는 happi API를 사용하여 비표준 메시지 세그먼트를 구문 분석 할 수 없습니다. 세그먼트 "PV2"는 구조가 여러 번 나타나는데, 하나는 비표준 세그먼트로, 하나는 메시지 구문 분석을위한 세그먼트입니다.HL7 Hapi가 표준 세그먼트에있는 세그먼트의 이름을 가져옵니다.

message.printStructure()를 사용한 후 다음 구조체 (샘플)가 표시됩니다.

ADT_A08 (start) 
MSH - MSH|^~\&|||||||ADT^A08||P|2.3|||| 
EVN - Not populated 
PID - PID|1||^^^&ISO~^^&~^^^  &ISO~^^^&||^||19230324|F||-1| ^^ BOXES^CA^81125|||||||| 
[ PD1 ] - PD1||||^^ 
[ { NK1 } ] - NK1|1|^|CH|| 
      NK1|2|^||| 
PV1 - PV1|1|I|^MC3706^1|C|||^^^|^^^|^^^|||||1|||^^^|IN||||||||||||||||||||||||||202308211705 
[ PV2 ] - Not populated 
[ { DB1 } ] - Not populated 
PROCEDURE (start) 
[{ 
    PR1 - Not populated 
    [ { ROL } ] - Not populated 
}] 
PROCEDURE (end) 
[ { GT1 } ] - GT1|1||^|| ^^^^|(408)-283-1928|||||SLF|828-46-4375||||INFORMATION UNAVAILABLE 
[ { PV22 } ] (non-standard) - PV2||ABC|^XYZ 
. 
. 
. 
ADT_A08 (end) 

PV2 비표준 세그먼트를 가져와야합니다. 나는 terser 또는 HAPI API를 사용하여 세그먼트 "PV22"의 값을 얻을 수 있어요. (그러나 사용 목적 등) 내가 "PV2"비표준 값은 단지 "PV2을 알고 어떻게해야합니까 어떻게

terser.get("/.PV22-3-2"); // outputs XYZ 

"세그먼트 이름으로 ???

terser.get("/.PV2-3-2"); // outputs null 

그러나 출력은 "PV22"의 사용으로 기대됩니다. 즉. 출력은 "XYZ"여야합니다. 어떻게 달성 할 수 있습니까 ?? 미리 감사드립니다. !!!!!!

답변

1

이유는 PV2 세그먼트가 원본 메시지에서 잘못된 위치에 있기 때문입니다. PV1 세그먼트 바로 다음에 있어야합니다.이 경우 PV1 세그먼트가 정상적으로 파싱됩니다.

메시지 끝에 있기 때문에 비표준 세그먼트로 구문 분석되고 HAPI는 표준 PV1 세그먼트와 구별하기 위해 끝에 "2"를 추가합니다.

+0

예. Group API는 이름이 이미 사용 된 경우 번호가 추가 될 수 있도록 지정합니다. 그러나 PV2가 RUNTIME에서 표준 또는 비표준인지 여부를 알고 싶습니다. 나는 PV22를 보여줍니다 AbstractGroup.getNonStandardNames()를 사용하여 비표준 세그먼트의 목록을 얻을 수 있지만 표준 또는 비표준에 관계없이 terser를 사용하여 PV2 값의 값을 얻고 싶습니다. terser.get ("/. PV2-3-2")의 사용과 마찬가지로 PV22를 지정하지 않습니다. –

1

James Agnew가 주인이기 때문에 그의 대답은 꽤 확실합니다. 나는 그가하는 것처럼 HL7이나 HAPI에 대해서 많이 알지 못합니다. 요점은 : 메시지가 비표준 인 경우 (끝 부분에 PV2가 붙어있는 것처럼) HAPI에서 원하는 모든 것을 얻을 수 없을 수도 있습니다. 그것은 마법이 아닙니다. AbstractGroup.getNonStandardNames()는 런타임에 PV22를 감지 할 수있는 충분한 액세스 권한을 제공하는 것으로 보입니다.이 상황에 맞는 사용자 정의 코드를 작성하면됩니다. 간결함은 저에게 표준과 밀접하게 연관된 메시지로 작업 할 수있는 편리한 프레임 워크를 좋아하는 것 같습니다. 준수 메시지가 적 으면 더 많은 작업을해야합니다.