PSSDIN ;BIR/WRT-API for National Formulary Indicator ;03/13/00
;;1.0;PHARMACY DATA MANAGEMENT;**38**;9/30/97
;
; Input: PSSOI=Orderable Item (optional), PSSDD=Dispense Drug(optional)
; Output: ^TMP("PSSDIN",$J,"OI",PSSOI,dtien,index)=text
; Output: ^TMP("PSSDIN",$J,"DD",PSSDD,dtien,index)=text
;
EN(PSSOI,PSSDD) ;entry point returns nfi text
K ^TMP("PSSDIN",$J) N IDX,IEN,WP,TY,TD
I $D(PSSOI),$G(PSSOI) D OITM
I $D(PSSDD),$G(PSSDD) D DPDRG
Q
OITM ;returns nfi text for a single orderable item
Q:'$O(^PS(50.7,PSSOI,1,0))
S TY="OI",TD=PSSOI F IDX=0:0 S IDX=$O(^PS(50.7,TD,1,IDX)) Q:'IDX S IEN=$P($G(^PS(50.7,PSSOI,1,IDX,0)),"^") D FTX
Q
FTX I $G(IEN),$D(^PS(51.7,IEN)) D:$P($G(^PS(51.7,IEN,0)),"^",2)=""!($P($G(^PS(51.7,IEN,0)),"^",2)>(DT-1))
.F WP=0:0 S WP=$O(^PS(51.7,IEN,2,WP)) Q:'WP S:$D(^PS(51.7,IEN,2,WP,0)) ^TMP("PSSDIN",$J,TY,TD,IEN,WP)=^PS(51.7,IEN,2,WP,0)
Q
DPDRG ;returns nfi text for a single dispense drug
Q:'$O(^PSDRUG(PSSDD,9,0))
S TY="DD",TD=PSSDD F IDX=0:0 S IDX=$O(^PSDRUG(TD,9,IDX)) Q:'IDX S IEN=$P($G(^PSDRUG(PSSDD,9,IDX,0)),"^") D FTX
Q
PROMPT() ;conditional read
Q:'$O(^TMP("PSSDIN",$J,"OI",0))&('$O(^TMP("PSSDIN",$J,"DD",0))) ""
S PSSOI=$O(^TMP("PSSDIN",$J,"OI",0)),PSSDD=$O(^TMP("PSSDIN",$J,"DD",0))
READ1 K DIR S DIR(0)="SB^N:NO"_$S($G(PSSDD):";D:DISPENSE DRUG",1:"")_$S($G(PSSOI):";O:ORDERABLE ITEM",1:"")_$S($G(PSSDD)&($G(PSSOI)):";B:ORDERABLE ITEM AND DISPENSE DRUG",1:"")
S DIR("A")=" Restriction/Guideline(s) exist. Display? ",DIR("B")="No" D ^DIR K DIR,PSSOI,PSSDD
Q $S(Y="B":"Y",1:Y)
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSSDIN 1571 printed Dec 13, 2024@02:30:51 Page 2
PSSDIN ;BIR/WRT-API for National Formulary Indicator ;03/13/00
+1 ;;1.0;PHARMACY DATA MANAGEMENT;**38**;9/30/97
+2 ;
+3 ; Input: PSSOI=Orderable Item (optional), PSSDD=Dispense Drug(optional)
+4 ; Output: ^TMP("PSSDIN",$J,"OI",PSSOI,dtien,index)=text
+5 ; Output: ^TMP("PSSDIN",$J,"DD",PSSDD,dtien,index)=text
+6 ;
EN(PSSOI,PSSDD) ;entry point returns nfi text
+1 KILL ^TMP("PSSDIN",$JOB)
NEW IDX,IEN,WP,TY,TD
+2 IF $DATA(PSSOI)
IF $GET(PSSOI)
DO OITM
+3 IF $DATA(PSSDD)
IF $GET(PSSDD)
DO DPDRG
+4 QUIT
OITM ;returns nfi text for a single orderable item
+1 if '$ORDER(^PS(50.7,PSSOI,1,0))
QUIT
+2 SET TY="OI"
SET TD=PSSOI
FOR IDX=0:0
SET IDX=$ORDER(^PS(50.7,TD,1,IDX))
if 'IDX
QUIT
SET IEN=$PIECE($GET(^PS(50.7,PSSOI,1,IDX,0)),"^")
DO FTX
+3 QUIT
FTX IF $GET(IEN)
IF $DATA(^PS(51.7,IEN))
if $PIECE($GET(^PS(51.7,IEN,0)),"^",2)=""!($PIECE($GET(^PS(51.7,IEN,0)),"^",2)>(DT-1))
Begin DoDot:1
+1 FOR WP=0:0
SET WP=$ORDER(^PS(51.7,IEN,2,WP))
if 'WP
QUIT
if $DATA(^PS(51.7,IEN,2,WP,0))
SET ^TMP("PSSDIN",$JOB,TY,TD,IEN,WP)=^PS(51.7,IEN,2,WP,0)
End DoDot:1
+2 QUIT
DPDRG ;returns nfi text for a single dispense drug
+1 if '$ORDER(^PSDRUG(PSSDD,9,0))
QUIT
+2 SET TY="DD"
SET TD=PSSDD
FOR IDX=0:0
SET IDX=$ORDER(^PSDRUG(TD,9,IDX))
if 'IDX
QUIT
SET IEN=$PIECE($GET(^PSDRUG(PSSDD,9,IDX,0)),"^")
DO FTX
+3 QUIT
PROMPT() ;conditional read
+1 if '$ORDER(^TMP("PSSDIN",$JOB,"OI",0))&('$ORDER(^TMP("PSSDIN",$JOB,"DD",0)))
QUIT ""
+2 SET PSSOI=$ORDER(^TMP("PSSDIN",$JOB,"OI",0))
SET PSSDD=$ORDER(^TMP("PSSDIN",$JOB,"DD",0))
READ1 KILL DIR
SET DIR(0)="SB^N:NO"_$SELECT($GET(PSSDD):";D:DISPENSE DRUG",1:"")_$SELECT($GET(PSSOI):";O:ORDERABLE ITEM",1:"")_$SELECT($GET(PSSDD)&($GET(PSSOI)):";B:ORDERABLE ITEM AND DISPENSE DRUG",1:"")
+1 SET DIR("A")=" Restriction/Guideline(s) exist. Display? "
SET DIR("B")="No"
DO ^DIR
KILL DIR,PSSOI,PSSDD
+2 QUIT $SELECT(Y="B":"Y",1:Y)