1 | MHVXRX ;WAS/GPM - Prescription extract ; [8/23/05 12:33am]
|
---|
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 | PROFILE(QRY,ERR,DATAROOT) ; Entry point to get prescription profile
|
---|
8 | ; Retrieves requested prescripton data and returns it in DATAROOT
|
---|
9 | ; Retrieves all prescriptions with an active status
|
---|
10 | ;
|
---|
11 | ; Integration Agreements:
|
---|
12 | ; 3768 : AP2^PSOPRA,AP5^PSOPRA
|
---|
13 | ; 4687 : EN^PSOMHV1
|
---|
14 | ;
|
---|
15 | ; Input:
|
---|
16 | ; QRY - Query array
|
---|
17 | ; QRY(DFN) - (required) Pointer to PATIENT (#2) file
|
---|
18 | ; DATAROOT - Root of array to hold extract data
|
---|
19 | ;
|
---|
20 | ; Output:
|
---|
21 | ; DATAROOT - Populated data array, includes # of hits
|
---|
22 | ; ERR - Errors during extraction
|
---|
23 | ;
|
---|
24 | N U,DT,HIT,DFN,PRI,FROM,TO,STA,DRUG,DIV,MHVSTAT,RXN,MHVDATE,INDEX
|
---|
25 | ;
|
---|
26 | D LOG^MHV7U("MHVXRX Profile","BEGIN","S",0)
|
---|
27 | S U="^",DT=$$DT^XLFDT
|
---|
28 | S ERR=0,HIT=0
|
---|
29 | K @DATAROOT
|
---|
30 | K ^TMP("PSO",$J)
|
---|
31 | S DFN=$G(QRY("DFN"))
|
---|
32 | S PRI=$G(QRY("PRI"))
|
---|
33 | S FROM=DT
|
---|
34 | S TO=""
|
---|
35 | ;
|
---|
36 | D EN^PSOMHV1(DFN,FROM,TO)
|
---|
37 | ;
|
---|
38 | S STA="",INDEX=""
|
---|
39 | F STA="ACT","SUS" F S INDEX=$O(^TMP("PSO",$J,STA,INDEX)) Q:INDEX="" D SET
|
---|
40 | ;
|
---|
41 | K ^TMP("PSO",$J)
|
---|
42 | S @DATAROOT=HIT
|
---|
43 | D LOG^MHV7U("MHVXRX Profile HITS=",HIT,"S",0)
|
---|
44 | D LOG^MHV7U("MHVXRX Profile","END","S",0)
|
---|
45 | Q
|
---|
46 | ;
|
---|
47 | EXTRACT(QRY,ERR,DATAROOT) ; Entry point to extract prescription data
|
---|
48 | ; Retrieves requested prescripton data and returns it in DATAROOT
|
---|
49 | ; Retrieves all prescriptions of all statuses in given date range
|
---|
50 | ; Statuses of deleted are filtered by the pharmacy API.
|
---|
51 | ;
|
---|
52 | ; Integration Agreements:
|
---|
53 | ; 3768 : AP2^PSOPRA,AP5^PSOPRA
|
---|
54 | ; 4687 : EN3^PSOMHV1
|
---|
55 | ;
|
---|
56 | ; Input:
|
---|
57 | ; QRY - Query array
|
---|
58 | ; QRY(DFN) - (required) Pointer to PATIENT (#2) file
|
---|
59 | ; QRY(FROM) - Date to start from
|
---|
60 | ; QRY(TO) - Date to go to
|
---|
61 | ; DATAROOT - Root of array to hold extract data
|
---|
62 | ;
|
---|
63 | ; Output:
|
---|
64 | ; DATAROOT - Populated data array, includes # of hits
|
---|
65 | ; ERR - Errors during extraction
|
---|
66 | ;
|
---|
67 | N U,DT,HIT,DFN,PRI,FROM,TO,STA,DRUG,DIV,MHVSTAT,RXN,MHVDATE,INDEX
|
---|
68 | ;
|
---|
69 | D LOG^MHV7U("MHVXRX Extract","BEGIN","S",0)
|
---|
70 | S U="^",DT=$$DT^XLFDT
|
---|
71 | S ERR=0,HIT=0
|
---|
72 | K @DATAROOT
|
---|
73 | K ^TMP("PS",$J)
|
---|
74 | S DFN=$G(QRY("DFN"))
|
---|
75 | S PRI=$G(QRY("PRI"))
|
---|
76 | S FROM=$G(QRY("FROM"))
|
---|
77 | S TO=$G(QRY("TO"))
|
---|
78 | ;
|
---|
79 | I FROM="" S FROM=2000101 ;01/01/1900
|
---|
80 | ;
|
---|
81 | ; The EN3^PSOMHV1 call uses RX IEN instead of DRUG as a
|
---|
82 | ; subscript in ^TMP("PSO",$J). This was a late breaking change to
|
---|
83 | ; PSOMHV1 to support historical extracts.
|
---|
84 | D EN3^PSOMHV1(DFN,FROM,TO)
|
---|
85 | ;
|
---|
86 | S STA="",INDEX=""
|
---|
87 | F S STA=$O(^TMP("PSO",$J,STA)) Q:STA="" I STA'="PEN" F S INDEX=$O(^TMP("PSO",$J,STA,INDEX)) Q:INDEX="" D SET
|
---|
88 | ;
|
---|
89 | K ^TMP("PSO",$J)
|
---|
90 | S @DATAROOT=HIT
|
---|
91 | D LOG^MHV7U("MHVXRX Extract HITS=",HIT,"S",0)
|
---|
92 | D LOG^MHV7U("MHVXRX Extract","END","S",0)
|
---|
93 | Q
|
---|
94 | ;
|
---|
95 | SET ;
|
---|
96 | ;INDEX will be RXIEN if called from EXTRACT
|
---|
97 | ;INDEX will be drug name if called from PROFILE
|
---|
98 | S RXN=$P($G(^TMP("PSO",$J,STA,INDEX,"RXN",0)),"^")
|
---|
99 | I RXN="" Q
|
---|
100 | I $D(QRY("RXLIST")) Q:'$D(QRY("RXLIST",RXN))
|
---|
101 | S MHVSTAT=$$AP2^PSOPRA(DFN,RXN)
|
---|
102 | S MHVDATE=$P(MHVSTAT,"^",2)
|
---|
103 | S MHVSTAT=$P(MHVSTAT,"^",1)
|
---|
104 | I MHVSTAT>0 I $$AP5^PSOPRA(DFN,RXN) ;Clear RXN from queue
|
---|
105 | S DRUG=$P($G(^TMP("PSO",$J,STA,INDEX,0)),"^",1) ;Drug Name
|
---|
106 | S HIT=HIT+1
|
---|
107 | S @DATAROOT@(HIT)=RXN_U_DRUG_U_MHVSTAT_U_MHVDATE
|
---|
108 | S @DATAROOT@(HIT,0)=$G(^TMP("PSO",$J,STA,INDEX,0))
|
---|
109 | S @DATAROOT@(HIT,"P")=$G(^TMP("PSO",$J,STA,INDEX,"P",0))
|
---|
110 | S @DATAROOT@(HIT,"RXN")=$G(^TMP("PSO",$J,STA,INDEX,"RXN",0))
|
---|
111 | S @DATAROOT@(HIT,"DIV")=$G(^TMP("PSO",$J,STA,INDEX,"DIV",0))
|
---|
112 | I '$D(^TMP("PSO",$J,STA,INDEX,"SIG")) S @DATAROOT@(HIT,"SIG",0)=0
|
---|
113 | E M @DATAROOT@(HIT,"SIG")=^TMP("PSO",$J,STA,INDEX,"SIG")
|
---|
114 | Q
|
---|
115 | ;
|
---|