HL7 2.X 디스어셈블러의 스키마 결정
HL7 2.X 메시지에는 MSH(헤더 세그먼트) 뒤에 여러 본문 세그먼트와 선택적 Z 세그먼트 수가 포함됩니다. MSH에는 21개의 필드가 포함되어 있습니다.
메시지가 도착하면 2.X 엔진은 헤더를 읽고 메시지 본문을 구문 분석하는 데 사용할 스키마를 결정합니다. 다음과 같은 이벤트 시퀀스가 발생합니다.
디스어셈블러는 MSH3(원본 파티) 값을 읽어 다음 유효성 검사 옵션을 확인합니다.
본문에 대한 XML 유효성 검사를 수행할지 여부
본문 데이터의 사용자 지정 데이터 형식 필드의 유효성을 검사할지 여부
본문에서 후행 구분 기호를 허용할지 여부
본문 스키마의 대상 네임스페이스 정의(TargetNS)
그런 다음 디스어셈블러는 MSH9 및 MSH12를 읽어 본문의 루트 노드 이름을 확인합니다. 알고리즘은 다음과 같습니다.
Body schema type = TargetNS + "#" + MSH9.1 + MSH9.2 + MSH12.1 (with dots removed) + MSH12.2 (or GLO if the value is blank) + MSH12.3 (or DEF if the value is blank)
Microsoft BizTalk Accelerator for HL7(BTAHL7)은 항상 메시지 헤더에서 후행 구분 기호를 허용합니다. 엔진은 각 줄의 처음 세 문자인 세그먼트 식별자를 검사합니다. 본문 스키마가 정의하는 모든 세그먼트에 대해 XML을 계속 생성합니다. 정의되지 않은 세그먼트가 발견되면 해당 세그먼트를 Z 세그먼트로 처리합니다. 이 시점부터 정의되지 않은 모든 세그먼트는 메시지의 Z 부분을 구성합니다. 다음 MSH는 이 메시지의 끝을 표시합니다. 일괄 처리 메시지의 경우 다음 MSH 또는 BTS(일괄 처리 트레일러 세그먼트 태그)는 메시지의 끝을 표시합니다. Z 세그먼트는 스키마에서 선언되지 않은 세그먼트만 포함할 수 있습니다. 선언된 세그먼트가 발생하는 것은 오류입니다.