| 1 | IBDFQB ;ALB/MAF - MAIN QUEUE JOB FOR ENCOUNTER FORM PRINTING - FEB 2 1995
 | 
|---|
| 2 |  ;;3.0;AUTOMATED INFO COLLECTION SYS;**15**;APR 24, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | EN ;
 | 
|---|
| 5 |  ; -- Goes through the "SEQ" cross reference to print the 
 | 
|---|
| 6 |  ;    highest priority jobs first (lowest sequence number).
 | 
|---|
| 7 |  N IBDFQUE,IBDFQDT,IBDFQD,IBDFQT,IBDFTSTP
 | 
|---|
| 8 |  S IBDFQUE=1,IBDFTSTP=1
 | 
|---|
| 9 |  S (IBDFNUM,IBDFNAME,IBDFIFN,IBDFSEQ,QUIT)=0
 | 
|---|
| 10 |  D NOW^%DTC S IBDFQDT=%,IBDFQD=$P(%,"."),IBDFQT=$E($P(%,".",2),1,4)
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  F  S IBDFSEQ=$O(^IBD(357.09,"SEQ",IBDFSEQ)) Q:IBDFSEQ']""  F  S IBDFNUM=$O(^IBD(357.09,"SEQ",IBDFSEQ,IBDFNUM)) Q:IBDFNUM']""  F  S IBDFIFN=$O(^IBD(357.09,"SEQ",IBDFSEQ,IBDFNUM,IBDFIFN)) Q:IBDFIFN']""  N IBDFARY D UP($$QUEUE(IBDFIFN))
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  ; -- send forms pending pages to PCE automatically
 | 
|---|
| 15 |  D BCKGRND^IBDFFRFT
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  G EXIT
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 | UP(IBTASK) ; -- store results of tasking
 | 
|---|
| 21 |  Q:'$G(IBTASK)
 | 
|---|
| 22 |  D TASK
 | 
|---|
| 23 |  Q
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 | QUEUE(IBDFIFN) ; -- Set up Queue variables
 | 
|---|
| 27 |  N ZTSK,ZTDTH,ZTRTN,ZTDESC,ZTSAVE,ZTION,X,Y
 | 
|---|
| 28 |  K ^TMP("IBDF",$J,"C"),^TMP("IBDF",$J,"D")
 | 
|---|
| 29 |  D SET
 | 
|---|
| 30 |  G:('$D(^TMP("IBDF",$J)))!QUIT CLEAR
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 |  ; -- check if already tasked and running?
 | 
|---|
| 33 |  ;I $P(IBDFNODE,"^",11)]"" S ZTSK=$P(IBDFNODE,"^",11) D STAT^%ZTLOAD I "^1^2^"[ZTSK(1) S QUIT=1 G CLEAR
 | 
|---|
| 34 |  ;I $P(IBDFNODE,"^",11)]"" S ZTSK=$P(IBDFNODE,"^",11) W !,ZTSK,! B  
 | 
|---|
| 35 |  S $P(^IBD(357.09,IBDFNUM,"Q",IBDFIFN,0),"^",14)=$P(IBDFNODE,"^",11)
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 |  F IBDT=0:0 S IBDT=$O(IBDFARY(IBDT)) Q:'IBDT  D
 | 
|---|
| 38 |  .S ZTDTH=$S('$D(ZTDTH):$H,$D(ZTDTH)&(ZTDTH]""):ZTDTH,1:$H)
 | 
|---|
| 39 |  .S ZTRTN="DQ^IBDFQB",ZTDESC="IBD - Encounter Forms for"_IBDFNAME,ZTSAVE("^TMP(""IBDF"",$J,")="",ZTSAVE("IB*")="",ZTIO=$S($P(IBDFNODE,"^",9)]"":$P(IBDFNODE,"^",9),1:"") D ^%ZTLOAD D HOME^%ZIS
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  ; -- after queing, delete start and stop times and add task
 | 
|---|
| 42 |  ; -- once started add start time
 | 
|---|
| 43 |  ; -- once finished add stop time, delete task no.
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  S IBZTSK=ZTSK
 | 
|---|
| 46 |  I '$D(ZTQUEUED) D ^%ZISC S QUIT=1
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 | CLEAR ; -- Clean up variables if task is not queued
 | 
|---|
| 50 |  K ^TMP("IBDF",$J),^TMP("IB",$J)
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  I QUIT D
 | 
