2011-12-19 7 views
4

NHapi에서 messageType (MSH # 9)이 무엇인지 모르는 경우 어떻게 구문 분석 할 수 있습니까?선험적 메시지 유형 지식없이 HL7 구문 분석

var parser = new NHapi.Base.Parser.PipeParser(); 

IMessage parsedMessage = parser.Parse(SampleMessage); 

parsedMessage는 런타임에 NHapi.Base.Model.GenericMessage.V25 내가 다음 다시 구문 분석 (?) 그 메시지 유형으로 메시지를 메세지 유형 필드를 읽고하는 MSH 헤더에 읽을 수없는 것.

문서 및 예제가 부족하여 좌절감을 느낍니다. 아마도 나는 아주 멀어졌습니다. 나는 HL7을 처음 접했을 때까지 HL7 사양을 잘 이해하고 있다고 생각했습니다.

답변

8

parsedMessage.GetStructureName()은 메시지 유형 및 트리거 이벤트를 제공합니다. parser.Encode(parsedMessage)은 파이프로 구분 된 형식으로 메시지를 돌려줍니다.

다음 코드는 메시지 유형을 가져 오는 방법과 원래 메시지를 파이프 형식으로 가져 오는 방법을 보여줍니다.

public static String ParseMessage(String message) 
{ 
    var parser = new NHapi.Base.Parser.PipeParser(); 
    var parsedMessage = parser.Parse(message); 

    //Get the message type and trigger event 
    var msgType = parsedMessage.GetStructureName(); 

    //Get the message in raw, pipe-delimited format 
    var pipeDelimitedMessage = parser.Encode(parsedMessage); 

    return pipeDelimitedMessage; 
} 

좋은 시작 코드는 hapi examples site에서 찾을 수 있습니다.

+0

안녕하세요. 마이크. 응답 해 주셔서 감사합니다. 'parser.Parse (SampleMessage) .GetStructureName();을 사용할 때 SampleMessage의 내용을 기반으로 ORMO01과 관련된 내용을보고 싶지만 "GenericMessage + V25"만 얻습니다. –

+1

샘플 신원 확인 메시지 (예 : 실제 환자 데이터가없는 메시지)를 제공 할 수 있습니까? 인바운드 메시지의 구문 분석 오류가 있고 제대로 들어오지 않을 수 있습니다. 또한 프로젝트에서 NHapi.Model.V25 어셈블리가 참조되어 있습니까? V25 어셈블리에 대한 참조를 제거하면 같은 메시지 유형을 얻게됩니다. –

+0

안녕하세요, 마이크 - 누락 된 참조입니다. 나는 모델이 어떻게 작동하는지 이해하지 못했습니다. 2.51이 있었지만 2.5는 없었습니다. 나는 그들이 이전 버전과 호환 가능하다고 생각했다. 추가 모델 dll을 추가하면 작동합니다. 감사. –