| 1 | PSGMAR0 ;BIR/CML3-GATHERS INFO FOR 24 HOUR MAR ;14 Oct 98 / 4:28 PM
 | 
|---|
| 2 |  ;;5.0; INPATIENT MEDICATIONS ;**8,15,20,111,145**;16 DEC 97;Build 17
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; Reference to ^PS(55 supported by DBIA #2191.
 | 
|---|
| 5 |  ; Reference to ^PS(59.7 supported by DBIA #2181.
 | 
|---|
| 6 |  ; Reference to CUR^FHORD7 supported by DBIA #2019.
 | 
|---|
| 7 | ENQ ;
 | 
|---|
| 8 |  S PSGMSORT=$P($G(^PS(59.7,1,26)),U,4)
 | 
|---|
| 9 |  K ^TMP($J) D NOW^%DTC S PSGDT=%,PSGMARWN="",PSJACNWP=1 D @("G"_PSGSS) I $D(^TMP($J))<10 U IO W:$Y @IOF W !!,"(No data found for 24 hour MAR run.)"
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 | DONE ;
 | 
|---|
| 13 |  K PSGMFOR
 | 
|---|
| 14 |  Q
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 | GG ; find individual wards in this ward group
 | 
|---|
| 17 |  F PSGMARWD=0:0 S PSGMARWD=$O(^PS(57.5,"AC",PSGMARWG,PSGMARWD)) Q:'PSGMARWD  D GW
 | 
|---|
| 18 |  Q
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 | GW ; find patients in each ward
 | 
|---|
| 21 |  I $D(^DIC(42,PSGMARWD,0)),$P(^(0),"^")]"" S PSGMARWN=$P(^(0),"^")
 | 
|---|
| 22 |  E  Q
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  I 'PSGMARWG S PSGMARWG=+$O(^PS(57.5,"AB",PSGMARWD,0))
 | 
|---|
| 25 |  F PSGP=0:0 S PSGP=$O(^DPT("CN",PSGMARWN,PSGP)) Q:'PSGP  D PSJAC2^PSJAC(1),DTSET:'$P(PSGMARDT,".",2) D GPI
 | 
|---|
| 26 |  Q
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 | GP ; go thru selected patients
 | 
|---|
| 29 |  F PSGP=0:0 S PSGP=$O(PSGPAT(PSGP)) Q:'PSGP  D PSJAC2^PSJAC(1),DTSET:'$P(PSGMARDT,".",2) D GPI
 | 
|---|
| 30 |  Q
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 | GL S CL="" F  S CL=$O(^PS(57.8,"AD",CG,CL)) Q:CL=""  D GC
 | 
|---|
| 33 |  Q
 | 
|---|
| 34 | GC S PSGAPWDN=$S($D(^SC(CL,0)):$P(^(0),"^"),1:"")
 | 
|---|
| 35 |  D DTSET:'$P(PSGMARDT,".",2)
 | 
|---|
| 36 |  ;DEM 04/19/2006 - PSGCAD = User selected start date/time minus .0001
 | 
|---|
| 37 |  S PSGCAD=PSGPLS-.0001
 | 
|---|
| 38 |  F  S PSGCAD=$O(^PS(55,"AIVC",PSGCAD)) Q:PSGCAD=""  D  ;DEM 04/19/2006 - Index by order stop date/time.
 | 
|---|
| 39 |  . S PSGP=0
 | 
|---|
| 40 |  . F  S PSGP=$O(^PS(55,"AIVC",PSGCAD,CL,PSGP)) Q:PSGP=""  D PSJAC2^PSJAC(1),DTSET:'$P(PSGMARDT,".",2) D GPI  ;DEM 04/19/2006 - Removed S PSJPWDN="C!"_CL D GPI. Want to rollup patients non-clinic orders under patients location.
 | 
|---|
| 41 |  ;DEM 04/19/2006 - PSGCAD = User selected start date/time minus .0001
 | 
|---|
| 42 |  S PSGCAD=PSGPLS-.0001
 | 
|---|
| 43 |  F  S PSGCAD=$O(^PS(55,"AUDC",PSGCAD)) Q:PSGCAD=""  D  ;DEM 04/19/2006 - Index by order stop date/time.
 | 
|---|
| 44 |  . S PSGP=0
 | 
|---|
| 45 |  . F  S PSGP=$O(^PS(55,"AUDC",PSGCAD,CL,PSGP)) Q:PSGP=""  D PSJAC2^PSJAC(1),DTSET:'$P(PSGMARDT,".",2) D GPI  ;DEM 04/19/2006 - Removed S PSJPWDN="C!"_CL D GPI. Want to rollup patients non-clinic orders under patients location.
 | 
|---|
| 46 |  Q
 | 
|---|
| 47 | GPI ; get patient info
 | 
|---|
| 48 |  ; PSGTMALL=1(sort by all team), PSGTM=1(individual team(S) selected).
 | 
|---|
| 49 |  S TM="" S:PSGSS="P"!(PSGSS="C")!(PSGSS="L") PSGMARWN=$S(PSJPWDN]"":PSJPWDN,1:"NOT FOUND")
 | 
