| 1 | PSJDIN ;BIR/MV - National Formulary Indicator Utility ;4 MAR 2000/ 4:27 PM
|
---|
| 2 | ;;5.0; INPATIENT MEDICATIONS ;**50,56,76**;16 DEC 97
|
---|
| 3 | ;
|
---|
| 4 | ; Reference to ^PSSDIN is supported by DBIA# 3166.
|
---|
| 5 | ; Reference to ^PS(52.6 is supported by DBIA# 1231.
|
---|
| 6 | ; Reference to ^PS(52.7 is supported by DBIA# 2173.
|
---|
| 7 | ; Reference to ^PS(50.7 is supported by DBIA# 2180.
|
---|
| 8 | ; Reference tp ^PSDRUG is supported by DBIA# 2192.
|
---|
| 9 | ;
|
---|
| 10 | DINIV(FIL,DRGTMP) ;
|
---|
| 11 | ;*Find the DD & OI IEN for the additive or solution
|
---|
| 12 | ;*FIL: 52.6 or 52.7
|
---|
| 13 | ;*DRGTMP: Additive or Solution's IEN
|
---|
| 14 | ;
|
---|
| 15 | NEW PSJDRG,PSJOI,PSJDD,PSJDIN,PSJINDEX
|
---|
| 16 | S PSJDRG=$P(^PS(FIL,+DRGTMP,0),U,2),PSJOI=$P(^PS(FIL,+DRGTMP,0),U,11)
|
---|
| 17 | D DIN(PSJOI,PSJDRG)
|
---|
| 18 | Q
|
---|
| 19 | DIN(PSJOI,PSJDRG) ;
|
---|
| 20 | ;*This will issue the Restriction/guideline prompt for both OI & DD
|
---|
| 21 | ;*PSJOI: Orderable Item IEN
|
---|
| 22 | ;*PSJDRG: Dispense drug IEN
|
---|
| 23 | ;
|
---|
| 24 | NEW PSJDIN,PSJDD,PSJINDEX,Y,X,XIT
|
---|
| 25 | D EN^PSSDIN(PSJOI,PSJDRG)
|
---|
| 26 | Q:$O(^TMP("PSSDIN",$J,""))=""
|
---|
| 27 | S PSJDIN=$$PROMPT^PSSDIN
|
---|
| 28 | W:"DOY"[Y @IOF
|
---|
| 29 | I PSJDIN="D"!(PSJDIN="Y") D Q:XIT=U
|
---|
| 30 | . W !!,"Dispense Drug Text:" W ! D TXD("DD") W !!
|
---|
| 31 | I PSJDIN="O"!(PSJDIN="Y") D
|
---|
| 32 | . W !!,"Orderable Item Text:" W ! D TXD("OI") W !!
|
---|
| 33 | D PAUSE^VALM1,CLEAR^VALM1
|
---|
| 34 | Q
|
---|
| 35 | TXD(N1) ;
|
---|
| 36 | ;N1 = "OI" or "DD"
|
---|
| 37 | ;DISPLAY OI/DD DRUG TEXT
|
---|
| 38 | N N2,N3,N4,NX S XIT="",NX="PSSDIN" ;
|
---|
| 39 | S N2="" F S N2=$O(^TMP(NX,$J,N1,N2)) Q:'N2!(XIT=U) D
|
---|
| 40 | .S N3="" F S N3=$O(^TMP(NX,$J,N1,N2,N3)) Q:'N3!(XIT=U) D
|
---|
| 41 | ..S N4="" F S N4=$O(^TMP(NX,$J,N1,N2,N3,N4)) Q:'N4!(XIT=U) D
|
---|
| 42 | ...W !?5,^TMP(NX,$J,N1,N2,N3,N4) I $Y>15 W ! D HLD S XIT=X
|
---|
| 43 | Q
|
---|
| 44 | HLD ;
|
---|
| 45 | W !
|
---|
| 46 | ;K DIR S DIR(0)="E",DIR("A")="Press Return to Continue" D ^DIR K DIR
|
---|
| 47 | K DIR
|
---|
| 48 | S DIR(0)="E",DIR("A")="Press Return to Continue or ""^"" to Exit: "
|
---|
| 49 | D ^DIR K DIR
|
---|
| 50 | W @IOF
|
---|
| 51 | Q
|
---|
| 52 | NFIV(FIL,PSJIVIEN,PSJNF) ;
|
---|
| 53 | ;*Return N/F and msg display for ad/sol.
|
---|
| 54 | ;*FIL: "AD" or "SOL"
|
---|
| 55 | ;*PSIVIEN: Additive or Solution's IEN
|
---|
| 56 | ;*PSJNF: 0 node from file 50
|
---|
| 57 | ;*PSJNF("NF"): Only exist if it is a Non-formulary
|
---|
| 58 | ;*PSJNF("MSG"): Return the message field to be displayed /w IV names
|
---|
| 59 | ;
|
---|
| 60 | S PSJNF=$G(^PSDRUG(+$P($G(^PS(FIL,+PSJIVIEN,0)),U,2),0))
|
---|
| 61 | S PSJNF("NF")=$S($P(PSJNF,U,9)=1:" *N/F*",1:"")
|
---|
| 62 | S PSJNF("MSG")=$P(PSJNF,U,10)
|
---|
| 63 | Q
|
---|
| 64 | DINFLIV(DRG) ;
|
---|
| 65 | ;*This module will find all drug text that exist for the Orderable
|
---|
| 66 | ;*Items & dispense drugs associated with the Additive(s) & Solution(s)
|
---|
| 67 | ;*within the IV order. Once a drug text exist, return the <DIN>
|
---|
| 68 | ;*indicator to be displayed within the order view.
|
---|
| 69 | ;
|
---|
| 70 | ;*DRG: Drug array from the IV order
|
---|
| 71 | NEW PSJFIL,PSJND,PSJX,PSJFL
|
---|
| 72 | F PSJFIL="AD","SOL" F PSJND=0:0 S PSJND=$O(DRG(PSJFIL,PSJND)) Q:'PSJND!$G(PSJFL) D
|
---|
| 73 | . S PSJX=$G(^PS($S(PSJFIL="AD":52.6,1:52.7),+DRG(PSJFIL,PSJND),0)) D EN^PSSDIN($P(PSJX,U,11),$P(PSJX,U,2))
|
---|
| 74 | . I $O(^TMP("PSSDIN",$J,""))]"" S PSJFL=1 Q
|
---|
| 75 | I '$G(PSJFL),$G(PSJORD)["P" S PSJFL=$$DINFLUD(+P("PD")),PSJFL=$S(PSJFL]"":1,1:0)
|
---|
| 76 | K ^TMP("PSSDIN",$J)
|
---|
| 77 | Q $S($G(PSJFL):" <DIN>",1:"")
|
---|
| 78 | ;
|
---|
| 79 | DINFLUD(PSJOI,PSJDDA) ;
|
---|
| 80 | ;*This module will find all drug text that exist for the Orderable
|
---|
| 81 | ;*items & dispense drugs associated with the unit dose order. Once
|
---|
| 82 | ;*a drug text exist, return the <DIN> indicator to be displayed with
|
---|
| 83 | ;*the order view.
|
---|
| 84 | ;*PSJOI: Orderable IEN (Require)
|
---|
| 85 | ;*PSJDDA: Dispense drug array within the order (Optional)
|
---|
| 86 | ;
|
---|
| 87 | NEW PSJFL,PSJDD
|
---|
| 88 | D EN^PSSDIN(PSJOI) I $O(^TMP("PSSDIN",$J,"OI",0)) K ^TMP("PSSDIN",$J) Q "<DIN>"
|
---|
| 89 | F PSJDD=0:0 S PSJDD=$O(PSJDDA(PSJDD)) Q:'PSJDD D
|
---|
| 90 | . D EN^PSSDIN(,PSJDD) I $O(^TMP("PSSDIN",$J,"DD",0)) S PSJFL=1 Q
|
---|
| 91 | K ^TMP("PSSDIN",$J)
|
---|
| 92 | Q $S($G(PSJFL):"<DIN>",1:"")
|
---|
| 93 | ;
|
---|
| 94 | DINHIDE(PSJDFN,PSJORD) ;
|
---|
| 95 | ;*Display drug text from the hidden action.
|
---|
| 96 | ;*PSJDFN: Patient IEN (Require)
|
---|
| 97 | ;*PSJORD: Order #_"UVP" (Required)
|
---|
| 98 | ;*DRG: IV DRG array (Required for IV but Optional for UD orders)
|
---|
| 99 | ;
|
---|
| 100 | D:PSJORD["V" IV
|
---|
| 101 | D:PSJORD["U" UD
|
---|
| 102 | I PSJORD["P" D
|
---|
| 103 | . D @($S($O(DRG("AD",0)):"IV",$O(DRG("SOL",0)):"IV",1:"UD"))
|
---|
| 104 | I PSJORD="" D NEWUD
|
---|
| 105 | K ^TMP("PSSDIN",$J)
|
---|
| 106 | Q
|
---|
| 107 | IV ;
|
---|
| 108 | ;NEW DRG,DRGI,DRGT,ND,ON55,Y
|
---|
| 109 | ;D:PSJORD["P" GT531^PSIVORFA(DFN,PSJORD)
|
---|
| 110 | ;I PSJORD["V" S ON55=PSJORD D GTDRG^PSIVORFB
|
---|
| 111 | ;*Loop thru IV DRG array to find OI & DD IEN from each AD & SOL.
|
---|
| 112 | ;
|
---|
| 113 | NEW FIL,NAME,PSJDD,PSJNF,PSJOI,PSJX,Y,X,PSJXY
|
---|
| 114 | D FULL^VALM1 W @IOF
|
---|
| 115 | W !,"Drug restriction/guideline info:"
|
---|
| 116 | F FIL="AD","SOL" F PSJX=0:0 S PSJX=$O(DRG(FIL,PSJX)) Q:'PSJX D
|
---|
| 117 | . NEW X
|
---|
| 118 | . S PSJXY=1
|
---|
| 119 | . SET NAME=$P(DRG(FIL,PSJX),U,2)
|
---|
| 120 | . W !!,"IV "_$S(FIL="AD":"Additive",1:"Solution")_": "_NAME
|
---|
| 121 | . D NFIV(FIL,+PSJX,.PSJNF) W $G(PSJNF("NF")),!
|
---|
| 122 | . S X=$S(FIL="AD":$G(^PS(52.6,+DRG(FIL,PSJX),0)),1:$G(^PS(52.7,+DRG(FIL,PSJX),0)))
|
---|
| 123 | . S PSJOI=$P(X,U,11),PSJDD=$P(X,U,2) D EN^PSSDIN(+PSJOI,+PSJDD)
|
---|
| 124 | . D DINOI(PSJOI,3)
|
---|
| 125 | . D DINDD(PSJDD,3)
|
---|
| 126 | D:'$G(PSJXY) HLD
|
---|
| 127 | K ^TMP("PSSDIN",$J)
|
---|
| 128 | Q
|
---|
| 129 | UD ;
|
---|
| 130 | ;*Loop thru Unit dose order for Orderable Item & Dispense drug
|
---|
| 131 | ;
|
---|
| 132 | NEW F,PSJDD,PSJDDX,PSJOI,PSJXY
|
---|
| 133 | D FULL^VALM1 W @IOF
|
---|
| 134 | W !,"Drug restriction/guideline info:"
|
---|
| 135 | S F=$S(PSJORD["U":"^PS(55,PSJDFN,5,+PSJORD,",1:"^PS(53.1,+PSJORD,")
|
---|
| 136 | S PSJOI=+@(F_".2)") D EN^PSSDIN(PSJOI),DINOI(PSJOI,3)
|
---|
| 137 | ;*Loop thru dispense drug array
|
---|
| 138 | F PSJDDX=0:0 S PSJDDX=$O(@(F_"1,"_PSJDDX_")")) Q:'PSJDDX D
|
---|
| 139 | . S PSJXY=1
|
---|
| 140 | . S PSJDD=+@(F_"1,"_PSJDDX_",0)")
|
---|
| 141 | . D EN^PSSDIN(PSJOI,PSJDD)
|
---|
| 142 | . D DINDD(PSJDD,3)
|
---|
| 143 | D:'$G(PSJXY) HLD
|
---|
| 144 | K ^TMP("PSSDIN",$J)
|
---|
| 145 | Q
|
---|
| 146 | NEWUD ;*New backdoor order doesn't have an order# yet.
|
---|
| 147 | ;*Loop thru Orderable Item & Dispense drug
|
---|
| 148 | ;
|
---|
| 149 | NEW F,PSJDD,PSJDDX,PSJOI,PSJXY
|
---|
| 150 | D FULL^VALM1 W @IOF
|
---|
| 151 | W !,"Drug restriction/guideline info:"
|
---|
| 152 | S PSJOI=+$G(PSGPD) D EN^PSSDIN(PSJOI),DINOI(PSJOI,3)
|
---|
| 153 | ;*Loop thru dispense drug array
|
---|
| 154 | F PSJDDX=0:0 S PSJDDX=$O(^PS(53.45,PSJSYSP,2,PSJDDX)) Q:'PSJDDX D
|
---|
| 155 | . S PSJXY=1
|
---|
| 156 | . S PSJDD=+$G(^PS(53.45,PSJSYSP,2,PSJDDX,0))
|
---|
| 157 | . D EN^PSSDIN(PSJOI,PSJDD)
|
---|
| 158 | . D DINDD(PSJDD,3)
|
---|
| 159 | D:'$G(PSJXY) HLD
|
---|
| 160 | K ^TMP("PSSDIN",$J)
|
---|
| 161 | Q
|
---|
| 162 | DINOI(PSJOI,COL) ;
|
---|
| 163 | ;*Display drug text for Orderable Item
|
---|
| 164 | ;*OI: Orderable Item IEN
|
---|
| 165 | ;*COl: Column to display the text in
|
---|
| 166 | ;
|
---|
| 167 | NEW X,XX
|
---|
| 168 | W !!,?COL,"Orderable Item: "_$$OINAME^PSJLMUTL(PSJOI)_$$OINF(PSJOI),!
|
---|
| 169 | I '$O(^TMP("PSSDIN",$J,"OI",PSJOI,0)) W !,?10,"No information available",! Q
|
---|
| 170 | D TXD("OI") W !
|
---|
| 171 | Q
|
---|
| 172 | DINDD(PSJDD,COL) ;
|
---|
| 173 | ;*Display drug text for Dispense drug
|
---|
| 174 | ;*PSJDD: Dispense drug IEN
|
---|
| 175 | ;*COL: Column to display the text in
|
---|
| 176 | ;
|
---|
| 177 | NEW X
|
---|
| 178 | W !,?COL,"Dispense drug: "_$$DDNAME^PSJLMUTL(+PSJDD)_$$DDNF(PSJDD),!
|
---|
| 179 | I '$O(^TMP("PSSDIN",$J,"DD",PSJDD,0)) W !?10,"No information available",! D HLD Q
|
---|
| 180 | D TXD("DD"),HLD W @IOF
|
---|
| 181 | Q
|
---|
| 182 | OINF(PSJOI) ;
|
---|
| 183 | ;*Return *N/F* if the orderable item is Non-formulary
|
---|
| 184 | ;*PSJOI: Orderable item IEN
|
---|
| 185 | ;
|
---|
| 186 | Q $S($P($G(^PS(50.7,+PSJOI,0)),U,12)=1:" *N/F*",1:"")
|
---|
| 187 | ;
|
---|
| 188 | DDNF(PSJDD) ;
|
---|
| 189 | ;**Return *N/F* if the dispense drug is Non-formulary
|
---|
| 190 | ;*PSJDD: Dispense drug IEN
|
---|
| 191 | ;
|
---|
| 192 | Q $S($P($G(^PSDRUG(+PSJDD,0)),U,9)=1:" *N/F*",1:"")
|
---|
| 193 |
|
---|
| 194 |
|
---|
| 195 |
|
---|
| 196 |
|
---|
| 197 |
|
---|
| 198 |
|
---|