[623] | 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 | ;
|
---|