PSSPOIM ;BIR/RTR-Orderable Items by VA Generic Name only ; 09/01/98 7:11
;;1.0;PHARMACY DATA MANAGEMENT;**15**;9/30/97
;K ^TMP("PSSD",$J)
I '$G(PSMATCH) G CANT
;VA Generic Name only that can match
BEG F RRR=0:0 S RRR=$O(^PSDRUG(RRR)) Q:'RRR D
.K NODE,PSONAME,PSOPTR
.S NODE=$G(^PSDRUG(RRR,"ND")),PSONAME=$P($G(^(0)),"^"),PSOPTR=$P($G(^(2)),"^"),DA=$P(NODE,"^"),K=$P(NODE,"^",3),X=$$PSJDF^PSNAPIS(DA,K),DOSE1=X
.Q:PSONAME=""
.I +PSOPTR Q
.I '$P(NODE,"^") Q
.;Next 5 lines of code could only apply if this report is run and
.;there are Dispensed drugs that are already matched
.K ^TMP($J,"PSSUP") I +$P(NODE,"^"),+$P(NODE,"^",3) F GG=0:0 S GG=$O(^PSDRUG("AND",+NODE,GG)) Q:'GG I +$P($G(^PSDRUG(GG,2)),"^"),$D(^PS(50.7,$P(^PSDRUG(GG,2),"^"),0)) D
..S ONO=$G(^PSDRUG(GG,"ND")) I +$P(ONO,"^"),+$P(ONO,"^",3),DOSE1'=0 S DA=$P($G(ONO),"^"),K=$P($G(ONO),"^",3),X=$$PSJDF^PSNAPIS(DA,K),DOSE2=X I DOSE2'=0 D
...I DOSE1=DOSE2 S ^TMP($J,"PSSUP",GG)=$P(^PSDRUG(GG,2),"^")
.S (COM,COMSUP)=0 I $O(^TMP($J,"PSSUP",0)) S COM=1 S FF=$O(^TMP($J,"PSSUP",0)),SUPER=^TMP($J,"PSSUP",FF) F FF=0:0 S FF=$O(^TMP($J,"PSSUP",FF)) Q:'FF I SUPER'=^TMP($J,"PSSUP",FF) S COMSUP=1
.I COM,COMSUP Q
.I COM,'COMSUP S SSS=$O(^TMP($J,"PSSUP",0)),SSS=^TMP($J,"PSSUP",SSS) S ^TMP("PSSD",$J,$P($G(^PS(50.7,SUPER,0)),"^")_" "_$P($G(^PS(50.606,+$P($G(^PS(50.7,SSS,0)),"^",2),0)),"^"),PSONAME)="" Q
.I +$P(NODE,"^"),+$P(NODE,"^",3) S DA=$P($G(NODE),"^"),X=$$VAGN^PSNAPIS(DA),VAG=X I VAG'=0,DOSE1'=0 D
..I $L(VAG)<41 S ^TMP("PSSD",$J,$P(DOSE1,"^",2),PSONAME)=""
END K ^TMP($J,"PSSUP"),APPL,COM,COMSUP,FF,GG,NODE,ONO,POINAME,PSOPTR,PSPTR,RRR,SSS,SUPER Q
CANT ;Generic name only, cannot match
K ^TMP("PSSD",$J,"ZZZZ")
F ZZ=0:0 S ZZ=$O(^PSDRUG(ZZ)) Q:'ZZ D I TMPFLAG S ^TMP("PSSD",$J,"ZZZZ",PSDNAME)=REASON
.K PTDOS,DOSEF,REASON
.S PSND=$G(^PSDRUG(ZZ,"ND")),PSDNAME=$P($G(^(0)),"^"),PSOPRT=$P($G(^(2)),"^"),TMPFLAG=0 S DA=$P($G(PSND),"^"),K=$P($G(PSND),"^",3),X=$$PSJDF^PSNAPIS(DA,K),DSE=X,X=$$VAGN^PSNAPIS(DA),GN1=X
.I +PSOPRT Q
.S PSQFLAG=0 I +$P(PSND,"^"),+$P(PSND,"^",3),GN1'=0,DSE'=0 D
..I DSE'=0,$D(^PS(50.606,$P(DSE,"^"),0)),$L(GN1)<41 S PSQFLAG=1
.I PSQFLAG Q
.S TMPFLAG=1
.I $P(PSND,"^")="" S REASON="NDF link missing or incomplete" Q
.I $P(PSND,"^",3)="" S REASON="No PSNDF VA Product Name Entry" Q
.I GN1=0 S REASON="Invalid National Drug File entry" Q
.S PSVA=$P(PSND,"^",3),DA=$P(PSND,"^"),K=PSVA,X=$$PROD0^PSNAPIS(DA,K) I X']"" S REASON="Invalid PSNDF VA Product Name Entry" Q
.I DSE=0 S REASON="No Dosage Form Entry in NDF" Q
.I DSE=0 S REASON="Missing Dosage Form in NDF" Q
.I DSE=0 S REASON="Invalid entry in Dosage Form File" Q
.I $L(GN1)>40 S REASON="Generic name greater than 40 characters" Q
.S REASON="Undertermined problem" Q
DONE K DOSEFORM,DOSEPTR,PSAPP,PSDNAME,PSND,PSQFLAG,PSVA,TMPFLAG,ZZ Q
PSSPOIM ;BIR/RTR-Orderable Items by VA Generic Name only ; 09/01/98 7:11
+1 ;;1.0;PHARMACY DATA MANAGEMENT;**15**;9/30/97
+2 ;K ^TMP("PSSD",$J)
+3 IF '$GET(PSMATCH)
GOTO CANT
+4 ;VA Generic Name only that can match
BEG FOR RRR=0:0
SET RRR=$ORDER(^PSDRUG(RRR))
IF 'RRR
QUIT
Begin DoDot:1
+1 KILL NODE,PSONAME,PSOPTR
+2 SET NODE=$GET(^PSDRUG(RRR,"ND"))
SET PSONAME=$PIECE($GET(^(0)),"^")
SET PSOPTR=$PIECE($GET(^(2)),"^")
SET DA=$PIECE(NODE,"^")
SET K=$PIECE(NODE,"^",3)
SET X=$$PSJDF^PSNAPIS(DA,K)
SET DOSE1=X
+3 IF PSONAME=""
QUIT
+4 IF +PSOPTR
QUIT
+5 IF '$PIECE(NODE,"^")
QUIT
+6 ;Next 5 lines of code could only apply if this report is run and
+7 ;there are Dispensed drugs that are already matched
+8 KILL ^TMP($JOB,"PSSUP")
IF +$PIECE(NODE,"^")
IF +$PIECE(NODE,"^",3)
FOR GG=0:0
SET GG=$ORDER(^PSDRUG("AND",+NODE,GG))
IF 'GG
QUIT
IF +$PIECE($GET(^PSDRUG(GG,2)),"^")
IF $DATA(^PS(50.7,$PIECE(^PSDRUG(GG,2),"^"),0))
Begin DoDot:2
+9 SET ONO=$GET(^PSDRUG(GG,"ND"))
IF +$PIECE(ONO,"^")
IF +$PIECE(ONO,"^",3)
IF DOSE1'=0
SET DA=$PIECE($GET(ONO),"^")
SET K=$PIECE($GET(ONO),"^",3)
SET X=$$PSJDF^PSNAPIS(DA,K)
SET DOSE2=X
IF DOSE2'=0
Begin DoDot:3
+10 IF DOSE1=DOSE2
SET ^TMP($JOB,"PSSUP",GG)=$PIECE(^PSDRUG(GG,2),"^")
End DoDot:3
End DoDot:2
+11 SET (COM,COMSUP)=0
IF $ORDER(^TMP($JOB,"PSSUP",0))
SET COM=1
SET FF=$ORDER(^TMP($JOB,"PSSUP",0))
SET SUPER=^TMP($JOB,"PSSUP",FF)
FOR FF=0:0
SET FF=$ORDER(^TMP($JOB,"PSSUP",FF))
IF 'FF
QUIT
IF SUPER'=^TMP($JOB,"PSSUP",FF)
SET COMSUP=1
+12 IF COM
IF COMSUP
QUIT
+13 IF COM
IF 'COMSUP
SET SSS=$ORDER(^TMP($JOB,"PSSUP",0))
SET SSS=^TMP($JOB,"PSSUP",SSS)
SET ^TMP("PSSD",$JOB,$PIECE($GET(^PS(50.7,SUPER,0)),"^")_" "_$PIECE($GET(^PS(50.606,+$PIECE($GET(^PS(50.7,SSS,0)),"^",2),0)),"^"),PSONAME)=""
QUIT
+14 IF +$PIECE(NODE,"^")
IF +$PIECE(NODE,"^",3)
SET DA=$PIECE($GET(NODE),"^")
SET X=$$VAGN^PSNAPIS(DA)
SET VAG=X
IF VAG'=0
IF DOSE1'=0
Begin DoDot:2
+15 IF $LENGTH(VAG)<41
SET ^TMP("PSSD",$JOB,$PIECE(DOSE1,"^",2),PSONAME)=""
End DoDot:2
End DoDot:1
END KILL ^TMP($JOB,"PSSUP"),APPL,COM,COMSUP,FF,GG,NODE,ONO,POINAME,PSOPTR,PSPTR,RRR,SSS,SUPER
QUIT
CANT ;Generic name only, cannot match
+1 KILL ^TMP("PSSD",$JOB,"ZZZZ")
+2 FOR ZZ=0:0
SET ZZ=$ORDER(^PSDRUG(ZZ))
IF 'ZZ
QUIT
Begin DoDot:1
+3 KILL PTDOS,DOSEF,REASON
+4 SET PSND=$GET(^PSDRUG(ZZ,"ND"))
SET PSDNAME=$PIECE($GET(^(0)),"^")
SET PSOPRT=$PIECE($GET(^(2)),"^")
SET TMPFLAG=0
SET DA=$PIECE($GET(PSND),"^")
SET K=$PIECE($GET(PSND),"^",3)
SET X=$$PSJDF^PSNAPIS(DA,K)
SET DSE=X
SET X=$$VAGN^PSNAPIS(DA)
SET GN1=X
+5 IF +PSOPRT
QUIT
+6 SET PSQFLAG=0
IF +$PIECE(PSND,"^")
IF +$PIECE(PSND,"^",3)
IF GN1'=0
IF DSE'=0
Begin DoDot:2
+7 IF DSE'=0
IF $DATA(^PS(50.606,$PIECE(DSE,"^"),0))
IF $LENGTH(GN1)<41
SET PSQFLAG=1
End DoDot:2
+8 IF PSQFLAG
QUIT
+9 SET TMPFLAG=1
+10 IF $PIECE(PSND,"^")=""
SET REASON="NDF link missing or incomplete"
QUIT
+11 IF $PIECE(PSND,"^",3)=""
SET REASON="No PSNDF VA Product Name Entry"
QUIT
+12 IF GN1=0
SET REASON="Invalid National Drug File entry"
QUIT
+13 SET PSVA=$PIECE(PSND,"^",3)
SET DA=$PIECE(PSND,"^")
SET K=PSVA
SET X=$$PROD0^PSNAPIS(DA,K)
IF X']""
SET REASON="Invalid PSNDF VA Product Name Entry"
QUIT
+14 IF DSE=0
SET REASON="No Dosage Form Entry in NDF"
QUIT
+15 IF DSE=0
SET REASON="Missing Dosage Form in NDF"
QUIT
+16 IF DSE=0
SET REASON="Invalid entry in Dosage Form File"
QUIT
+17 IF $LENGTH(GN1)>40
SET REASON="Generic name greater than 40 characters"
QUIT
+18 SET REASON="Undertermined problem"
QUIT
End DoDot:1
IF TMPFLAG
SET ^TMP("PSSD",$JOB,"ZZZZ",PSDNAME)=REASON
DONE KILL DOSEFORM,DOSEPTR,PSAPP,PSDNAME,PSND,PSQFLAG,PSVA,TMPFLAG,ZZ
QUIT