MHV7BUS ;WAS/GPM - HL7 BUILDER UTILITIES - SEGMENTS ; 1/21/08 8:28pm ;;1.0;My HealtheVet;**2**;Aug 23, 2005;Build 22 ;;Per VHA Directive 2004-038, this routine should not be modified. ; ; Segment builders common to multiple messages. ; Message builders with message specific segments will contain ; those message specific segment builders. Examples would be the ; RDF for RTB^K13 messages or the PID for the ADR^A19. ; Q ; MSA(MID,ERROR,HL) ;build MSA segment N MSA,ACK S ACK=$P(ERROR,"^",5) I ACK="" S ACK="AA" S MSA(0)="MSA" S MSA(1)=ACK ;ACK code S MSA(2)=MID ;message control ID S MSA(3)=$$ESCAPE^MHV7U($P(ERROR,"^",6),.HL) ;text message Q $$BLDSEG^MHV7U(.MSA,.HL) ; ERR(ERROR,HL) ;build ERR segment N ERR S ERR(0)="ERR" S ERR(1,1,1)=$P(ERROR,"^",1) ;segment S ERR(1,1,2)=$P(ERROR,"^",2) ;sequence S ERR(1,1,3)=$P(ERROR,"^",3) ;field S ERR(1,1,4,1)=$P(ERROR,"^",4) ;code S ERR(1,1,4,2)=$$ESCAPE^MHV7U($P(ERROR,"^",6),.HL) ;text Q $$BLDSEG^MHV7U(.ERR,.HL) ; QAK(QRY,ERROR,HIT,HL) ;build QAK segment N QAK,STATUS S STATUS=$P(ERROR,"^",5) I STATUS="" S STATUS="OK" I STATUS="OK",HIT<1 S STATUS="NF" S QAK(0)="QAK" I $D(QRY("QPD")) D ;QBP style query . S QAK(1)=$G(QRY("QPD",2)) ;query tag . M QAK(3)=QRY("QPD",1) ;message query name . Q I $D(QRY("QRD")) D ;old style query . S QAK(1)=$G(QRY("QRD",4)) ;query tag . M QAK(3)=QRY("QRD",9) ;message query name . S QAK(3,1,2)=$G(QRY("QRD",10)) . Q S QAK(2)=STATUS ;query response status S QAK(4)=$P(HIT,"^",1) ;hit count total S QAK(5)=$P(HIT,"^",2) ;hits this payload S QAK(6)=$P(HIT,"^",3) ;hits remaining Q $$BLDSEG^MHV7U(.QAK,.HL) ; QPD(QRY,EXTIME,HL) ;build QPD segment N QPD M QPD=QRY("QPD") S QPD(0)="QPD" S QPD(7)=$G(QRY("ICN")) ;ICN S QPD(8)=$G(QRY("DFN")) ;DFN S QPD(9)=$$FMTHL7^MHV7BU(EXTIME) ;Extract time Q $$BLDSEG^MHV7U(.QPD,.HL) ; QRD(QRY,EXTIME,HL) ; Build QRD segment N QRD M QRD=QRY("QRD") S QRD(0)="QRD" S QRD(1)=$$FMTHL7^MHV7BU(EXTIME) ;Extract time Q $$BLDSEG^MHV7U(.QRD,.HL) ; QRF(QRY,HL) ; Build QRF segment N QRF M QRF=QRY("QRF") S QRF(0)="QRF" Q $$BLDSEG^MHV7U(.QRF,.HL) ; PID(QRY,HL) ; Build basic PID segment N PID,NAME,ICN,DFN,SSN S ICN=$G(QRY("ICN")) S DFN=$G(QRY("DFN")) S SSN=$G(QRY("SSN")) S PID(0)="PID" D PID3^MHV7BU(.PID,ICN,DFN,SSN) ;ID list D FMTNAME2^MHV7BU(DFN,2,.NAME,.HL,"XPN") M PID(5,1)=NAME Q $$BLDSEG^MHV7U(.PID,.HL) ;