| 1 | MHV7B2 ;WAS/GPM - HL7 message builder ORP^O10 ; [8/22/05 11:47pm]
 | 
|---|
| 2 |  ;;1.0;My HealtheVet;;Aug 23, 2005
 | 
|---|
| 3 |  ;;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  Q
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 | ORPO10(MSGROOT,REQ,ERR,DATAROOT,HL) ; Build refill request response
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 |  ;  Populates the array pointed to by MSGROOT with an ORP^O10 order
 | 
|---|
| 10 |  ; response message by calling the appropriate segment builders based
 | 
|---|
| 11 |  ; on the type of response ACK or NAK.  Extracted data pointed to
 | 
|---|
| 12 |  ; by DATAROOT, errors, and request parameters are used to build the
 | 
|---|
| 13 |  ; segments.  An error number in ERR^4 indicates a NAK is needed.
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ;  Integration Agreements:
 | 
|---|
| 16 |  ;         3065 : $$HLNAME^XLFNAME
 | 
|---|
| 17 |  ;        10112 : $$SITE^VASITE
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ;  Input:
 | 
|---|
| 20 |  ;     MSGROOT - Global root of message
 | 
|---|
| 21 |  ;         REQ - Query parameters
 | 
|---|
| 22 |  ;             REQ("TYPE") - Request type number
 | 
|---|
| 23 |  ;             REQ("MID") - original message control ID
 | 
|---|
| 24 |  ;         ERR - Caret delimited error string
 | 
|---|
| 25 |  ;               segment^sequence^field^code^ACK type^error text
 | 
|---|
| 26 |  ;    DATAROOT - Global root of data array
 | 
|---|
| 27 |  ;          HL - HL7 package array variable
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 |  ;  Output: ORP^O10 message in MSGROOT
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  N CNT,RDT,HIT,I
 | 
|---|
| 32 |  K @MSGROOT
 | 
|---|
| 33 |  S CNT=1,@MSGROOT@(CNT)=$$MSA^MHV7B1($G(REQ("MID")),ERR,.HL)
 | 
|---|
| 34 |  I $P(ERR,"^",4) S CNT=CNT+1,@MSGROOT@(CNT)=$$ERR^MHV7B1(ERR,.HL)
 | 
|---|
| 35 |  Q:$P(ERR,"^",4)
 | 
|---|
| 36 |  S CNT=CNT+1,@MSGROOT@(CNT)=$$PID(.REQ,.HL)
 | 
|---|
| 37 |  F I=1:1 Q:'$D(@DATAROOT@(I))  D
 | 
|---|
| 38 |  . S CNT=CNT+1,@MSGROOT@(CNT)=$$ORC(@DATAROOT@(I),.HL)
 | 
|---|
| 39 |  . S CNT=CNT+1,@MSGROOT@(CNT)=$$RXE(@DATAROOT@(I),.HL)
 | 
|---|
| 40 |  . Q
 | 
|---|
| 41 |  Q
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 | PID(REQ,HL) ;
 | 
|---|
| 44 |  N PID,NAME,STATION,IDCNT
 | 
|---|
| 45 |  S STATION=$P($$SITE^VASITE,"^",3)
 | 
|---|
| 46 |  S PID(0)="PID"
 | 
|---|
| 47 |  S IDCNT=0
 | 
|---|
| 48 |  I REQ("ICN")'="" D
 | 
|---|
| 49 |  . S IDCNT=IDCNT+1
 | 
|---|
| 50 |  . S PID(3,IDCNT,1)=REQ("ICN")          ;Patient ID - ICN
 | 
|---|
| 51 |  . S PID(3,IDCNT,4,1)="USVHA"           ;assigning authority ID
 | 
|---|
| 52 |  . S PID(3,IDCNT,4,3)="HL70363"         ;assigning authority type
 | 
|---|
| 53 |  . S PID(3,IDCNT,5)="NI"                ;Patient ID type
 | 
|---|
| 54 |  . S PID(3,IDCNT,6,1)="VA FACILITY ID"  ;assigning facility
 | 
|---|
| 55 |  . S PID(3,IDCNT,6,2)=STATION           ;Station number
 | 
|---|
| 56 |  . S PID(3,IDCNT,6,3)="L"               ;facility ID type
 | 
|---|
| 57 |  . Q
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 |  I REQ("DFN")'="" D
 | 
|---|
| 60 |  . S IDCNT=IDCNT+1
 | 
|---|
| 61 |  . S PID(3,IDCNT,1)=REQ("DFN")          ;Patient ID - DFN
 | 
|---|
| 62 |  . S PID(3,IDCNT,4,1)="USVHA"           ;assigning authority ID
 | 
