1 | PPPDSP2 ;ALB/DMB/DAD - PPP DISPLAY REOUTINES ;10-AUG-93
|
---|
2 | ;;V1.0;PHARMACY PRESCRIPTION PRACTICE;**17**;APR 7,1995
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | DFL(PATDFN,TARRY,OPTIONS) ; Display Foreign Locations
|
---|
6 | ;
|
---|
7 | N FFXIFN,PARMERR,LKUPERR,DATAV,DATAVAIL,LDOV
|
---|
8 | N PDXDATE,PDXNODE,PDXPTR,PDXSTAT,PDXNAME,POVNODE,POVNUM,STOP
|
---|
9 | N VERBOSE,RXDAV,DIC,DA,DR,TMP,POVNAME,PATINFO,TITLINFO,I
|
---|
10 | ;
|
---|
11 | S PARMERR=-9001
|
---|
12 | S LKUPERR=-9003
|
---|
13 | S DATAVAIL=0
|
---|
14 | S VERBOSE=0
|
---|
15 | ;
|
---|
16 | I $G(OPTIONS)["V" S VERBOSE=1
|
---|
17 | ;
|
---|
18 | I '$D(^PPP(1020.2,"B",PATDFN)) Q PARMERR
|
---|
19 | ;
|
---|
20 | S DIC="^DPT(",DA=PATDFN,DR=".01;.03;.09",DIQ="PPPTMP" D EN^DIQ1
|
---|
21 | S $P(PATINFO,"^",2)=PPPTMP(2,PATDFN,.01)
|
---|
22 | S $P(PATINFO,"^",3)=$$E2IDT^PPPCNV1(PPPTMP(2,PATDFN,.03))
|
---|
23 | S $P(PATINFO,"^",4)=PPPTMP(2,PATDFN,.09)
|
---|
24 | K PPPTMP,DIC,DA,DR
|
---|
25 | S TITLINFO="^Name^DOB^SSN"
|
---|
26 | ;
|
---|
27 | I VERBOSE D
|
---|
28 | .W !!,"There are visits to other facilities indicated for:"
|
---|
29 | .W !,$P(PATINFO,"^",2)," (",$P(PATINFO,"^",4),") DOB: ",$$I2EDT^PPPCNV1($P(PATINFO,"^",3))
|
---|
30 | .W !!,"Station",?21,"Last PDX",?33,"PDX Status",?60,"Pharmacy Data"
|
---|
31 | ;
|
---|
32 | F FFXIFN=0:0 D Q:FFXIFN=""
|
---|
33 | .S FFXIFN=$O(^PPP(1020.2,"B",PATDFN,FFXIFN)) Q:FFXIFN=""
|
---|
34 | .S DATAV=0
|
---|
35 | .S PDXNODE=$G(^PPP(1020.2,FFXIFN,1))
|
---|
36 | .S POVNODE=$G(^PPP(1020.2,FFXIFN,0))
|
---|
37 | .S PDXPTR=$P(PDXNODE,"^",1) Q:PDXPTR=""
|
---|
38 | .Q:$P(PDXNODE,"^",3)=""
|
---|
39 | .S PDXSTAT=$$GETPDXST^PPPGET7(+$P(PDXNODE,"^",3))
|
---|
40 | .S PDXDATE=$$SLASHDT^PPPCNV1($P(PDXNODE,"^",2))
|
---|
41 | .S POVNUM=$P(POVNODE,"^",2)
|
---|
42 | .S POVIEN=$$GETSTANO^PPPGET1(POVNUM),POVNAME=$$GETDOMNM^PPPGET3(POVIEN),POVNAME=$P($G(POVNAME),".")
|
---|
43 | .I '$D(POVNAME) S POVNAME=POVNUM_" (Unknown)"
|
---|
44 | .S RXDAV=$$PDXDAT(PDXPTR)
|
---|
45 | .S TMP=$P(PDXSTAT,"^",1)
|
---|
46 | .I (+PDXPTR) I ((TMP'="VAQ-RSLT")&(TMP'="VAQ-UNSOL")) I ((+RXDAV)'<0) D
|
---|
47 | ..S DATAVAIL=1
|
---|
48 | ..S DATAV=1
|
---|
49 | ..S @TARRY@(PDXPTR)=POVNAME_"^"_POVNUM
|
---|
50 | .I VERBOSE W !,$E(POVNAME,1,20),?21,$S(PDXDATE=-1:"UNKNOWN",1:PDXDATE),?33,$E($P(PDXSTAT,"^",2),1,25),?60,$S(DATAV=1:"",1:"NOT "),"AVAILABLE"
|
---|
51 | .I VERBOSE D
|
---|
52 | ..F I=2:1:4 I $P(PATINFO,"^",I)'=$P(RXDAV,"^",I) D
|
---|
53 | ...W !," Warning... Local ",$P(TITLINFO,"^",I)," Does Not Equal PDX ",$P(TITLINFO,"^",I)," ==> ",$S(I=3:$$I2EDT^PPPCNV1($P(RXDAV,"^",I)),1:$P(RXDAV,"^",I))
|
---|
54 | Q DATAVAIL
|
---|
55 | ;
|
---|
56 | PDXDAT(PDXIFN) ; Is PDX Pharmacy Data Available?
|
---|
57 | ;
|
---|
58 | ; This function extracts the patient's name, DOB and a flag indicating
|
---|
59 | ; the presence of pharmacy data from the PDX Data file.
|
---|
60 | ;
|
---|
61 | ; The return format is:
|
---|
62 | ; PHARMACY_FLAG^NAME^DOB
|
---|
63 | ;
|
---|
64 | N RXAVAIL,PARMERR,FIELD,NODE,SEGPTR,NAME,DOB,DATAPTR,STOP,VALUE,SEQ
|
---|
65 | ;
|
---|
66 | S PARMERR=-9001
|
---|
67 | S RXAVAIL=0
|
---|
68 | ;CHECK INPUT
|
---|
69 | Q:((+$G(PDXIFN))<1) PARMERR
|
---|
70 | ;DETERMINE IF 'PDX*MPL' IS IN THE TRANSACTION
|
---|
71 | S SEGPTR=+$O(^VAT(394.71,"C","PDX*MPL",""))
|
---|
72 | Q:('SEGPTR) PARMERR
|
---|
73 | Q:('$D(^VAT(394.62,"A-SEGMENT",PDXIFN,SEGPTR))) PARMERR
|
---|
74 | ;DETERMINE IF AT LEAST ONE PRESCRIPTION IS IN 'PDX*MPL'
|
---|
75 | S DATAPTR=0
|
---|
76 | F S DATAPTR=+$O(^VAT(394.62,"A-SEGMENT",PDXIFN,SEGPTR,DATAPTR)) Q:('DATAPTR) D Q:(RXAVAIL)
|
---|
77 | .S NODE=$G(^VAT(394.62,DATAPTR,0))
|
---|
78 | .Q:(NODE="")
|
---|
79 | .Q:($P(NODE,"^",3)'=52)
|
---|
80 | .Q:($P(NODE,"^",4)'=.01)
|
---|
81 | .Q:($P($G(^VAT(394.62,DATAPTR,"VAL")),"^",1)="")
|
---|
82 | .;AT LEAST ONE RX PRESENT
|
---|
83 | .S RXAVAIL=1
|
---|
84 | ;GET PATIENT'S NAME & DOB IF AT LEAST ONE RX PRESENT
|
---|
85 | S NAME=""
|
---|
86 | S DOB=""
|
---|
87 | S SEGPTR=+$O(^VAT(394.71,"C","PDX*MIN",""))
|
---|
88 | Q:('SEGPTR) PARMERR
|
---|
89 | Q:('$D(^VAT(394.62,"A-SEGMENT",PDXIFN,SEGPTR))) PARMERR
|
---|
90 | S STOP=0
|
---|
91 | S DATAPTR=0
|
---|
92 | F S DATAPTR=+$O(^VAT(394.62,"A-SEGMENT",PDXIFN,SEGPTR,DATAPTR)) Q:('DATAPTR) D Q:(STOP=3)
|
---|
93 | .S NODE=$G(^VAT(394.62,DATAPTR,0))
|
---|
94 | .Q:(NODE="")
|
---|
95 | .Q:($P(NODE,"^",3)'=2)
|
---|
96 | .S FIELD=$P(NODE,"^",4)
|
---|
97 | .Q:((FIELD'=.01)&(FIELD'=.03))
|
---|
98 | .S VALUE=$P($G(^VAT(394.62,DATAPTR,"VAL")),"^",1)
|
---|
99 | .;ONLY TAKE FIRST OCCURENCE OF NAME/DOB (SEQUENCE NUMBER EQUALS 0)
|
---|
100 | .S SEQ=$P($G(^VAT(394.62,DATAPTR,"SQNCE")),"^",1)
|
---|
101 | .Q:(SEQ'=0)
|
---|
102 | .;SET APPROPRIATE VALUE
|
---|
103 | .I (FIELD=.01) D
|
---|
104 | ..S NAME=VALUE
|
---|
105 | ..S STOP=STOP+1
|
---|
106 | .I (FIELD=.03) D Q
|
---|
107 | ..;CONVERT DOB TO FILEMAN FORMAT
|
---|
108 | ..S DOB=$$E2IDT^PPPCNV1(VALUE)
|
---|
109 | ..S:(DOB="-1") DOB=""
|
---|
110 | ..S STOP=STOP+2
|
---|
111 | ;RETURN VALUES
|
---|
112 | Q (RXAVAIL_"^"_NAME_"^"_DOB)
|
---|