PPPDSP2 ;ALB/DMB/DAD - PPP DISPLAY REOUTINES ;10-AUG-93
 ;;V1.0;PHARMACY PRESCRIPTION PRACTICE;**17**;APR 7,1995
 ;;Per VHA Directive 10-93-142, this routine should not be modified.
 ;
DFL(PATDFN,TARRY,OPTIONS) ; Display Foreign Locations
 ;
 N FFXIFN,PARMERR,LKUPERR,DATAV,DATAVAIL,LDOV
 N PDXDATE,PDXNODE,PDXPTR,PDXSTAT,PDXNAME,POVNODE,POVNUM,STOP
 N VERBOSE,RXDAV,DIC,DA,DR,TMP,POVNAME,PATINFO,TITLINFO,I
 ;
 S PARMERR=-9001
 S LKUPERR=-9003
 S DATAVAIL=0
 S VERBOSE=0
 ;
 I $G(OPTIONS)["V" S VERBOSE=1
 ;
 I '$D(^PPP(1020.2,"B",PATDFN)) Q PARMERR
 ;
 S DIC="^DPT(",DA=PATDFN,DR=".01;.03;.09",DIQ="PPPTMP" D EN^DIQ1
 S $P(PATINFO,"^",2)=PPPTMP(2,PATDFN,.01)
 S $P(PATINFO,"^",3)=$$E2IDT^PPPCNV1(PPPTMP(2,PATDFN,.03))
 S $P(PATINFO,"^",4)=PPPTMP(2,PATDFN,.09)
 K PPPTMP,DIC,DA,DR
 S TITLINFO="^Name^DOB^SSN"
 ;
 I VERBOSE D
 .W !!,"There are visits to other facilities indicated for:"
 .W !,$P(PATINFO,"^",2)," (",$P(PATINFO,"^",4),")      DOB: ",$$I2EDT^PPPCNV1($P(PATINFO,"^",3))
 .W !!,"Station",?21,"Last PDX",?33,"PDX Status",?60,"Pharmacy Data"
 ;
 F FFXIFN=0:0 D  Q:FFXIFN=""
 .S FFXIFN=$O(^PPP(1020.2,"B",PATDFN,FFXIFN)) Q:FFXIFN=""
 .S DATAV=0
 .S PDXNODE=$G(^PPP(1020.2,FFXIFN,1))
 .S POVNODE=$G(^PPP(1020.2,FFXIFN,0))
 .S PDXPTR=$P(PDXNODE,"^",1) Q:PDXPTR=""
 .Q:$P(PDXNODE,"^",3)=""
 .S PDXSTAT=$$GETPDXST^PPPGET7(+$P(PDXNODE,"^",3))
 .S PDXDATE=$$SLASHDT^PPPCNV1($P(PDXNODE,"^",2))
 .S POVNUM=$P(POVNODE,"^",2)
 .S POVIEN=$$GETSTANO^PPPGET1(POVNUM),POVNAME=$$GETDOMNM^PPPGET3(POVIEN),POVNAME=$P($G(POVNAME),".")
 .I '$D(POVNAME) S POVNAME=POVNUM_" (Unknown)"
 .S RXDAV=$$PDXDAT(PDXPTR)
 .S TMP=$P(PDXSTAT,"^",1)
 .I (+PDXPTR) I ((TMP'="VAQ-RSLT")&(TMP'="VAQ-UNSOL")) I ((+RXDAV)'<0) D
 ..S DATAVAIL=1
 ..S DATAV=1
 ..S @TARRY@(PDXPTR)=POVNAME_"^"_POVNUM
 .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"
 .I VERBOSE D
 ..F I=2:1:4 I $P(PATINFO,"^",I)'=$P(RXDAV,"^",I) D
 ...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))
 Q DATAVAIL
 ;
PDXDAT(PDXIFN) ; Is PDX Pharmacy Data Available?
 ;
 ; This function extracts the patient's name, DOB and a flag indicating
 ; the presence of pharmacy data from the PDX Data file.
 ;
 ; The return format is:
 ;    PHARMACY_FLAG^NAME^DOB
 ;
 N RXAVAIL,PARMERR,FIELD,NODE,SEGPTR,NAME,DOB,DATAPTR,STOP,VALUE,SEQ
 ;
 S PARMERR=-9001
 S RXAVAIL=0
 ;CHECK INPUT
 Q:((+$G(PDXIFN))<1) PARMERR
 ;DETERMINE IF 'PDX*MPL' IS IN THE TRANSACTION
 S SEGPTR=+$O(^VAT(394.71,"C","PDX*MPL",""))
 Q:('SEGPTR) PARMERR
 Q:('$D(^VAT(394.62,"A-SEGMENT",PDXIFN,SEGPTR))) PARMERR
 ;DETERMINE IF AT LEAST ONE PRESCRIPTION IS IN 'PDX*MPL'
 S DATAPTR=0
 F  S DATAPTR=+$O(^VAT(394.62,"A-SEGMENT",PDXIFN,SEGPTR,DATAPTR)) Q:('DATAPTR)  D  Q:(RXAVAIL)
 .S NODE=$G(^VAT(394.62,DATAPTR,0))
 .Q:(NODE="")
 .Q:($P(NODE,"^",3)'=52)
 .Q:($P(NODE,"^",4)'=.01)
 .Q:($P($G(^VAT(394.62,DATAPTR,"VAL")),"^",1)="")
 .;AT LEAST ONE RX PRESENT
 .S RXAVAIL=1
 ;GET PATIENT'S NAME & DOB IF AT LEAST ONE RX PRESENT
 S NAME=""
 S DOB=""
 S SEGPTR=+$O(^VAT(394.71,"C","PDX*MIN",""))
 Q:('SEGPTR) PARMERR
 Q:('$D(^VAT(394.62,"A-SEGMENT",PDXIFN,SEGPTR))) PARMERR
 S STOP=0
 S DATAPTR=0
 F  S DATAPTR=+$O(^VAT(394.62,"A-SEGMENT",PDXIFN,SEGPTR,DATAPTR)) Q:('DATAPTR)  D  Q:(STOP=3)
 .S NODE=$G(^VAT(394.62,DATAPTR,0))
 .Q:(NODE="")
 .Q:($P(NODE,"^",3)'=2)
 .S FIELD=$P(NODE,"^",4)
 .Q:((FIELD'=.01)&(FIELD'=.03))
 .S VALUE=$P($G(^VAT(394.62,DATAPTR,"VAL")),"^",1)
 .;ONLY TAKE FIRST OCCURENCE OF NAME/DOB (SEQUENCE NUMBER EQUALS 0)
 .S SEQ=$P($G(^VAT(394.62,DATAPTR,"SQNCE")),"^",1)
 .Q:(SEQ'=0)
 .;SET APPROPRIATE VALUE
 .I (FIELD=.01) D
 ..S NAME=VALUE
 ..S STOP=STOP+1
 .I (FIELD=.03) D  Q
 ..;CONVERT DOB TO FILEMAN FORMAT
 ..S DOB=$$E2IDT^PPPCNV1(VALUE)
 ..S:(DOB="-1") DOB=""
 ..S STOP=STOP+2
 ;RETURN VALUES
 Q (RXAVAIL_"^"_NAME_"^"_DOB)