|---|
| 53 |  .I $D(ZTSK),$D(ZTSK(1)) I "^1^2^"[ZTSK(1) K ZTSK
 | 
|---|
| 54 |  .S IBZTSK=$S($D(ZTSK):ZTSK,1:"")
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 |  S QUIT=0
 | 
|---|
| 57 |  Q $G(IBZTSK)
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 | DQ ; -- Generic entry points to edit
 | 
|---|
| 60 |  ; -- only called by jobs tasked by this routine
 | 
|---|
| 61 |  S IBDFFLD=".02" D UPDT
 | 
|---|
| 62 |  D ^IBDF1B1
 | 
|---|
| 63 |  S IBDFFLD=".03" D UPDT
 | 
|---|
| 64 |  S IBTASK="@" D TASK
 | 
|---|
| 65 |  Q
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 | UPDT ; -- Update start and finish times
 | 
|---|
| 68 |  N DIE,DA,DR
 | 
|---|
| 69 |  D NOW^%DTC S IBDFX=$E(%,1,12),DA=IBDFIFN,DA(1)=IBDFNUM,DIE="^IBD(357.09,"_DA(1)_","_"""Q"""_",",DR=IBDFFLD_"///"_"^S X=IBDFX" D ^DIE Q
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 | TASK ; -- Update Task number and last date printed
 | 
|---|
| 73 |  N DA,DR,DIE
 | 
|---|
| 74 |  S DA=IBDFIFN,DA(1)=IBDFNUM,DIE="^IBD(357.09,"_DA(1)_","_"""Q"""_",",DR=".11///"_IBTASK_";.12///"_IBDT D ^DIE
 | 
|---|
| 75 |  I $D(IB1FLAG) S IB1TASK=IBTASK
 | 
|---|
| 76 |  Q
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 | EXIT K IBADDONS,IBCLN,IBDFDAY,IBDFIFN,IBDFINST,IBDFNAME,IBDFNODE,IBDFNOW,IBDFNUM,IBDFSEQ,IBDIV,IBDT,IBREPRNT,IBSRT,IBSTRTDV,IBDFDAY1,IBDFLAST,IBDFONE,IBDFQ,IBDFXX,IBZTSK,QUIT
 | 
|---|
| 80 |  I $D(ZTQUEUED) S ZTREQ="@" Q
 | 
|---|
| 81 |  D ^%ZISC
 | 
|---|
| 82 |  Q
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 | SET ; -- Set up variables needed for priniting of forms
 | 
|---|
| 86 |  S IBDFNODE=$G(^IBD(357.09,IBDFNUM,"Q",IBDFIFN,0))
 | 
|---|
| 87 |  I $P(IBDFNODE,"^",4)=""!($P(IBDFNODE,"^",5)="")!($P(IBDFNODE,"^",6)="")!($P(IBDFNODE,"^",7)="")!($P(IBDFNODE,"^",8)="")!($P(IBDFNODE,"^",9)="")!($P(IBDFNODE,"^",10)="") D  I QUIT Q
 | 
|---|
| 88 |  .I '$D(IBDFQUE) W !!,"PRINT QUEUE ABORTED.... missing required parameters!!!!" D PAUSE^VALM1
 | 
|---|
| 89 |  .S QUIT=1
 | 
|---|
| 90 |  .Q
 | 
|---|
| 91 |  I $P(IBDFNODE,"^",8)="N" D  I QUIT Q
 | 
|---|
| 92 |  .I '$D(IBDFQUE)  W !!,"PRINT QUEUE ABORTED.....not an active print job... check Special Instructions" D PAUSE^VALM1
 | 
|---|
| 93 |  .S QUIT=1
 | 
|---|
| 94 |  .Q
 | 
|---|
| 95 |  S IBSRT=$P(IBDFNODE,"^",4),SELECTBY="C",IBADDONS=$P(IBDFNODE,"^",5),IBREPRNT="",IBSTRTDV=""
 | 
|---|
| 96 |  D ENTRY Q:QUIT  D
 | 
|---|
| 97 |  .N GROUPS,IEN
 | 
|---|
| 98 |  .; -- GET PRINT MANAGER GROUPS
 | 
|---|
| 99 |  .S GROUPS=""
 | 
|---|
| 100 |  .S GROUPS($P(IBDFNODE,"^",6))="" D
 | 
|---|
| 101 |  ..S GROUPS=0 F  S GROUPS=$O(GROUPS(GROUPS)) Q:'GROUPS  D
 | 
|---|
| 102 |  ...S IEN=0 F  S IEN=$O(^IBD(357.99,GROUPS,10,IEN)) Q:'IEN  S IBCLN=+$G(^IBD(357.99,GROUPS,10,IEN,0)) S:IBCLN ^TMP("IBDF",$J,"C",IBCLN)=""
 | 
|---|
| 103 |  ...S IEN=0 F  S IEN=$O(^IBD(357.99,GROUPS,11,IEN)) Q:'IEN  S IBDIV=+$G(^IBD(357.99,GROUPS,11,IEN,0)) S:IBDIV ^TMP("IBDF",$J,"D",IBDIV)=""
 | 
|---|
| 104 |  Q
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  ;
 | 
|---|
| 107 | ENTRY ; -- Calc date and do checks on special instructions
 | 
|---|
| 108 |  K IBDFARY
 | 
|---|
| 109 |  N IBDFNOW,IBDFINST,IBDFDATE,IBDFDAYS,IBDFCTR,IBDFQTIM
 | 
|---|
| 110 |  ;S IBDFNOW=$P($$NOW^XLFDT(),"."),IBDFINST=$P(IBDFNODE,"^",8),IBDFQTIM=$S($P(IBDFNODE,"^",13)]"":$P(IBDFNODE,"^",13),1:$E($P($$NOW^XLFDT(),".",2),1,4))
 | 
