Changeset 1036 for Scheduling/trunk/m/BSDX29.m
- Timestamp:
- Dec 8, 2010, 1:44:40 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Scheduling/trunk/m/BSDX29.m
r968 r1036 1 BSDX29 ; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 7/18/10 2:03pm2 ;;1.4 1;BSDX;;Sep 29, 20103 4 5 1 BSDX29 ; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 12/6/10 6:05am 2 ;;1.42;BSDX;;Sep 29, 2010 3 ; 4 ; Change Log: 5 ; v1.3 by WV/SMH on 3100713 6 6 ; - Beginning and Ending dates passed as FM Dates 7 ; v1.42 by WV/SMH on 3101023 8 ; - Transaction moved; now restartable too. 9 ; --> Thanks to Zach Gonzalez and Rick Marshall. 10 ; - Refactoring of major portions of routine 7 11 ; 8 12 BSDXCPD(BSDXY,BSDXRES,BSDX44,BSDXBEG,BSDXEND) ;EP 9 13 ;Entry point for debugging 10 14 ; 11 ;D DEBUG^%Serenji("BSDXCP^BSDX29(.BSDXY,BSDXRES,BSDX44,BSDXBEG,BSDXEND)")15 D DEBUG^%Serenji("BSDXCP^BSDX29(.BSDXY,BSDXRES,BSDX44,BSDXBEG,BSDXEND)") 12 16 Q 13 17 ; … … 15 19 ;Copy appointments from HOSPITAL LOCATION entry BSDX44 to BSDX RESOURCE entry BSDXRES 16 20 ;Beginning with appointments on day BSDXBEG and ending on BSDXEND, inclusive 17 ; 18 ;Returns ADO Recordset formatted fields containing count of records copied and error message: 19 ; 20 ; July 13 2010: D dates (BEG and END) from US format to FM Dates for i18n 21 ; 22 ; 23 S BSDXY="^BSDXTMP("_$J_")" 24 N BSDXI,BSDXST,ZTSK 25 S BSDXI=0 26 S X="ETRAP^BSDX29",@^%ZOSF("TRAP") 21 ;Called by RPC: BSDX COPY APPOINTMENTS 22 ; 23 ; Parameters: 24 ; - BSDXY: Global Return 25 ; - BSDXRES: BSDX RESOURCE to copy appointments to 26 ; - BSDX44: Hospital Location IEN to copy appointments from 27 ; - BSDXBEG: Beginning Date in FM Format 28 ; - BSDXEND: End Date in FM Format 29 ; 30 ;Returns ADO Recordset containing TASK_NUMBER and ERRORID 31 ; 32 ; Return Array 33 S BSDXY=$NA(^BSDXTMP($J)) 34 K ^BSDXTMP($J) 35 ; $ET 36 N $ET S $ET="G ETRAP^BSDX29" 37 ; Counter 38 N BSDXI S BSDXI=0 39 ; Header Node 27 40 S ^BSDXTMP($J,0)="T00010TASK_NUMBER^T00020ERRORID"_$C(30) 28 41 ; 29 ;Convert beginning and ending dates 30 ; 31 ;TODO:Validate FM Dates coming through 32 ; 33 S BSDXBEG=BSDXBEG-1 42 ; Make dates inclusive; add 1 to FM dates 43 S BSDXBEG=BSDXBEG-1 34 44 S BSDXEND=BSDXEND+1 35 45 ; 46 ; Taskman variables 47 N ZTSK,ZTRTN,ZTDTH,ZTDESC,ZTSAVE 48 ; Task Load 36 49 S ZTRTN="ZTM^BSDX29",ZTDTH=$H,ZTDESC="COPY PATIENT APPTS" 37 50 S ZTSAVE("BSDXBEG")="",ZTSAVE("BSDXEND")="",ZTSAVE("BSDX44")="",ZTSAVE("BSDXRES")="" 38 51 D ^%ZTLOAD 39 ; 40 S BSDXI=BSDXI+141 S BSDX ST=$S($G(ZTSK)>0:"OK",1:"Unable to create task.")52 ; Set up return ADO.net dataset 53 N BSDXST S BSDXST=$S($G(ZTSK)>0:"OK",1:"Unable to create task.") 54 S BSDXI=BSDXI+1 42 55 S ^BSDXTMP($J,BSDXI)=$G(ZTSK)_"^"_BSDXST_$C(30)_$C(31) 43 Q 44 ; 45 ZTMTST ; 46 ; 47 S %DT="AE" D ^%DT S BSDXBEG=Y 48 S %DT="AE" D ^%DT S BSDXEND=Y 49 S BSDX44=3,BSDXSRES=1,ZTSK=3380 50 D ZTM 51 Q 56 QUIT 52 57 ; 53 58 ZTMD ;EP - Debug entry point … … 55 60 Q 56 61 ; 57 ZTM ;EP 58 ;Taskman entry point 59 S X="ZTMERR^BSDX29",@^%ZOSF("TRAP") 62 ZTM ;EP - Taskman entry point 63 ; Variables set up in ZTSAVE above 64 ; 65 Q:'$D(ZTSK) 66 ; $ET 67 N $ET S $ET="G ZTMERR^BSDX29" 68 ; Txn 69 TSTART (BSDXBEG,BSDXEND,BSDX44,BSDXRES):T="BSDX COPY APPOINTMENT^BSDX29" 60 70 ;$O through ^SC(BSDX44,"S", 61 Q:'$D(ZTSK) 62 N BSDXCNT,BSDXIEN,BSDXNOD,BSDXNOTE,BSDXCAN,BSDXPAT,BSDXLEN,BSDXMADE,BSDXCLRK,BSDXPAT,BSDXQUIT 63 S BSDXCNT=0,BSDXQUIT=0 64 S ^BSDXTMP("BSDXCOPY",ZTSK)=BSDXCNT 65 TSTART 66 F S BSDXBEG=$O(^SC(BSDX44,"S",BSDXBEG)) Q:'+BSDXBEG Q:BSDXBEG>BSDXEND Q:BSDXQUIT D 67 . S BSDXIEN=0 F S BSDXIEN=$O(^SC(BSDX44,"S",BSDXBEG,1,BSDXIEN)) Q:'+BSDXIEN Q:BSDXQUIT D 68 . . S BSDXNOD=$G(^SC(BSDX44,"S",BSDXBEG,1,BSDXIEN,0)) 69 . . Q:'+BSDXNOD 70 . . S BSDXCAN=$P(BSDXNOD,U,9) 71 . . Q:BSDXCAN="C" 72 . . S BSDXPAT=$P(BSDXNOD,U) 73 . . S BSDXLEN=$P(BSDXNOD,U,2) ;duration in minutes 74 . . S BSDXCLRK=$P(BSDXNOD,U,6) ;appt made by (clerk) 75 . . S BSDXMADE=$P(BSDXNOD,U,7) ;date appt made 76 . . S BSDXNOTE=$P(BSDXNOD,U,4) ;'OTHER' field contains note 71 N BSDXCNT S BSDXCNT=0 ; Count of Copied Appointments 72 N BSDXQUIT S BSDXQUIT=0 ; Quit Flag to be retrieved from an external proc 73 ; Set Count 74 S ^BSDXTMP("BSDXCOPY",ZTSK)=BSDXCNT 75 ; Loop through dates here. 76 F S BSDXBEG=$O(^SC(BSDX44,"S",BSDXBEG)) Q:'+BSDXBEG Q:BSDXBEG>BSDXEND Q:BSDXQUIT D 77 . ; Loop through Entries in each date in the subsubfile. 78 . ; Quit if we are at the end or if a remote process requests a quit. 79 . N BSDXIEN S BSDXIEN=0 80 . F S BSDXIEN=$O(^SC(BSDX44,"S",BSDXBEG,1,BSDXIEN)) Q:'+BSDXIEN Q:BSDXQUIT D 81 . . N BSDXNOD S BSDXNOD=$G(^SC(BSDX44,"S",BSDXBEG,1,BSDXIEN,0)) ; Node 82 . . Q:'+BSDXNOD ; Quit if no node 83 . . N BSDXCAN S BSDXCAN=$P(BSDXNOD,U,9) ; Cancel flag 84 . . Q:BSDXCAN="C" ; Quit if appt cancelled 85 . . N BSDXPAT S BSDXPAT=$P(BSDXNOD,U) ; Patient 86 . . N BSDXLEN S BSDXLEN=$P(BSDXNOD,U,2) ;duration in minutes 87 . . N BSDXCLRK S BSDXCLRK=$P(BSDXNOD,U,6) ;appt made by (clerk) 88 . . N BSDXMADE S BSDXMADE=$P(BSDXNOD,U,7) ;date appt made 89 . . N BSDXNOTE S BSDXNOTE=$P(BSDXNOD,U,4) ;'OTHER' field contains note 77 90 . . S BSDXCNT=BSDXCNT+$$XFER(BSDXRES,BSDXBEG,BSDXPAT,BSDXLEN,BSDXCLRK,BSDXMADE,BSDXNOTE) 78 91 . . I +BSDXCNT,BSDXCNT#10=0 S ^BSDXTMP("BSDXCOPY",ZTSK)=BSDXCNT_" records copied." ;every 10th record … … 85 98 Q 86 99 ; 87 ZTMERR ; 88 TROLLBACK 100 ZTMERR ; For now, error from TM is only in trap; not returned to client. 101 N $ET S $ET="D ^%ZTER HALT" ; Emergency Error Trap 102 ; Rollback before logging the error 103 I $TL>0 TROLLBACK 89 104 D ^%ZTER 90 Q 105 S $EC="" ; Clear Error 106 QUIT 91 107 ; 92 108 XFER(BSDXRES,BSDXBEG,BSDXPAT,BSDXLEN,BSDXCLRK,BSDXMADE,BSDXNOTE) ;EP … … 132 148 ERR(BSDXI,BSDXCNT,BSDXERR) ;Error processing 133 149 S BSDXI=BSDXI+1 150 S BSDXERR=$TR(BSDXERR,"^","~") 134 151 S ^BSDXTMP($J,BSDXI)=BSDXCNT_"^"_BSDXERR_$C(30) 135 152 S BSDXI=BSDXI+1 … … 138 155 ; 139 156 ETRAP ;EP Error trap entry 140 D ^%ZTER 141 I '$D(BSDXI) N BSDXI S BSDXI=999 142 S BSDXI=BSDXI+1 143 D ERR(BSDXI,$G(BSDXCNT),"Routine: BSDX29, Error: "_$G(%ZTERROR)) 144 Q 145 ; 146 CPSTAT(BSDXY,BSDXTSK) ;EP 157 ; No Txn here. So don't rollback anything 158 N $ET S $ET="D ^%ZTER HALT" ; Emergency Error Trap 159 D ^%ZTER 160 S $EC="" ; Clear error 161 I '$D(BSDXI) N BSDXI S BSDXI=0 162 D ERR(BSDXI,$G(BSDXCNT),"~100~BSDX29, Error: "_$G(%ZTERZE)) 163 Q 164 ; 165 CPSTAT(BSDXY,BSDXTSK) ;EP - Note: As of Dec 6 2010: Inactive Code 147 166 ;Return status (copied record count) of tasked job having ZTSK=BSDXTSK 148 167 ; … … 160 179 Q 161 180 ; 162 CPCANC(BSDXY,BSDXTSK) ;EP 181 CPCANC(BSDXY,BSDXTSK) ;EP Note: As of Dec 6 2010: Inactive code. 163 182 ;Signal tasked job having ZTSK=BSDXTSK to cancel 164 183 ;Returns current record count of copy process
Note:
See TracChangeset
for help on using the changeset viewer.