|---|
| 50 |  S:PSJPRB="" PSJPRB="zz"
 | 
|---|
| 51 |  S:"GPCL"[PSGSS!('$G(PSGTM)&'$G(PSGTMALL)) TM="zz"
 | 
|---|
| 52 |  S:$G(TM)="" TM=$S(PSJPRB="zz":0,1:+$O(^PS(57.7,"AWRT",PSGMARWD,PSJPRB,0))),TM=$S('TM:"zz",'$D(^PS(57.7,PSGMARWD,1,TM,0)):TM,$P(^(0),"^")]"":$P(^(0),"^"),1:TM)
 | 
|---|
| 53 |  Q:'$G(PSGTMALL)&$G(PSGTM)&'$D(PSGTM(TM))
 | 
|---|
| 54 |  S PPN=$E($P(PSGP(0),"^"),1,15)_"^"_PSGP
 | 
|---|
| 55 |  N SUB1,SUB2 S:PSGRBPPN="P" SUB1=PPN,SUB2=PSJPRB S:PSGRBPPN="R" SUB1=PSJPRB,SUB2=PPN
 | 
|---|
| 56 |  I PSGMARB=1 D SPN Q
 | 
|---|
| 57 |  I PSGMTYPE[1 F XTYPE=2:1:6 D @XTYPE
 | 
|---|
| 58 |  I PSGMTYPE'[1 F XTYPE=2:1:6 D:PSGMTYPE[XTYPE @XTYPE
 | 
|---|
| 59 |  N PSGMAR24  ;DEM 04/19/2006 - 24 Hour MAR flag for call to shared routine ^PSGMMAR5 (24 Hour MAR Reports and 7 Day/14 Day MAR Reports both call ^PSGMMAR5).
 | 
|---|
| 60 |  S PSGMAR24=1
 | 
|---|
| 61 |  D ^PSGMMAR5
 | 
|---|
| 62 |  K PSGMAR24
 | 
|---|
| 63 |  D:$S(PSGSS["P"!(PSGSS="C")!(PSGSS="L"):$D(^TMP($J,PPN)),1:$D(^TMP($J,TM,PSGMARWN,SUB1,SUB2))) SPN
 | 
|---|
| 64 |  Q
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 | 2 ;Loop thru UD orders
 | 
|---|
| 67 |  ;DEM 04/19/2006
 | 
|---|
| 68 |  ;       Location variable PSGMARWC added to correctly rollup orders
 | 
|---|
| 69 |  ;       under location. The location can change if the UD order is
 | 
|---|
| 70 |  ;       assoicated with a clinic location. If the location changes
 | 
|---|
| 71 |  ;       under the aforementioned scenario, then PSGMARWC preserves
 | 
|---|
| 72 |  ;       the original value and is used to restore location to it's
 | 
|---|
| 73 |  ;       original value.
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 |  N PSGMARWC
 | 
|---|
| 76 |  S PSGMARWC=PSGMARWN    ;DEM 04/19/2006 - Preserve original value of patients location. If location is changed, then restore to original value after call to ORSET.
 | 
|---|
| 77 |  F PST="C","O","OC","P","R" F PSGMARED=PSGPLS-.0001:0 S PSGMARED=$O(^PS(55,PSGP,5,"AU",PST,PSGMARED)) Q:'PSGMARED  F PSGMARO=0:0 S PSGMARO=$O(^PS(55,PSGP,5,"AU",PST,PSGMARED,PSGMARO)) Q:'PSGMARO  D ORSET S:PSGMARWN'=PSGMARWC PSGMARWN=PSGMARWC
 | 
|---|
| 78 |  S PST="S" D ^PSGMIV
 | 
|---|
| 79 |  Q
 | 
|---|
| 80 | 3 ;Loop thru IV orders that are Piggy back and Syringes types. 
 | 
|---|
| 81 |  F PST="P","S" D ^PSGMIV
 | 
|---|
| 82 |  Q
 | 
|---|
| 83 | 4 ;Loop thru IV orders(Additives).
 | 
|---|
| 84 |  S PST="A" D ^PSGMIV
 | 
|---|
| 85 |  Q
 | 
|---|
| 86 | 5 ;Loop thru IV orders(Hyperal).
 | 
|---|
| 87 |  S PST="H" D ^PSGMIV
 | 
|---|
| 88 |  Q
 | 
|---|
| 89 | 6 ;Loop thru IV order(Chemo).
 | 
|---|
| 90 |  S PST="C" D ^PSGMIV
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 |  ; PSGMFOR is set to bypass "fill on request" when call ^PSGPL0.
 | 
|---|
| 94 | ORSET ; order record set
 | 
|---|
| 95 |  S PSGMFOR="",ND2=$G(^PS(55,PSGP,5,PSGMARO,2)),(SD,X)=$P($P(ND2,"^",2),".") Q:X>PSGPLF  S FD=$P($P(ND2,"^",4),"."),T=$P(ND2,"^",6)
 | 
|---|
| 96 |  ; 
 | 
|---|
| 97 |  S A=$G(^PS(55,PSGP,5,PSGMARO,8)) I $P(A,"^")]"" S PSGMARWN="C!"_$P(A,"^") I $G(SUB1)]"",$G(SUB2)]"",'$D(^TMP($J,TM,PSGMARWN,SUB1,SUB2)) D SPN
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 |  NEW MARX D DRGDISP^PSJLMUT1(PSGP,+PSGMARO_"U",20,0,.MARX,1)
 | 
