PPPGET1 ;ALB/DMB/DAD - PRESC. PRACT. GET ROUTINES ;10-AUG-93
 ;;1.0;PHARMACY PRESCRIPTION PRACTICE;**8,17,21,39**;APR 7,1995
 ;;Per VHA Directive 10-93-142, this routine should not be modified.
 ;
GETDFN(PATIENT,VERBOSE) ;RETURN DFN OF PATIENT
 ;THIS WILL RETURN THE SAME INFORMATION THAT DIC RETURNS IN Y
 ;
 N DIC,X,Y,DTOUT,DUOUT,RESULT,USRABORT,DGSENFLG
 ;
 S DGSENFLG=""
 S USRABORT=-1001
 S:'$D(PATIENT) PATIENT=""
 S:'$D(VERBOSE) VERBOSE=0
 S VERBOSE=$S(VERBOSE:"E",1:"")
 ;
 ;USER INTERFACE
 S DIC(0)="M"_VERBOSE
 S:VERBOSE="" DIC(0)=DIC(0)_"X"
 I PATIENT="" D
 .S DIC(0)=DIC(0)_"AQ"
 S X=PATIENT
 S DIC=2
 D ^DIC
 ;
 ;USER ABORTED PROCESS
 ;
 I $D(DTOUT)!($D(DUOUT)) S RESULT=USRABORT
 E  S RESULT=Y
 ;
 Q RESULT
 ;
GETSNIFN(STATION,VERBOSE) ;RETURN IFN OF INSTITUTION
 ;THIS WILL RETURN THE SAME INFORMATION THAT DIC RETURNS IN Y
 ;
 N DIC,X,Y,DTOUT,DUOUT,RESULT,USRABORT
 ;
 S USRABORT=-1001
 S:'$D(STATION) STATION=""
 S:'$D(VERBOSE) VERBOSE=0
 S VERBOSE=$S(VERBOSE:"E",1:"")
 ;
 ;USER INTERFACE
 S DIC(0)="M"_VERBOSE
 I STATION="" D
 .S DIC(0)=DIC(0)_"AQ"
 E  D
 .S DIC(0)=DIC(0)_"X"
 S X=STATION
 S DIC=4
 D ^DIC
 ;
 ;USER ABORTED PROCESS
 ;
 I $D(DTOUT)!($D(DUOUT)) S RESULT=USRABORT
 E  S RESULT=Y
 ;
 Q RESULT
 ;
GETFFX(FFXIFN,TARRY) ; Get data from an FFX entry
 ;
 N DIC,DR,DA,DIQ,DUOUT,DTOUT,PARMERR,NODE0,NODE1,ARRAYTMP,TMPARRAY,FMERR
 ;
 S PARMERR=-9001
 S FMERR=-9002
 S TMPARRAY="ARRAYTMP"
 ;
 I '$D(FFXIFN) Q PARMERR
 I '$D(TARRY) Q PARMERR
 K @TMPARRAY
 ;
 ; Get the data from the entry
 ;
 S NODE0=$G(^PPP(1020.2,FFXIFN,0)) Q:$P(NODE0,"^")="" PARMERR
 S NODE1=$G(^PPP(1020.2,FFXIFN,1))
 ;
 ; Get the patient name and SSN from the patient file
 ;
 S DA=$P(NODE0,"^")
 I DA'="" D
 .S DR=".01;.09"
 .S DIC=2
 .S DIQ=TMPARRAY
 .S DIQ(0)="E"
 .D EN^DIQ1
 .I '$D(@TMPARRAY) Q FMERR
 .S @TARRY@(FFXIFN,"NAME")=$G(@TMPARRAY@(2,DA,.01,"E"))
 .S @TARRY@(FFXIFN,"SSN")=$G(@TMPARRAY@(2,DA,.09,"E"))
 .K @TMPARRAY
 E  D
 .S @TARRY@(FFXIFN,"NAME")="NOT AVAILABLE"
 .S @TARRY@(FFXIFN,"SSN")="NOT AVAILABLE"
 ;
 ; Get the institution info from file 4
 ;
 S DA=$P(NODE0,"^",2)
 I DA'="" D
 .;VMP OIFO BAY PINES;VGF;PPP*1.0*39
 .S DOMAIN=$$DOMAIN^PPPFMX(FFXIFN)
 .S LNUM=0 I DOMAIN]"" S LNUM=$O(^PPP(1020.128,"A",DOMAIN,0))
 .I LNUM S DOMAIN=$P(^PPP(1020.128,LNUM,0),"^",2)
 .S @TARRY@(FFXIFN,"STANO")=$$GETSTANO(DA)
 .S @TARRY@(FFXIFN,"POV")=$P(DOMAIN,".",1)
 .K @TMPARRAY
 E  D
 .S @TARRY@(FFXIFN,"POV")="NOT AVAILABLE"
 .S @TARRY@(FFXIFN,"STANO")="NOT AVAILABLE"
 ;
 ; Now fill in the rest of the data
 ;
 I $P(NODE0,"^",3)'="" D
 .S @TARRY@(FFXIFN,"LVD")=$$I2EDT^PPPCNV1($P(NODE0,"^",3))
 E  S @TARRY@(FFXIFN,"LVD")="NOT AVAILABLE"
 I $P(NODE1,"^",2)'="" D
 .S @TARRY@(FFXIFN,"LPDX")=$$I2EDT^PPPCNV1($P(NODE1,"^",2))
 E  S @TARRY@(FFXIFN,"LPDX")="NOT AVAILABLE"
 ;VMP OIFO BAY PINES;VGF;PPP*1.0*39
 I $G(DOMAIN)]"" D
 .S @TARRY@(FFXIFN,"DOMAIN")=$G(DOMAIN)
 E  S @TARRY@(FFXIFN,"DOMAIN")="NOT AVAILABLE"
 I $P(NODE1,"^",3)'="" D
 .S @TARRY@(FFXIFN,"STATUS")=$P($$GETPDXST^PPPGET7($P(NODE1,"^",3)),"^",2)
 E  S @TARRY@(FFXIFN,"STATUS")="NOT AVAILABLE"
 I $P(NODE1,"^",4)'="" D
 .S @TARRY@(FFXIFN,"LBRD")=$$I2EDT^PPPCNV1($P(NODE1,"^",4))
 E  S @TARRY@(FFXIFN,"LBRD")="NOT AVAILABLE"
 I $P(NODE0,"^",4)'="" D
 .S @TARRY@(FFXIFN,"SOURCE")=$S(($P(NODE0,"^",4)=1):"MANUAL",1:"AUTO")
 E  S @TARRY@(FFXIFN,"SOURCE")="NOT AVAILABLE"
 I $P(NODE0,"^",5)'="" D
 .S @TARRY@(FFXIFN,"ED")=$$I2EDT^PPPCNV1($P(NODE0,"^",5))
 E  S @TARRY@(FFXIFN,"ED")="NOT AVAILABLE"
 Q 0
 ;
