Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BDGIPL31

BDGIPL31.m

Go to the documentation of this file.
  1. BDGIPL31 ; IHS/ANMC/LJF - CALCULATE LIST BY WARD/ROOM ;
  1. ;;5.3;PIMS;**1019**;APR 26, 2002;Build 3
  1. ;
  1. NEW DGWST
  1. K ^TMP("BDGIPL1",$J)
  1. S DGWST=$P(BDGSRT,U)
  1. ;
  1. ; do all wards or just one
  1. D AWD:'DGWST,OWD:DGWST
  1. ;
  1. ; pending surgery patients that have not been released from OR yet
  1. I $O(^SRF("AC",DT-.0001))[DT D PEND
  1. ;
  1. Q ;return to INIT^BDGIPL3
  1. ;
  1. AWD ; -- all wards
  1. NEW WD,WARD,DFN
  1. ; loop thru room file to set up ward/room/bed array
  1. S WD=0 F S WD=$O(^DG(405.4,"W",WD)) Q:'WD D
  1. . I $$ACTWD^BDGPAR(WD) D ROOMS(WD)
  1. ;
  1. ; loop thru inpatients
  1. S WARD="" F S WARD=$O(^DPT("CN",WARD)) Q:WARD="" D
  1. . S DFN=0 F S DFN=$O(^DPT("CN",WARD,DFN)) Q:'DFN D PAT
  1. Q
  1. ;
  1. OWD ; -- one ward
  1. NEW WD,WARD,DFN
  1. S WD=DGWST D ROOMS(WD)
  1. S WARD=$$GET1^DIQ(42,WD,.01)
  1. S DFN=0 F S DFN=$O(^DPT("CN",WARD,DFN)) Q:'DFN D PAT
  1. Q
  1. ;
  1. ROOMS(WD) ; loop thru rooms in a ward
  1. NEW RB,WARD,RMBD,ORDER
  1. S RB=0 F S RB=$O(^DG(405.4,"W",WD,RB)) Q:'RB D:'$$OOSB(RB)
  1. . S WARD=$$GET1^DIQ(42,WD,.01),ORDER=$$GET1^DIQ(42,WD,400)
  1. . S RMBD=$$GET1^DIQ(405.4,RB,.01) ;names
  1. . Q:'$$MULTUSE(WARD,+RB)
  1. . S ^TMP("BDGIPL1",$J,"BED",ORDER,WARD,RMBD)=""
  1. Q
  1. ;
  1. PAT ; set inpatients into array by ward/room
  1. NEW RM
  1. S RM=$G(^DPT(DFN,.1))_";"_$G(^DPT(DFN,.101))
  1. ;
  1. ;--no room-bed
  1. I $P(RM,";",2)="" D Q
  1. . S ^TMP("BDGIPL1",$J,"PAT",RM,DFN)=DFN
  1. ;
  1. ;--with room-bed
  1. S ^TMP("BDGIPL1",$J,"PAT",RM)=DFN
  1. Q
  1. ;
  1. ;
  1. OOSB(Y) ; -- bed out of service
  1. Q:'$D(^DG(405.4,Y,"I","AINV")) 0
  1. N X S X=$G(^DG(405.4,Y,"I",+$O(^($O(^("AINV",0)),0)),0)) Q:'X 0
  1. Q $S($P(X,U,4)=DT:0,$P(X,U,4)&($P(X,U,4)<DT):0,X=DT:0,X<DT:1,1:0)
  1. ;
  1. INACT(Y) ; -- ward inactive?
  1. Q '$$ACTWD^BDGPAR(Y)
  1. ;
  1. MULTUSE(W,R) ; -- don't print if room-bed used by other wards
  1. ;
  1. ; is there more than one entry in ward multiple, if no quit 1
  1. I '$O(^DG(405.4,R,"W",+$O(^DG(405.4,R,"W",0)))) Q 1
  1. ;
  1. ; is the room currently occupied by any ward? if no, quit 1
  1. NEW X S X=$O(^DGPM("ARM",R,0)) I 'X Q 1 ;IHS/OIT/CLS 05/20/2014 check all availability 1019
  1. ;
  1. ; is the room currently occupied? if no, quit 0
  1. NEW X S X=$O(^DPT("RM",$P(^DG(405.4,R,0),U),0)) I 'X Q 0
  1. ;
  1. ; is this patient in this ward? if no, quit 0
  1. I '$D(^DPT("CN",W,X)) Q 0
  1. ;
  1. ;quit yes because this multi-use room is occupied by pt. on this ward
  1. Q 1
  1. ;
  1. PEND ;EP; -- pending SDA/DSO/DSU patients for ward
  1. NEW SDT,END,IEN,SRV,X,WARD,STAT,AGE,DFN
  1. S SDT=DT-.0001,END=DT+.2400
  1. F S SDT=$O(^SRF("AC",SDT)) Q:'SDT!(SDT>END) D
  1. . S IEN=0 F S IEN=$O(^SRF("AC",SDT,IEN)) Q:'IEN D
  1. .. ;
  1. .. ; only include SDA/SDO/DSU who are scheduled or checked-in
  1. .. Q:$$GET1^DIQ(130,IEN,17)]"" ;has cancel date
  1. .. S STAT=$$GET1^DIQ(130,IEN,.011,"I") ;patient status
  1. .. I (STAT'="DSO"),(STAT'="DSU"),(STAT'="SDA") Q
  1. .. S X=$$GET1^DIQ(130,IEN,9999999.06,"I") I (X'="SC"),(X'="CI") Q
  1. .. ;
  1. .. ; only keep those for appropriate ward
  1. .. S DFN=$$GET1^DIQ(130,IEN,.01,"I"),AGE=$$GET1^DIQ(2,DFN,.033)
  1. .. S SRV=$$GET1^DIQ(130,IEN,.04,"I")
  1. .. S WARD=$$GET1^DIQ(137.45,SRV,$S(AGE<15:9999999.03,1:9999999.02),"I")
  1. .. I SRV,DGWST,WARD Q:WARD'=DGWST ;surgery not associated with ward
  1. .. S WARD=$$GET1^DIQ(137.45,SRV,$S(AGE<15:9999999.03,1:9999999.02))_";"
  1. .. ;
  1. .. NEW DGRR D ENP^XBDIQ1(130,IEN,".01;.04;.14;10;26","DGRR(","I")
  1. .. S X="P"_$P(DGRR(10),"@",2)_";"_DFN ;p+time+dfn
  1. .. S ^TMP("BDGIPL1",$J,"PAT",WARD,X)=DFN_U_DGRR(.01)_U_STAT_U_DGRR(.04)_U_DGRR(26)_U_DGRR(.14)_U_DGRR(10,"I")
  1. Q