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

ADGADPL.m

Go to the documentation of this file.
  1. ADGADPL ; IHS/ADC/PDW/ENM - AVERAGE DAILY PATIENT LOAD BY WARD ; [ 03/25/1999 11:48 AM ]
  1. ;;5.0;ADMISSION/DISCHARGE/TRANSFER;;MAR 25, 1999
  1. ;
  1. ;***> setup for print
  1. W @IOF,!!!?18,"AVERAGE DAILY PATIENT LOAD BY WARD OR SERVICE",!!
  1. ;
  1. SELECT ; -- have user select report by ward or by service
  1. W !! K DIR S DIR(0)="SO^1:By WARD;2:By SERVICE"
  1. S DIR("A")="Select report format (by number)" D ^DIR
  1. G END:Y<1,END:Y>2 S DGFORM=Y
  1. ;
  1. BDATE ; -- ask users for beginning date
  1. W ! S %DT="AEQ",%DT("A")="Select beginning date: ",X="" D ^%DT
  1. G SELECT:Y=-1 S DGBDT=Y
  1. EDATE ; -- ask user for ending date
  1. S %DT="AEQ",%DT("A")="Select ending date: ",X="" D ^%DT
  1. G BDATE:Y=-1 S DGEDT=Y
  1. ;
  1. DEV ; -- ask user for printing device
  1. S %ZIS="PQ" D ^%ZIS G END:POP,QUE:$D(IO("Q")) U IO G CALC
  1. QUE K IO("Q") S ZTRTN="CALC^ADGADPL",ZTDESC="AVERAGE DAILY PATIENT LOAD"
  1. F I="DGBDT","DGEDT","DGFORM" S ZTSAVE(I)=""
  1. D ^%ZTLOAD D ^%ZISC K ZTSK
  1. END K Y,DGBDT,DGEDT,DGFORM D HOME^%ZIS Q
  1. ;
  1. ;
  1. CALC ;EP; -- calculate of ADPL
  1. I DGFORM=1 D D PRINT Q
  1. . S DGW=0 ;step thru ADT Census-Ward file for date range
  1. . F S DGW=$O(^ADGWD(DGW)) Q:DGW'=+DGW D
  1. .. S DGWN=$P(^DIC(42,DGW,0),U)
  1. .. I $G(^DIC(42,DGW,"I"))="I" S DGWN=DGWN_" **INACTIVE**"
  1. .. S DGD=DGBDT-.001
  1. .. F S DGD=$O(^ADGWD(DGW,1,DGD)) Q:DGD>DGEDT Q:DGD="" D
  1. ... S X=$P($G(^ADGWD(DGW,1,DGD,0)),U,2)+$P($G(^(0)),U,12)
  1. ... S DGA(DGWN)=$G(DGA(DGWN))+X
  1. ;
  1. S DGW=0 ;step thru ADT Census-Treating Specialty file by date
  1. F S DGW=$O(^ADGTX(DGW)) Q:DGW'=+DGW D
  1. . S DGWN=$P(^DIC(45.7,DGW,0),U)
  1. . I $P(^DIC(45.7,DGW,9999999),U,3)="" S DGWN=DGWN_" **INACTIVE**"
  1. . S DGD=DGBDT-.001
  1. . F S DGD=$O(^ADGTX(DGW,1,DGD)) Q:DGD>DGEDT Q:DGD="" D
  1. .. S X=$P($G(^ADGTX(DGW,1,DGD,0)),U,2),Y=$P($G(^ADGTX(DGW,1,DGD,1)),U)
  1. .. S DGA(DGWN)=$G(DGA(DGWN))+X+Y
  1. ;
  1. PRINT ;***> Print report
  1. ;
  1. ;initialize variables
  1. S DGPAGE=0,DGDUZ=$P(^VA(200,DUZ,0),U,2) ;page#/user initials
  1. S DGFAC=$P(^DIC(4,DUZ(2),0),U),DGSTOP="" ;facility
  1. S (DGLIN,DGLIN1)="",$P(DGLIN,"=",80)="",$P(DGLIN1,"-",80)="" ;line
  1. S DGDTLIN="from "_$E(DGBDT,4,5)_"/"_$E(DGBDT,6,7)_"/"_$E(DGBDT,2,3)_" to "_$E(DGEDT,4,5)_"/"_$E(DGEDT,6,7)_"/"_$E(DGEDT,2,3) ;date range
  1. ;
  1. S X1=DGEDT,X2=DGBDT D ^%DTC S DGL=X+1
  1. D HEAD S (DGW,DGT,DGAT)=0
  1. F S DGW=$O(DGA(DGW)) Q:DGW="" Q:DGSTOP=U D
  1. . I $Y>(IOSL-5) D NEWPG Q:DGSTOP=U
  1. . I DGW["INACTIVE",DGA(DGW)=0 Q ;don't prnt inact wards w/no activity
  1. . W !!?5,DGW ;print ward or service name
  1. . S DGAV=DGA(DGW)/DGL,DGAV=DGAV_".00" ;calculate adpl
  1. . S DGT=DGT+DGA(DGW),DGAT=DGAT+DGAV
  1. . W ?45,$J(DGA(DGW),3),?60,$J(DGAV,5,2),!
  1. G END2:DGSTOP=U
  1. W !,DGLIN1,!?10,"TOTAL:",?45,$J(DGT,3),?60,$J(DGAT,5,2),!
  1. ;
  1. ;***> eoj
  1. END1 I IOST["C-" D PRTOPT^ADGVAR
  1. END2 D KILL^ADGUTIL W @IOF D ^%ZISC Q
  1. ;
  1. ;
  1. NEWPG ;***> end of page control
  1. I IOST'?1"C-".E D HEAD S DGSTOP="" Q
  1. I DGPAGE>0 K DIR S DIR(0)="E" D ^DIR S DGSTOP=X
  1. I DGSTOP'=U D HEAD
  1. Q
  1. ;
  1. I (IOST["C-")!(DGPAGE>0) W @IOF
  1. W DGDUZ,?80-$L(DGFAC)\2,DGFAC
  1. S DGPAGE=DGPAGE+1 W ?70,"Page ",DGPAGE
  1. W ! D TIME
  1. S X="AVERAGE DAILY PATIENT LOAD by "_$S(DGFORM=1:"WARD",1:"SERVICE")
  1. W ?80-$L(X)/2,X
  1. W !,$E(DT,4,5)_"/"_$E(DT,6,7)_"/"_$E(DT,2,3),?25,DGDTLIN,!!
  1. W ?5,$S(DGFORM=1:"WARD",1:"SERVICE"),?40,"INPATIENT DAYS",?60,"ADPL"
  1. W !!,DGLIN Q
  1. ;
  1. TIME ; -- SUBRTN to print time
  1. N X S X=$E($$HTFM^XLFDT($H),1,12)
  1. W $P($$FMTE^XLFDT(X,"2P")," ",2,3)
  1. Q