GETFFIFN(PATDFN,SNIFN) ; Get the FFX ifn for a patient/station entry
 ;
 N PARMERR,FINDERR,FFIFN
 ;
 S PARMERR=-9001
 S FINDERR=-9003
 ;
 I '$D(PATDFN) K PPPSRT Q PARMERR
 I '$D(SNIFN) K PPPSRT Q PARMERR
 ;
 S FFIFN=$O(^PPP(1020.2,"APOV",PATDFN,SNIFN,""))
 I FFIFN'>0 Q FINDERR
 Q FFIFN
 ;
GETSSN(DFN) ;
 ;
 N DIC,DA,DR,DIQ,PPPTMP,SSN,DUOUT,DTOUT
 ;
 S DIC=2,DA=DFN,DR=".09",DIQ="PPPTMP",DIQ(0)="E"
 D EN^DIQ1
 S SSN=$G(PPPTMP(2,DFN,.09,"E"))
 I SSN="" Q -1
 Q SSN
 ;
GETSTANO(SNIFN) ;
 I $D(^DIC(4,"D",SNIFN)) S STANO=SNIFN Q STANO
 I $D(^PPP(1020.8,"B",SNIFN)) S STANO=SNIFN Q STANO
 ;
 N DIC,DA,DR,DIQ,PPPTMP,STANO
 ;
 S DIC=4,DA=SNIFN,DR="99",DIQ="PPPTMP",DIQ(0)="E"
 ;PPP*1*21
 D EN^DIQ1
 S STANO=$G(PPPTMP(4,SNIFN,99,"E"))
 I STANO="",$D(^PPP(1020.8,"B",SNIFN)) S STANO=SNIFN
 I STANO="" Q -1
 Q STANO
 ;
GETPATNM(DFN) ;
 ;
 N DIC,DA,DR,DIQ,PPPTMP,NAME
 ;
 S DIC=2,DA=DFN,DR=".01",DIQ="PPPTMP",DIQ(0)="E"
 D EN^DIQ1
 S NAME=$G(PPPTMP(2,DFN,.01,"E"))
 I NAME="" Q -1
 Q NAME
 ;
GETSTANM(SNIFN) ;
 ;
 N NAME
 ;VMP OIFO BAY PINES;VGF;PPP*1.0*39
 S SNIFN=$O(^PPP(1020.8,"B",SNIFN,""))
 I SNIFN="" Q -1
 S NAME=$P($G(^PPP(1020.8,SNIFN,0)),"^",2),NAME=$P(NAME,".",1)
 I NAME="" Q -1
 Q NAME
