| 1 | PSJORAPI ;BIR/LDT-API utility routine ;7/8/00 | 
|---|
| 2 | ;;5.0; INPATIENT MEDICATIONS ;**48**;16 DEC 1997 | 
|---|
| 3 | ; | 
|---|
| 4 | ; Reference to ^PSDRUG is supported by DBIA 2192. | 
|---|
| 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(55 is supported by DBIA 2191. | 
|---|
| 8 | ; | 
|---|
| 9 | EN(PSJB,PSJE,PSJX,PSJDT,PSJN)      ; | 
|---|
| 10 | ;PSJB - begin date | 
|---|
| 11 | ;PSJE - end date | 
|---|
| 12 | ;PSJX - medication array | 
|---|
| 13 | ;PSJDT - fill date (not used by Inaptient) | 
|---|
| 14 | ;PSJN - node subscript | 
|---|
| 15 | ; | 
|---|
| 16 | N PSJRD,PSJDRG,PSJND,PSJPDFN,PSJCX,PSJMED1,PSJMED2,PSJDNM,PSJBEG,PSJEND,PSJSTRT,PSJSTP | 
|---|
| 17 | Q:'$G(PSJB)!('$G(PSJE)) | 
|---|
| 18 | Q:$G(PSJN)="" | 
|---|
| 19 | K ^TMP(PSJN,$J),^TMP($J,"PSJCT") | 
|---|
| 20 | UD ;Check for Unit Dose orders | 
|---|
| 21 | N PSJND2,PSJORD,PSJDDRG | 
|---|
| 22 | S PSJBEG=PSJB-.0001,PSJEND=PSJE+.999999 | 
|---|
| 23 | F  S PSJBEG=$O(^PS(55,"AUDS",PSJBEG)) Q:'PSJBEG!(PSJBEG>PSJEND)  S PSJPDFN=0 F  S PSJPDFN=$O(^PS(55,"AUDS",PSJBEG,PSJPDFN)) Q:'PSJPDFN  D | 
|---|
| 24 | . S PSJORD=0 F  S PSJORD=$O(^PS(55,"AUDS",PSJBEG,PSJPDFN,PSJORD)) Q:'PSJORD  D | 
|---|
| 25 | .. S PSJND2=$G(^PS(55,PSJPDFN,5,PSJORD,2)),PSJSTRT=$P(PSJND2,"^",2),PSJSTP=$P(PSJND2,"^",4) | 
|---|
| 26 | .. S PSJDDRG=0 F  S PSJDDRG=$O(^PS(55,PSJPDFN,5,PSJORD,1,PSJDDRG)) Q:'PSJDDRG  S PSJDRG=+$G(^PS(55,PSJPDFN,5,PSJORD,1,PSJDDRG,0)),PSJND=+$G(^PSDRUG(+PSJDRG,"ND")),PSJDNM=$P($G(^(0)),"^") D MED | 
|---|
| 27 | IV ;Check for IV orders | 
|---|
| 28 | N PSJND0,PSJORD,PSJDDRG,FIL,DRG,DRGTYP | 
|---|
| 29 | S PSJBEG=PSJB-.0001,PSJEND=PSJE+.999999 | 
|---|
| 30 | F  S PSJBEG=$O(^PS(55,"AIVS",PSJBEG)) Q:'PSJBEG!(PSJBEG>PSJEND)  S PSJPDFN=0 F  S PSJPDFN=$O(^PS(55,"AIVS",PSJBEG,PSJPDFN)) Q:'PSJPDFN  D | 
|---|
| 31 | . S PSJORD=0 F  S PSJORD=$O(^PS(55,"AIVS",PSJBEG,PSJPDFN,PSJORD)) Q:'PSJORD  D | 
|---|
| 32 | .. S PSJND0=$G(^PS(55,PSJPDFN,"IV",PSJORD,0)),PSJSTRT=$P(PSJND0,"^",2),PSJSTP=$P(PSJND0,"^",3) | 
|---|
| 33 | .. F DRGTYP="AD","SOL" F DRG=0:0 S DRG=$O(^PS(55,PSJPDFN,"IV",PSJORD,DRGTYP,DRG)) Q:'DRG  D | 
|---|
| 34 | ... S PSJDDRG=+$G(^PS(55,PSJPDFN,"IV",PSJORD,DRGTYP,DRG,0)),FIL=$S(DRGTYP="AD":52.6,1:52.7),PSJDRG=$P($G(^PS(FIL,+PSJDDRG,0)),"^",2),PSJND=+$G(^PSDRUG(+PSJDRG,"ND")),PSJDNM=$P($G(^(0)),"^") D MED | 
|---|
| 35 | G END | 
|---|
| 36 | Q | 
|---|
| 37 | ; | 
|---|
| 38 | MED ;Check medication array for matches | 
|---|
| 39 | K PSJMED1,PSJMED2,PSJMED3 | 
|---|
| 40 | I $D(PSJX(PSJDRG_";PSDRUG(")) S PSJMED1=1 D MEDS Q | 
|---|
| 41 | I $G(PSJND),$D(PSJX(PSJND_";PSNDF(50.6,")) S PSJMED2=1 D MEDS Q | 
|---|
| 42 | ;Here, add class check when ready, use PSJMED2 for NDF, default to 1 for VA Class in MEDS | 
|---|
| 43 | Q | 
|---|
| 44 | MEDS I $D(^TMP($J,"PSJCT",PSJPDFN)) S (PSJCX,^TMP($J,"PSJCT",PSJPDFN))=^TMP($J,"PSJCT",PSJPDFN)+1 | 
|---|
| 45 | I '$D(^TMP($J,"PSJCT",PSJPDFN)) S (PSJCX,^TMP($J,"PSJCT",PSJPDFN))=1 | 
|---|
| 46 | S ^TMP(PSJN,$J,PSJPDFN,PSJCX,0)=$S($G(PSJMED1):PSJDRG_";PSDRUG(",1:$G(PSJND)_";PSNDF(50.6,") | 
|---|
| 47 | S ^TMP(PSJN,$J,PSJPDFN,PSJCX,1)=$G(PSJSTRT)_"^^"_$G(PSJDNM)_"^^"_$G(PSJSTP) | 
|---|
| 48 | Q | 
|---|
| 49 | END ; | 
|---|
| 50 | K ^TMP($J,"PSJCT") | 
|---|
| 51 | Q | 
|---|