1 | MHV7B1B ;WAS/GPM - HL7 message builder RTB^K13 Rx Profile ; 10/13/05 7:52pm [12/24/07 5:39pm]
|
---|
2 | ;;1.0;My HealtheVet;**2**;Aug 23, 2005;Build 22
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | Q
|
---|
6 | ;
|
---|
7 | RDF(MSGROOT,CNT,LEN,HL) ; Build RDF segment for Rx Profile data
|
---|
8 | ;
|
---|
9 | ; Input:
|
---|
10 | ; MSGROOT - Root of array holding the message
|
---|
11 | ; CNT - Current message line counter
|
---|
12 | ; LEN - Current message length
|
---|
13 | ; HL - HL7 package array variable
|
---|
14 | ;
|
---|
15 | ; Output:
|
---|
16 | ; - Populated message array
|
---|
17 | ; - Updated LEN and CNT
|
---|
18 | ;
|
---|
19 | N RDF
|
---|
20 | S RDF(0)="RDF"
|
---|
21 | S RDF(1)=20
|
---|
22 | S RDF(2,1,1)="Prescription Number",RDF(2,1,2)="ST",RDF(2,1,3)=20
|
---|
23 | S RDF(2,2,1)="IEN",RDF(2,2,2)="NM",RDF(2,2,3)=30
|
---|
24 | S RDF(2,3,1)="Drug Name",RDF(2,3,2)="ST",RDF(2,3,3)=40
|
---|
25 | S RDF(2,4,1)="Issue Date/Time",RDF(2,4,2)="TS",RDF(2,4,3)=26
|
---|
26 | S RDF(2,5,1)="Last Fill Date",RDF(2,5,2)="TS",RDF(2,5,3)=26
|
---|
27 | S RDF(2,6,1)="Release Date/Time",RDF(2,6,2)="TS",RDF(2,6,3)=26
|
---|
28 | S RDF(2,7,1)="Expiration or Cancel Date",RDF(2,7,2)="TS",RDF(2,7,3)=26
|
---|
29 | S RDF(2,8,1)="Status",RDF(2,8,2)="ST",RDF(2,8,3)=25
|
---|
30 | S RDF(2,9,1)="Quantity",RDF(2,9,2)="NM",RDF(2,9,3)=11
|
---|
31 | S RDF(2,10,1)="Days Supply",RDF(2,10,2)="NM",RDF(2,10,3)=3
|
---|
32 | S RDF(2,11,1)="Number of Refills",RDF(2,11,2)="NM",RDF(2,11,3)=3
|
---|
33 | S RDF(2,12,1)="Provider",RDF(2,12,2)="XCN",RDF(2,12,3)=150
|
---|
34 | S RDF(2,13,1)="Placer Order Number",RDF(2,13,2)="ST",RDF(2,13,3)=30
|
---|
35 | S RDF(2,14,1)="Mail/Window",RDF(2,14,2)="ST",RDF(2,14,3)=1
|
---|
36 | S RDF(2,15,1)="Division",RDF(2,15,2)="NM",RDF(2,15,3)=3
|
---|
37 | S RDF(2,16,1)="Division Name",RDF(2,16,2)="ST",RDF(2,16,3)=20
|
---|
38 | S RDF(2,17,1)="MHV Request Status",RDF(2,17,2)="NM",RDF(2,17,3)=3
|
---|
39 | S RDF(2,18,1)="MHV Request Status Date",RDF(2,18,2)="TS",RDF(2,18,3)=26
|
---|
40 | S RDF(2,19,1)="Remarks",RDF(2,19,2)="ST",RDF(2,19,3)=75
|
---|
41 | S RDF(2,20,1)="SIG",RDF(2,20,2)="TX",RDF(2,20,3)=1024
|
---|
42 | ;
|
---|
43 | S CNT=CNT+1
|
---|
44 | S @MSGROOT@(CNT)=$$BLDSEG^MHV7U(.RDF,.HL)
|
---|
45 | S LEN=LEN+$L(@MSGROOT@(CNT))
|
---|
46 | Q
|
---|
47 | ;
|
---|
48 | RDT(MSGROOT,DATAROOT,CNT,LEN,HL) ; Build RDT segments for Rx Profile data
|
---|
49 | ;
|
---|
50 | ; Walks data in DATAROOT to populate MSGROOT with RDT segments
|
---|
51 | ; sequentially numbered starting at CNT
|
---|
52 | ;
|
---|
53 | ; Integration Agreements:
|
---|
54 | ; 10103 : FMTHL7^XLFDT
|
---|
55 | ; 3065 : HLNAME^XLFNAME
|
---|
56 | ;
|
---|
57 | ; Input:
|
---|
58 | ; MSGROOT - Root of array holding the message
|
---|
59 | ; DATAROOT - Root of array to hold extract data
|
---|
60 | ; CNT - Current message line counter
|
---|
61 | ; LEN - Current message length
|
---|
62 | ; HL - HL7 package array variable
|
---|
63 | ;
|
---|
64 | ; Output:
|
---|
65 | ; - Populated message array
|
---|
66 | ; - Updated LEN and CNT
|
---|
67 | ;
|
---|
68 | N I,RX,RX0,RXP,RXN,RXD,RDT,SIG,SEG,PIEN,NAME,WPLEN
|
---|
69 | D LOG^MHVUL2("MHV7B1B","BEGIN RDT","S","TRACE")
|
---|
70 | F I=1:1 Q:'$D(@DATAROOT@(I)) D
|
---|
71 | . S RX=@DATAROOT@(I)
|
---|
72 | . S RX0=@DATAROOT@(I,0)
|
---|
73 | . S RXP=@DATAROOT@(I,"P")
|
---|
74 | . S PIEN=+RXP
|
---|
75 | . S RXN=@DATAROOT@(I,"RXN")
|
---|
76 | . S RXD=@DATAROOT@(I,"DIV")
|
---|
77 | . K SIG M SIG=@DATAROOT@(I,"SIG")
|
---|
78 | . S RDT(0)="RDT"
|
---|
79 | . S RDT(1)=$P(RX,"^") ;Rx Number
|
---|
80 | . S RDT(2)=$P(RXN,"^",9) ;Rx IEN
|
---|
81 | . S RDT(3)=$$ESCAPE^MHV7U($P(RX,"^",2),.HL) ;Drug Name
|
---|
82 | . S RDT(4)=$$FMTHL7^XLFDT($P(RX0,"^",5)) ;Issue Date/Time
|
---|
83 | . S RDT(5)=$$FMTHL7^XLFDT($P(RX0,"^",12)) ;Last Fill Date
|
---|
84 | . S RDT(6)=$$FMTHL7^XLFDT($P(RXN,"^",2)) ;Release Date/Time
|
---|
85 | . S RDT(7)=$$FMTHL7^XLFDT($P(RX0,"^",3)) ;Expiration/Cancel Date
|
---|
86 | . S RDT(8)=$$ESCAPE^MHV7U($P(RX0,"^",6),.HL) ;Status
|
---|
87 | . S RDT(9)=$P(RX0,"^",8) ;Quantity
|
---|
88 | . S RDT(10)=$P(RX0,"^",7) ;Days Supply
|
---|
89 | . S RDT(11)=$P(RX0,"^",4) ;Number of Refills
|
---|
90 | . I PIEN D
|
---|
91 | .. D FMTNAME2^MHV7BU(PIEN,200,.NAME,.HL,"XCN")
|
---|
92 | .. M RDT(12,1)=NAME
|
---|
93 | .. S RDT(12,1,1)=PIEN ;Provider IEN
|
---|
94 | .. Q
|
---|
95 | . S RDT(13)=$$ESCAPE^MHV7U($P(RX0,"^",11),.HL) ;Placer Order Number
|
---|
96 | . S RDT(14)=$P(RXN,"^",3) ;Mail/Window
|
---|
97 | . S RDT(15)=$P(RXD,"^") ;Division
|
---|
98 | . S RDT(16)=$$ESCAPE^MHV7U($P(RXD,"^",2),.HL) ;Division Name
|
---|
99 | . S RDT(17)=$P(RX,"^",3) ;MHV status
|
---|
100 | . S RDT(18)=$$FMTHL7^XLFDT($P(RX,"^",4)) ;MHV status date
|
---|
101 | . S RDT(19)=$$ESCAPE^MHV7U($P(RXN,"^",4),.HL) ;Remarks
|
---|
102 | . S CNT=CNT+1
|
---|
103 | . S @MSGROOT@(CNT)=$$BLDSEG^MHV7U(.RDT,.HL)
|
---|
104 | . S LEN=LEN+$L(@MSGROOT@(CNT))
|
---|
105 | . Q:'SIG(0)
|
---|
106 | . K SEG,WPLEN
|
---|
107 | . D BLDWP^MHV7U(.SIG,.SEG,1024,0,.WPLEN,.HL)
|
---|
108 | . M @MSGROOT@(CNT)=SEG
|
---|
109 | . S LEN=LEN+WPLEN
|
---|
110 | . Q
|
---|
111 | D LOG^MHVUL2("MHV7B1B","END RDT","S","TRACE")
|
---|
112 | Q
|
---|
113 | ;
|
---|