[613] | 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)
|
---|