|---|
| 111 |  S IBDFNOW=$P($$NOW^XLFDT(),"."),IBDFINST=$P(IBDFNODE,"^",8),IBDFQTIM=$S($P(IBDFNODE,"^",13)]"":$P(IBDFNODE,"^",13),1:IBDFQT)
 | 
|---|
| 112 |  D:'$D(IBDFSING) ZTDTH
 | 
|---|
| 113 |  ;
 | 
|---|
| 114 |  ; -- if ignoring weekends and/or holidays, check current date
 | 
|---|
| 115 |  I IBDFINST["W" I $$WEEKEND(IBDFNOW) S QUIT=1 Q
 | 
|---|
| 116 |  I IBDFINST["H" I $$HOLIDAY(IBDFNOW) S QUIT=1 Q
 | 
|---|
| 117 |  I IBDFINST["I" I $$WEEKEND(IBDFNOW)!($$HOLIDAY(IBDFNOW)) S QUIT=1 Q
 | 
|---|
| 118 |  ;
 | 
|---|
| 119 |  ; -- find date to return - returned in IBDFARY(date) array
 | 
|---|
| 120 |  ; -- loop adds 1 day and checks if day is restricted
 | 
|---|
| 121 |  ; --     if not, it adds it as a printable day and compares it
 | 
|---|
| 122 |  ; --     with the number of printable days ahead the user wants to prn
 | 
|---|
| 123 |  S IBDFDATE=IBDFNOW,IBDFCTR=0,IBDFDAYS=+$P(IBDFNODE,"^",7)
 | 
|---|
| 124 |  F  Q:IBDFCTR=IBDFDAYS  D
 | 
|---|
| 125 |  .S IBDFDATE=$$FMADD^XLFDT(IBDFDATE,1)
 | 
|---|
| 126 |  .I IBDFINST["W" Q:$$WEEKEND(IBDFDATE) 
 | 
|---|
| 127 |  .I IBDFINST["H" Q:$$HOLIDAY(IBDFDATE)
 | 
|---|
| 128 |  .I IBDFINST["I" Q:$$WEEKEND(IBDFDATE)!($$HOLIDAY(IBDFDATE))
 | 
|---|
| 129 |  .S IBDFCTR=IBDFCTR+1
 | 
|---|
| 130 |  S IBDFARY(IBDFDATE)=""
 | 
|---|
| 131 |  Q
 | 
|---|
| 132 |  ;
 | 
|---|
| 133 | WEEKEND(DATE) ;
 | 
|---|
| 134 |  ; -- DATE (defaulted to current date if not passed)
 | 
|---|
| 135 |  ; -- output = 1 if date is a weekend
 | 
|---|
| 136 |  I '$G(DATE) S DATE=$P($$NOW^XLFDT(),".")
 | 
|---|
| 137 |  I 60[$$DOW^XLFDT(DATE,1) Q 1
 | 
|---|
| 138 |  Q 0
 | 
|---|
| 139 |  ;
 | 
|---|
| 140 | HOLIDAY(DATE) ;
 | 
|---|
| 141 |  ; -- DATE (defaulted to current date if not passed)
 | 
|---|
| 142 |  ; -- output = 1 if date is a holiday
 | 
|---|
| 143 |  I '$G(DATE) S DATE=$P($$NOW^XLFDT(),".")
 | 
|---|
| 144 |  N X,Y,DIC
 | 
|---|
| 145 |  S DIC="^HOLIDAY(",DIC(0)="",X=+$P(DATE,".")
 | 
|---|
| 146 |  D ^DIC I +Y>0 Q 1
 | 
|---|
| 147 |  Q 0
 | 
|---|
| 148 | ZTDTH ;  -- Set up the variable ZTDTH to pass the queue date time of the
 | 
|---|
| 149 |  ;     queued job.
 | 
|---|
| 150 |  N IBDFJQ
 | 
|---|
| 151 |  I IBDFQT=2400!(IBDFQT=0000) D  G DTIME
 | 
|---|
| 152 |  .I IBDFQTIM=2400 S IBDFQTIM="0000"
 | 
|---|
| 153 |  .I IBDFQTIM=IBDFQT S IBDFJQ=IBDFQDT Q
 | 
|---|
| 154 |  .S IBDFJQ=IBDFQD_"."_IBDFQTIM
 | 
|---|
| 155 |  I IBDFQTIM>IBDFQT S IBDFJQ=IBDFQD_"."_IBDFQTIM
 | 
|---|
| 156 |  I IBDFQTIM<IBDFQT S X1=IBDFQDT,X2=1 D C^%DTC S IBDFJQ=$P(X,".")_"."_IBDFQTIM
 | 
|---|
| 157 |  I IBDFQTIM=IBDFQT S IBDFJQ=IBDFQDT
 | 
|---|
| 158 | DTIME I IBDFJQ]"" S ZTDTH=$$FMTH^XLFDT(IBDFJQ)
 | 
|---|
| 159 |  Q
 | 
|---|