PXRMINPL ;SLC/RMS,PKR - List computed findings for inpatient info. ; 09/08/2008
;;2.0;CLINICAL REMINDERS;**12**;Feb 04, 2005;Build 73
;=====================================
ADM(NGET,BDT,EDT,PLIST,PARAM) ;All admissions during a date range.
D ADMDISCH(BDT,EDT,PLIST,PARAM,"ATT1")
Q
;
;=====================================
ADMDISCH(BDT,EDT,PLIST,PARAM,SUB) ;Build admission and discharge lists.
;Admissions when SUB="ATT1" and discharges when SUB="ATT3"
;DBIAs (^DIC(4: #2251,#10090), (^DIC(42: #10039),
;(^DGPM: #1480), (^DPT: #187), (^SC: #10040)
N CNT,DATA,DATE,DFN,HLOC,IEN,LOCLIST,OK,WARD,WARDP
K ^TMP($J,PLIST),^TMP($J,"CNT")
S DATE=BDT-.000001
S OK=1
S LOCLIST=$S(PARAM'="":+$O(^PXRMD(810.9,"B",PARAM,0)),1:0)
F S DATE=$O(^DGPM(SUB,DATE)) Q:(DATE>EDT)!(DATE="") D
. S IEN=""
. F S IEN=$O(^DGPM(SUB,DATE,IEN)) Q:IEN="" D
.. S DATA=^DGPM(IEN,0)
.. S DFN=$P(DATA,U,3)
.. I SUB="ATT1" D
...;WARD is a required field but it may not exist for older entries.
... S WARDP=+$P(DATA,U,6)
... S WARD=WARDP_";"_$S(WARDP>0:$P($G(^DIC(42,WARDP,0)),U,1),1:0)
.. I SUB="ATT3" D
... S WARD=$$GET1^DIQ(405,IEN,200)
... S WARDP=$S(WARD'="":$O(^DIC(42,"B",WARD,"")),1:0)
... S WARD=WARDP_";"_WARD
..;If a location list has been passed in make sure the hospital
..;location for the ward is on the list.
.. S HLOC=$S(WARDP>0:^DIC(42,WARDP,44),1:0)
.. I LOCLIST>0 S OK=$S($D(^PXRMD(810.9,LOCLIST,44,"B",HLOC)):1,1:0)
.. I 'OK Q
.. S (CNT,^TMP($J,"CNT",DFN))=+$G(^TMP($J,"CNT",DFN))+1
.. S ^TMP($J,PLIST,DFN,CNT)=U_DATE_U_405_U_DFN_U_WARD
.. S INST=$S(HLOC>0:+$P(^SC(HLOC,0),U,4),1:0)
.. S INSTNM=INST_";"_$S(INST>0:$P(^DIC(4,INST,0),U,1),1:0)
.. S INSTNM=INSTNM_";"_$S(INST>0:$P($G(^DIC(4,INST,99)),U,1),1:0)
.. S ^TMP($J,PLIST,DFN,CNT,"VALUE")=WARD
.. S ^TMP($J,PLIST,DFN,CNT,"INSTITUTION")=INSTNM
.. S ^TMP($J,PLIST,DFN,CNT,"TYPE_OF_MVMT")=$$GET1^DIQ(405.1,$P(DATA,U,4),.01)
K ^TMP($J,"CNT")
Q
;
;=====================================
CURR(NGET,BDT,EDT,PLIST,PARAM) ;Current inpatients.
; DBIAs #10035, #10039, #10040, #10061, #10090
N CNT,DFN,HLOC,INST,INSTNM,LOCLIST,OK,WARD,WARDP,WARDSUB,VAIN,VAERR
K ^TMP($J,PLIST),^TMP($J,"CNT")
S OK=1
S LOCLIST=$S(PARAM'="":+$O(^PXRMD(810.9,"B",PARAM,0)),1:0)
S WARD=""
F S WARD=$O(^DPT("CN",WARD)) Q:WARD="" D
. S DFN=0
. F S DFN=$O(^DPT("CN",WARD,DFN)) Q:'+DFN D
..;If a location list has been passed in make sure the hospital
..;location for the ward is on the list.
.. S WARDP=+$O(^DIC(42,"B",WARD,""))
.. S HLOC=+$G(^DIC(42,WARDP,44))
.. I LOCLIST>0 S OK=$S($D(^PXRMD(810.9,LOCLIST,44,"B",HLOC)):1,1:0)
.. I 'OK Q
.. K VAIN,VAERR D INP^VADPT
.. S WARDSUB=+VAIN(4)_";"_WARD
.. S (CNT,^TMP($J,"CNT",DFN))=+$G(^TMP($J,"CNT",DFN))+1
.. S ^TMP($J,PLIST,DFN,CNT)=U_+VAIN(7)_U_2_U_DFN_U_WARDSUB
.. S INST=$S(HLOC>0:+$P(^SC(HLOC,0),U,4),1:0)
.. S INSTNM=INST_";"_$S(INST>0:$P(^DIC(4,INST,0),U,1),1:0)
.. S INSTNM=INSTNM_";"_$S(INST>0:$P($G(^DIC(4,INST,99)),U,1),1:0)
.. S ^TMP($J,PLIST,DFN,CNT,"VALUE")=WARDSUB
.. S ^TMP($J,PLIST,DFN,CNT,"INSTITUTION")=INSTNM
.. S ^TMP($J,PLIST,DFN,CNT,"ADMIT DATE")=VAIN(7)
K ^TMP($J,"CNT")
Q
;
;=====================================
DISCH(NGET,BDT,EDT,PLIST,PARAM) ;Discharges during a date range.
;NOTE: ASIH is not accounted for in this version.
D ADMDISCH(BDT,EDT,PLIST,PARAM,"ATT3")
Q
;
PXRMINPL ;SLC/RMS,PKR - List computed findings for inpatient info. ; 09/08/2008
+1 ;;2.0;CLINICAL REMINDERS;**12**;Feb 04, 2005;Build 73
+2 ;=====================================
ADM(NGET,BDT,EDT,PLIST,PARAM) ;All admissions during a date range.
+1 DO ADMDISCH(BDT,EDT,PLIST,PARAM,"ATT1")
+2 QUIT
+3 ;
+4 ;=====================================
ADMDISCH(BDT,EDT,PLIST,PARAM,SUB) ;Build admission and discharge lists.
+1 ;Admissions when SUB="ATT1" and discharges when SUB="ATT3"
+2 ;DBIAs (^DIC(4: #2251,#10090), (^DIC(42: #10039),
+3 ;(^DGPM: #1480), (^DPT: #187), (^SC: #10040)
+4 NEW CNT,DATA,DATE,DFN,HLOC,IEN,LOCLIST,OK,WARD,WARDP
+5 KILL ^TMP($JOB,PLIST),^TMP($JOB,"CNT")
+6 SET DATE=BDT-.000001
+7 SET OK=1
+8 SET LOCLIST=$SELECT(PARAM'="":+$ORDER(^PXRMD(810.9,"B",PARAM,0)),1:0)
+9 FOR
SET DATE=$ORDER(^DGPM(SUB,DATE))
IF (DATE>EDT)!(DATE="")
QUIT
Begin DoDot:1
+10 SET IEN=""
+11 FOR
SET IEN=$ORDER(^DGPM(SUB,DATE,IEN))
IF IEN=""
QUIT
Begin DoDot:2
+12 SET DATA=^DGPM(IEN,0)
+13 SET DFN=$PIECE(DATA,U,3)
+14 IF SUB="ATT1"
Begin DoDot:3
+15 ;WARD is a required field but it may not exist for older entries.
+16 SET WARDP=+$PIECE(DATA,U,6)
+17 SET WARD=WARDP_";"_$SELECT(WARDP>0:$PIECE($GET(^DIC(42,WARDP,0)),U,1),1:0)
End DoDot:3
+18 IF SUB="ATT3"
Begin DoDot:3
+19 SET WARD=$$GET1^DIQ(405,IEN,200)
+20 SET WARDP=$SELECT(WARD'="":$ORDER(^DIC(42,"B",WARD,"")),1:0)
+21 SET WARD=WARDP_";"_WARD
End DoDot:3
+22 ;If a location list has been passed in make sure the hospital
+23 ;location for the ward is on the list.
+24 SET HLOC=$SELECT(WARDP>0:^DIC(42,WARDP,44),1:0)
+25 IF LOCLIST>0
SET OK=$SELECT($DATA(^PXRMD(810.9,LOCLIST,44,"B",HLOC)):1,1:0)
+26 IF 'OK
QUIT
+27 SET (CNT,^TMP($JOB,"CNT",DFN))=+$GET(^TMP($JOB,"CNT",DFN))+1
+28 SET ^TMP($JOB,PLIST,DFN,CNT)=U_DATE_U_405_U_DFN_U_WARD
+29 SET INST=$SELECT(HLOC>0:+$PIECE(^SC(HLOC,0),U,4),1:0)
+30 SET INSTNM=INST_";"_$SELECT(INST>0:$PIECE(^DIC(4,INST,0),U,1),1:0)
+31 SET INSTNM=INSTNM_";"_$SELECT(INST>0:$PIECE($GET(^DIC(4,INST,99)),U,1),1:0)
+32 SET ^TMP($JOB,PLIST,DFN,CNT,"VALUE")=WARD
+33 SET ^TMP($JOB,PLIST,DFN,CNT,"INSTITUTION")=INSTNM
+34 SET ^TMP($JOB,PLIST,DFN,CNT,"TYPE_OF_MVMT")=$$GET1^DIQ(405.1,$PIECE(DATA,U,4),.01)
End DoDot:2
End DoDot:1
+35 KILL ^TMP($JOB,"CNT")
+36 QUIT
+37 ;
+38 ;=====================================
CURR(NGET,BDT,EDT,PLIST,PARAM) ;Current inpatients.
+1 ; DBIAs #10035, #10039, #10040, #10061, #10090
+2 NEW CNT,DFN,HLOC,INST,INSTNM,LOCLIST,OK,WARD,WARDP,WARDSUB,VAIN,VAERR
+3 KILL ^TMP($JOB,PLIST),^TMP($JOB,"CNT")
+4 SET OK=1
+5 SET LOCLIST=$SELECT(PARAM'="":+$ORDER(^PXRMD(810.9,"B",PARAM,0)),1:0)
+6 SET WARD=""
+7 FOR
SET WARD=$ORDER(^DPT("CN",WARD))
IF WARD=""
QUIT
Begin DoDot:1
+8 SET DFN=0
+9 FOR
SET DFN=$ORDER(^DPT("CN",WARD,DFN))
IF '+DFN
QUIT
Begin DoDot:2
+10 ;If a location list has been passed in make sure the hospital
+11 ;location for the ward is on the list.
+12 SET WARDP=+$ORDER(^DIC(42,"B",WARD,""))
+13 SET HLOC=+$GET(^DIC(42,WARDP,44))
+14 IF LOCLIST>0
SET OK=$SELECT($DATA(^PXRMD(810.9,LOCLIST,44,"B",HLOC)):1,1:0)
+15 IF 'OK
QUIT
+16 KILL VAIN,VAERR
DO INP^VADPT
+17 SET WARDSUB=+VAIN(4)_";"_WARD
+18 SET (CNT,^TMP($JOB,"CNT",DFN))=+$GET(^TMP($JOB,"CNT",DFN))+1
+19 SET ^TMP($JOB,PLIST,DFN,CNT)=U_+VAIN(7)_U_2_U_DFN_U_WARDSUB
+20 SET INST=$SELECT(HLOC>0:+$PIECE(^SC(HLOC,0),U,4),1:0)
+21 SET INSTNM=INST_";"_$SELECT(INST>0:$PIECE(^DIC(4,INST,0),U,1),1:0)
+22 SET INSTNM=INSTNM_";"_$SELECT(INST>0:$PIECE($GET(^DIC(4,INST,99)),U,1),1:0)
+23 SET ^TMP($JOB,PLIST,DFN,CNT,"VALUE")=WARDSUB
+24 SET ^TMP($JOB,PLIST,DFN,CNT,"INSTITUTION")=INSTNM
+25 SET ^TMP($JOB,PLIST,DFN,CNT,"ADMIT DATE")=VAIN(7)
End DoDot:2
End DoDot:1
+26 KILL ^TMP($JOB,"CNT")
+27 QUIT
+28 ;
+29 ;=====================================
DISCH(NGET,BDT,EDT,PLIST,PARAM) ;Discharges during a date range.
+1 ;NOTE: ASIH is not accounted for in this version.
+2 DO ADMDISCH(BDT,EDT,PLIST,PARAM,"ATT3")
+3 QUIT
+4 ;