MHV7B2 ;WAS/GPM - HL7 message builder ORP^O10 ; [12/24/07 5:43pm] ;;1.0;My HealtheVet;**2**;Aug 23, 2005;Build 22 ;;Per VHA Directive 2004-038, this routine should not be modified. ; Q ; ORPO10(MSGROOT,REQ,ERR,DATAROOT,LEN,HL) ; Build refill request response ; ; Populates the array pointed to by MSGROOT with an ORP^O10 order ; response message by calling the appropriate segment builders based ; on the type of response ACK or NAK. Extracted data pointed to ; by DATAROOT, errors, and request parameters are used to build the ; segments. An error number in ERR^4 indicates a NAK is needed. ; ; Integration Agreements: ; 3065 : $$HLNAME^XLFNAME ; 10112 : $$SITE^VASITE ; ; Input: ; MSGROOT - Global root of message ; REQ - Query parameters ; REQ("TYPE") - Request type number ; REQ("MID") - original message control ID ; ERR - Caret delimited error string ; segment^sequence^field^code^ACK type^error text ; DATAROOT - Global root of data array ; HL - HL7 package array variable ; ; Output: ORP^O10 message in MSGROOT ; LEN - Length of formatted message ; N CNT,HIT,I D LOG^MHVUL2("ORP-O10 BUILDER","BEGIN","S","TRACE") ; K @MSGROOT S CNT=1,@MSGROOT@(CNT)=$$MSA^MHV7BUS($G(REQ("MID")),ERR,.HL),LEN=$L(@MSGROOT@(CNT)) I $P(ERR,"^",4) S CNT=CNT+1,@MSGROOT@(CNT)=$$ERR^MHV7BUS(ERR,.HL),LEN=LEN+$L(@MSGROOT@(CNT)) S CNT=CNT+1,@MSGROOT@(CNT)=$$PID^MHV7BUS(.REQ,.HL),LEN=LEN+$L(@MSGROOT@(CNT)) ; I '$P(ERR,"^",4),DATAROOT'="" D . F I=1:1 Q:'$D(@DATAROOT@(I)) D .. S CNT=CNT+1,@MSGROOT@(CNT)=$$ORC(@DATAROOT@(I),.HL),LEN=LEN+$L(@MSGROOT@(CNT)) .. S CNT=CNT+1,@MSGROOT@(CNT)=$$RXE(@DATAROOT@(I),.HL),LEN=LEN+$L(@MSGROOT@(CNT)) .. Q . Q ; D LOG^MHVUL2("ORP-O10 BUILDER","END","S","TRACE") Q ; ORC(DATA,HL) ;build ORC segment N ORC,STATUS,CONTROL S STATUS=$P(DATA,"^",2) S CONTROL=$S(STATUS=1:"OK",1:"UA") S ORC(0)="ORC" S ORC(1)=CONTROL ;order control S ORC(2)=$P(DATA,"^",3) ;placer order number S ORC(3)=$P(DATA,"^",3) ;filler order number Q $$BLDSEG^MHV7U(.ORC,.HL) ; RXE(DATA,HL) ;build RXE segment N RXE,STATUS,CONTROL S STATUS=$P(DATA,"^",2) S CONTROL=$S(STATUS=1:"OK",1:"UA") S RXE(0)="RXE" S RXE(1,1,1,1)=1 ;order quantity S RXE(1,1,4,1)=$P(DATA,"^",4) ;order start time S RXE(2,1,1)=CONTROL ;give code identifier S RXE(2,1,2)=STATUS ;give code text S RXE(2,1,3)="HL70119" ;give code system S RXE(3)=1 ;give amount S RXE(5)="1 refill unit" ;give units ;S RXE(7)="" ;division number S RXE(15)=$P(DATA,"^",1) ;prescription number Q $$BLDSEG^MHV7U(.RXE,.HL) ;