|---|
| 63 |  . S PID(3,IDCNT,4,3)="HL70363"         ;assigning authority type
 | 
|---|
| 64 |  . S PID(3,IDCNT,5)="PI"                ;Patient ID type
 | 
|---|
| 65 |  . S PID(3,IDCNT,6,1)="VA FACILITY ID"  ;assigning facility
 | 
|---|
| 66 |  . S PID(3,IDCNT,6,2)=STATION           ;Station number
 | 
|---|
| 67 |  . S PID(3,IDCNT,6,3)="L"               ;facility ID type
 | 
|---|
| 68 |  . Q
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 |  I REQ("SSN")'="" D
 | 
|---|
| 71 |  . S IDCNT=IDCNT+1
 | 
|---|
| 72 |  . S PID(3,IDCNT,1)=REQ("SSN")          ;Patient ID - SSN
 | 
|---|
| 73 |  . S PID(3,IDCNT,4,1)="USSSA"           ;assigning authority ID
 | 
|---|
| 74 |  . S PID(3,IDCNT,4,3)="HL70363"         ;assigning authority type
 | 
|---|
| 75 |  . S PID(3,IDCNT,5)="SS"                ;Patient ID type
 | 
|---|
| 76 |  . S PID(3,IDCNT,6,1)="VA FACILITY ID"  ;assigning facility
 | 
|---|
| 77 |  . S PID(3,IDCNT,6,2)="200MH"           ;Station number
 | 
|---|
| 78 |  . S PID(3,IDCNT,6,3)="L"               ;facility ID type
 | 
|---|
| 79 |  . Q
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 |  S NAME("FILE")=2,NAME("FIELD")=.01,NAME("IENS")=REQ("DFN")_","
 | 
|---|
| 82 |  S NAME=$$NAMEFMT^XLFNAME(.NAME)
 | 
|---|
| 83 |  S PID(5,1,1)=$$ESCAPE^MHV7U($P(NAME,"^"),.HL)    ;family
 | 
|---|
| 84 |  S PID(5,1,2)=$$ESCAPE^MHV7U($P(NAME,"^",2),.HL)  ;given
 | 
|---|
| 85 |  S PID(5,1,3)=$$ESCAPE^MHV7U($P(NAME,"^",3),.HL)  ;middle
 | 
|---|
| 86 |  S PID(5,1,4)=$$ESCAPE^MHV7U($P(NAME,"^",4),.HL)  ;suffix
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  Q $$BLDSEG^MHV7U(.PID,.HL)
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 | ORC(DATA,HL) ;build ORC segment
 | 
|---|
| 91 |  N ORC,STATUS,CONTROL
 | 
|---|
| 92 |  S STATUS=$P(DATA,"^",2)
 | 
|---|
| 93 |  S CONTROL=$S(STATUS=1:"OK",1:"UA")
 | 
|---|
| 94 |  S ORC(0)="ORC"
 | 
|---|
| 95 |  S ORC(1)=CONTROL              ;order control
 | 
|---|
| 96 |  S ORC(2)=$P(DATA,"^",3)       ;placer order number
 | 
|---|
| 97 |  S ORC(3)=$P(DATA,"^",3)       ;filler order number
 | 
|---|
| 98 |  Q $$BLDSEG^MHV7U(.ORC,.HL)
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 | RXE(DATA,HL) ;build RXE segment
 | 
|---|
| 101 |  N RXE,STATUS,CONTROL
 | 
|---|
| 102 |  S STATUS=$P(DATA,"^",2)
 | 
|---|
| 103 |  S CONTROL=$S(STATUS=1:"OK",1:"UA")
 | 
|---|
| 104 |  S RXE(0)="RXE"
 | 
|---|
| 105 |  S RXE(1,1,1,1)=1              ;order quantity
 | 
|---|
| 106 |  S RXE(1,1,4,1)=$P(DATA,"^",4) ;order start time
 | 
|---|
| 107 |  S RXE(2,1,1)=CONTROL          ;give code identifier
 | 
|---|
| 108 |  S RXE(2,1,2)=STATUS           ;give code text
 | 
|---|
| 109 |  S RXE(2,1,3)="HL70119"        ;give code system
 | 
|---|
| 110 |  S RXE(3)=1                    ;give amount
 | 
|---|
| 111 |  S RXE(5)="1 refill unit"      ;give units
 | 
|---|
| 112 |  ;S RXE(7)=""                  ;division number
 | 
|---|
| 113 |  S RXE(15)=$P(DATA,"^",1)      ;prescription number
 | 
|---|
| 114 |  Q $$BLDSEG^MHV7U(.RXE,.HL)
 | 
|---|
| 115 |  ;
 | 
|---|