|---|
| 100 |  S DRG=MARX(1)_U_PSGMARO_"U",QST=$S(PST="C"!(PST="O"):PST,PST="OC":"OA",PST="P":"OP",$P(ND2,"^")["PRN":"OR",1:"CR")
 | 
|---|
| 101 |  ;
 | 
|---|
| 102 |  S X="" I "OB"]QST,$P(ND2,U)'["@",$P(ND2,U,2)'>PSGPLS,$P(ND2,U,4)'<PSGPLF,$P(ND2,U,5),$P(ND2,U,6)<1441,$P(ND2,U,6)'="D" S X=$P(ND2,U,5),PSGPLC=1
 | 
|---|
| 103 |  E  I "OB"]QST S PSGPLO=PSGMARO K PSGMAR D ^PSGPL0 S (Q,X)="" F QX=0:0 S Q=$O(PSGMAR(Q)) Q:Q=""  S X=X_$E("0",2-$L(Q))_Q_"-"
 | 
|---|
| 104 |  S X=$S(QST["C"!(QST["O"):$P(ND2,"^",5),1:"")_"^"_X
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  ;
 | 
|---|
| 107 |  ;DAM 5-01-07 Add next line to include non-IV meds when printing by PATIENT and choosing to print "ALL MEDS"
 | 
|---|
| 108 |  I PSGSS="P" S ^TMP($J,PPN,PSGMARWN,$S(+PSGMSORT:$E(QST,1),1:QST),DRG)=X Q
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  ;DAM 5-01-07  Add check to see if user wants to include ward orders when printing by CLINIC GROUP
 | 
|---|
| 111 |  I PSGSS="L" Q:((PSGINWDG="")&(PSGMARWN'["C!"))  S ^TMP($J,PPN,PSGMARWN,$S(+PSGMSORT:$E(QST,1),1:QST),DRG)=X Q
 | 
|---|
| 112 |  ;
 | 
|---|
| 113 |  ;DAM 5-01-07 Add check to see if user wants to include ward orders when printing by CLINIC  
 | 
|---|
| 114 |  I PSGSS="C" Q:((PSGINWD="")&(PSGMARWN'["C!"))  I ((PSGMARWN[PSGCLNC)!(PSGMARWN'["C!")) D  Q
 | 
|---|
| 115 |  . S ^TMP($J,PPN,PSGMARWN,$S(+PSGMSORT:$E(QST,1),1:QST),DRG)=X
 | 
|---|
| 116 |  Q:(PSGSS="L")!(PSGSS="C")
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 |  ; DAM 5-01-07 Add check to see if user wants to include clinic orders when printing by WARD GROUP
 | 
|---|
| 119 |  I PSGSS="G" Q:((PSGINCLG="")&(PSGMARWN["C!"))  S ^TMP($J,TM,PSGMARWN,SUB1,SUB2,$S(+PSGMSORT:$E(QST,1),1:QST),DRG)=X
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 |  ;DAM 5-01-07 Add check to see if user wants to include clinic orders when printing by WARD. 
 | 
|---|
| 122 |  I (PSGSS="W") Q:((PSGINCL="")&(PSGMARWN["C!"))  S ^TMP($J,TM,PSGMARWN,SUB1,SUB2,$S(+PSGMSORT:$E(QST,1),1:QST),DRG)=X
 | 
|---|
| 123 |  ;
 | 
|---|
| 124 |  ;DAM 5-01-07  Add an XTMP global to swap location and patient name in the subscripts when printing MAR by WARD/PATIENT or WARD GROUP.
 | 
|---|
| 125 |  N PSGDEM S PSGDEM=X    ;transfer contents of patient drug information contained in "X" above to  a new variable temporarily
 | 
|---|
| 126 |  S PSGREP="PSGM_"_$J
 | 
|---|
| 127 |  S X1=DT,X2=1 D C^%DTC K %,%H,%T
 | 
|---|
| 128 |  S ^XTMP(PSGREP,0)=X_U_DT
 | 
|---|
| 129 |  I PSGRBPPN="P",PSGSS="W" Q:((PSGINCL="")&(PSGMARWN["C!"))  D        ;Construct XTMP global for printing by WARD
 | 
|---|
| 130 |  . S ^XTMP(PSGREP,TM,SUB1,PSGMARWN,SUB2,$S(+PSGMSORT:$E(QST,1),1:QST),DRG)=PSGDEM
 | 
|---|
| 131 |  I PSGRBPPN="P",PSGSS="G" Q:((PSGINCLG="")&(PSGMARWN["C!"))  D       ;Construct XTMP global for printing by WARD GROUP
 | 
|---|
| 132 |  . S ^XTMP(PSGREP,TM,SUB1,PSGMARWN,SUB2,$S(+PSGMSORT:$E(QST,1),1:QST),DRG)=PSGDEM
 | 
|---|
| 133 |  S X=PSGDEM    ;transfer contents of patient drug information contained in PSGDEM back to X
 | 
|---|
| 134 |  ;End DAM modifications 5-01-07
 | 
|---|
| 135 |  Q
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 | SPN ; set patient node
 | 
|---|
| 138 |  D DIET
 | 
|---|
| 139 |  S X=$P(PSGP(0),U)_U_$E($P(PSJPDOB,U,2),1,10)_";"_PSJPAGE_U_VA("PID")_U_PSJPDX_U_PSJPWT_U_PSJPWTD_U_PSJPHT_U_PSJPHTD_U_$P(PSJPAD,U,2)_U_$P(PSJPTD,U,2)_U_$P(PSJPSEX,U,2)_U_PSJPWD_U_PSGPLS_U_PSGPLF_U_PSGMARSD_U_PSGMARFD_U_PSGMARSP_U_PSGMARFP
 | 
|---|
| 140 |  I PSGSS="P"!(PSGSS="C")!(PSGSS="L") S ^TMP($J,PPN)=X_U_PSGMARWN_U_PSJPRB Q
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 |  ;
 | 
|---|
| 143 |  ;DAM 5-01-07  Add check to see if user wants to include clinic orders when printing by ward. 
 | 
|---|
| 144 |  I PSGSS="W" Q:((PSGINCL="")&(PSGMARWN["C!"))  S ^TMP($J,TM,PSGMARWN,SUB1,SUB2)=X
 | 
|---|
| 145 |  ;
 | 
|---|
| 146 |  ;DAM 5-01-07 Add check to see if user wants to include clinic orders when printing by ward group.
 | 
|---|
| 147 |  I PSGSS="G" Q:((PSGINCLG="")&(PSGMARWN["C!"))  S ^TMP($J,TM,PSGMARWN,SUB1,SUB2)=X
 | 
|---|
| 148 |  ;
 | 
|---|
| 149 |  ;DAM 5-01-07  Add an XTMP global to reverse location and patient name in the subscripts when printing MAR by WARD/PATIENT or WARD GROUP.
 | 
|---|
| 150 |  N PSGDEM S PSGDEM=X    ;transfer contents of patient demographics contained in "X" above to  a new variable temporarily
 | 
|---|
| 151 |  S PSGREP="PSGM_"_$J
 | 
|---|
| 152 |  S X1=DT,X2=1 D C^%DTC K %,%H,%T
 | 
|---|
| 153 |  S ^XTMP(PSGREP,0)=X_U_DT
 | 
|---|
| 154 |  I PSGRBPPN="P",PSGSS="W" Q:((PSGINCL="")&(PSGMARWN["C!"))  D    ;Construct XTMP global for printing by WARD
 | 
|---|
| 155 |  . S ^XTMP(PSGREP,TM,SUB1,PSGMARWN,SUB2)=PSGDEM
 | 
|---|
| 156 |  I PSGRBPPN="P",PSGSS="G" Q:((PSGINCLG="")&(PSGMARWN["C!"))  D   ;Construct XTMP global for printing by WARD GROUP
 | 
|---|
| 157 |  . S ^XTMP(PSGREP,TM,SUB1,PSGMARWN,SUB2)=PSGDEM
 | 
|---|
| 158 |  S X=PSGDEM    ;transfer contents of patient demographics contained in PSGDEM back to X
 | 
|---|
| 159 |  ;End DAM modifications 3-7-07
 | 
|---|
| 160 |  Q
 | 
|---|
| 161 | DIET ; Include abbr. diet label if indicated in the Site par.
 | 
|---|
| 162 |  NEW ADM,DFN,PSJMPAR K PSJDIET
 | 
|---|
| 163 |  S PSJMPAR=$G(^PS(59.7,1,26))
 | 
|---|
| 164 |  Q:'$P(PSJMPAR,U,3)
 | 
|---|
| 165 |  S DFN=PSGP,ADM=$G(^DPT("CN",PSGMARWN,DFN))
 | 
|---|
| 166 |  I +ADM D CUR^FHORD7 S PSJDIET=Y
 | 
|---|
| 167 |  Q
 | 
|---|
| 168 |  ;
 | 
|---|
| 169 | DTSET ;
 | 
|---|
| 170 |  S (PSGPLS,PSGPLF)=PSGMARDT
 | 
|---|
| 171 |  S PSJSYSW=$O(^PS(59.6,"B",+$G(PSJPWD),0))
 | 
|---|
| 172 |  S:PSJSYSW PSJSYSW0=$G(^PS(59.6,PSJSYSW,0))
 | 
|---|
| 173 |  I $D(PSJSYSW0),$P(PSJSYSW0,"^",8) S ST=$P(PSJSYSW0,"^",8),FT=$P(PSJSYSW0,"^",9)
 | 
|---|
| 174 |  E  S ST="0001",FT=24
 | 
|---|
| 175 | SET S PSGMARSD=$E(ST,1,2),PSGMARFD=$E(FT,1,2) S:'PSGMARSD PSGMARSD="01" S PSGMARFD=$S(+PSGMARSD=1:24,PSGMARSD=PSGMARFD:PSGMARSD-1,1:PSGMARFD) S:$L(PSGMARFD)<2 PSGMARFD=0_PSGMARFD
 | 
|---|
| 176 |  I ST>1 S X1=$P(PSGPLF,"."),X2=1 D C^%DTC S PSGPLF=X
 | 
|---|
| 177 |  S PSGPLS=+(PSGPLS_"."_ST),PSGPLF=+(PSGPLF_"."_FT)
 | 
|---|
| 178 |  S PSGMARSP=$$ENDTC2^PSGMI(PSGPLS),PSGMARFP=$$ENDTC2^PSGMI(PSGPLF)
 | 
|---|
| 179 |  Q
 | 
|---|