| [613] | 1 | RORHDT03 ;HCIOFO/SG - MANIPULATIONS WITH EXTRACTION TASKS ; 1/23/06 8:40am | 
|---|
|  | 2 | ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | Q | 
|---|
|  | 5 | ; | 
|---|
|  | 6 | ;***** STARTS THE DATA EXTRACTION TASK | 
|---|
|  | 7 | ; | 
|---|
|  | 8 | ; HDEIEN        Data Extract IEN | 
|---|
|  | 9 | ; TASKIEN       Task IEN | 
|---|
|  | 10 | ; FAM           File Access Mode: | 
|---|
|  | 11 | ;                 "A"  Append new messages to the file | 
|---|
|  | 12 | ;                 "O"  Overwrite the file | 
|---|
|  | 13 | ;                 "N"  Modify file name and create a new file | 
|---|
|  | 14 | ; [ZTDTH]       Start date/time | 
|---|
|  | 15 | ; | 
|---|
|  | 16 | ; Return Values: | 
|---|
|  | 17 | ;       <0  Error code | 
|---|
|  | 18 | ;        0  Ok | 
|---|
|  | 19 | ;        1  Start time has not been entered | 
|---|
|  | 20 | ;        2  Already running or pending | 
|---|
|  | 21 | ; | 
|---|
|  | 22 | START(HDEIEN,TASKIEN,FAM,ZTDTH) ; | 
|---|
|  | 23 | N IENS,PARAMS,RC,RORFDA,RORMSG,STATUS,TASK,TMP | 
|---|
|  | 24 | N ZTCPU,ZTDESC,ZTIO,ZTKIL,ZTPRI,ZTRTN,ZTSAVE,ZTSK,ZTSYNC,ZTUCI | 
|---|
|  | 25 | ;--- Check status of the task | 
|---|
|  | 26 | S STATUS=+$$TASKSTAT^RORHDTUT(HDEIEN,TASKIEN,3) | 
|---|
|  | 27 | Q:(STATUS=1)!(STATUS=2)!(STATUS=102) 2 | 
|---|
|  | 28 | ;--- Start/schedule the task | 
|---|
|  | 29 | S PARAMS("PARAMS","HDEIEN")=HDEIEN | 
|---|
|  | 30 | S PARAMS("PARAMS","TASKIEN")=TASKIEN | 
|---|
|  | 31 | S PARAMS("PARAMS","FAM")=FAM | 
|---|
|  | 32 | S ZTDESC="CCR HDE Task #"_TASKIEN | 
|---|
|  | 33 | S TASK=$$CREATE^RORTSK(1,"TASK^RORHDT03",,,,,.PARAMS) | 
|---|
|  | 34 | Q:TASK<0 TASK | 
|---|
|  | 35 | W !,"Task #"_TASK_" has been scheduled." | 
|---|
|  | 36 | ;--- Update task number | 
|---|
|  | 37 | S IENS=(+TASKIEN)_","_(+HDEIEN)_"," | 
|---|
|  | 38 | S RORFDA(799.64,IENS,.02)=TASK | 
|---|
|  | 39 | D FILE^DIE(,"RORFDA","RORMSG") | 
|---|
|  | 40 | Q:$G(DIERR) $$DBS^RORERR("RORMSG",-9,,,799.64,IENS) | 
|---|
|  | 41 | ;--- Update the last known task status | 
|---|
|  | 42 | S TMP=$$TASKSTAT^RORHDTUT(HDEIEN,TASKIEN) | 
|---|
|  | 43 | ;--- Success | 
|---|
|  | 44 | Q 0 | 
|---|
|  | 45 | ; | 
|---|
|  | 46 | ;***** STOPS THE DATA EXTRACTION TASK | 
|---|
|  | 47 | ; | 
|---|
|  | 48 | ; HDEIEN        Data Extract IEN | 
|---|
|  | 49 | ; TASKIEN       Task IEN | 
|---|
|  | 50 | ; | 
|---|
|  | 51 | ; Return Values: | 
|---|
|  | 52 | ;       <0  Error code | 
|---|
|  | 53 | ;        0  Ok | 
|---|
|  | 54 | ; | 
|---|
|  | 55 | STOP(HDEIEN,TASKIEN) ; | 
|---|
|  | 56 | N RC,STATUS,TASK,TMP | 
|---|
|  | 57 | ;--- Get status of the task | 
|---|
|  | 58 | S STATUS=+$$TASKSTAT^RORHDTUT(HDEIEN,TASKIEN) | 
|---|
|  | 59 | Q:STATUS<0 STATUS | 
|---|
|  | 60 | ;--- Stop the task if it is running, pending, or suspended | 
|---|
|  | 61 | I (STATUS=1)!(STATUS=2)!(STATUS=102)  D  Q:$G(RC)<0 RC | 
|---|
|  | 62 | . S TASK=$$TASKNUM^RORHDTUT(HDEIEN,TASKIEN) | 
|---|
|  | 63 | . I TASK<0  S RC=+TASK  Q | 
|---|
|  | 64 | . S RC=$$DEQUEUE^RORTSK(TASK) | 
|---|
|  | 65 | . W:'RC !,"The task #"_TASK_" has been stopped/unscheduled." | 
|---|
|  | 66 | . ;--- Update the last known task status | 
|---|
|  | 67 | . S STATUS=+$$TASKSTAT^RORHDTUT(HDEIEN,TASKIEN) | 
|---|
|  | 68 | ;--- Task is stopping | 
|---|
|  | 69 | D:STATUS=103 | 
|---|
|  | 70 | . W !,"The task #"_TASK_" has not responded to the stop request yet." | 
|---|
|  | 71 | Q 0 | 
|---|
|  | 72 | ; | 
|---|
|  | 73 | ;***** HISTORICAL DATA EXTRACTION TASK | 
|---|
|  | 74 | ; | 
|---|
|  | 75 | ; RORTSK        Task number and task parameters | 
|---|
|  | 76 | ; | 
|---|
|  | 77 | TASK ; | 
|---|
|  | 78 | N RORERRDL      ; Default error location | 
|---|
|  | 79 | N RORERROR      ; Error processing data | 
|---|
|  | 80 | N RORLOG        ; Log susbsystem data | 
|---|
|  | 81 | N RORPARM       ; Application parameters | 
|---|
|  | 82 | ; | 
|---|
|  | 83 | N BUF,COUNTERS,FAM,HDEIEN,I,IENS,INFO,RC,REGLST,REGNAME,RORBUF,RORMSG,TASKIEN,TMP | 
|---|
|  | 84 | S RORTSK=ZTSK | 
|---|
|  | 85 | S HDEIEN=+$$PARAM^RORTSK01("HDEIEN") | 
|---|
|  | 86 | S TASKIEN=+$$PARAM^RORTSK01("TASKIEN") | 
|---|
|  | 87 | ;--- Initialize constants and variables | 
|---|
|  | 88 | D INIT^RORUTL01("RORHDT"),CLEAR^RORERR("TASK^RORHDT03") | 
|---|
|  | 89 | ;S RORPARM("DEBUG")=1 ; Remove the first ';' to start in debug mode | 
|---|
|  | 90 | S RORPARM("ERR")=1    ; Enable enhanced error processing | 
|---|
|  | 91 | S RORPARM("LOG")=1    ; Enable error recording | 
|---|
|  | 92 | ;--- Wait until the task record is created | 
|---|
|  | 93 | S TMP=$$TRWAIT^RORTSK01(RORTSK) | 
|---|
|  | 94 | ;--- Open the task log | 
|---|
|  | 95 | S TMP=$$SETUP^RORLOG() | 
|---|
|  | 96 | S TMP=$$OPEN^RORLOG(,4,"HDE TASK #"_RORTSK_" STARTED") | 
|---|
|  | 97 | D | 
|---|
|  | 98 | . ;--- Initialize the task | 
|---|
|  | 99 | . S RC=$$INIT^RORTSK01(RORTSK,$$LOGIEN^RORLOG)  Q:RC<0 | 
|---|
|  | 100 | . ;--- Load parameters of the data extraction | 
|---|
|  | 101 | . S IENS=(+HDEIEN)_"," | 
|---|
|  | 102 | . D GETS^DIQ(799.6,IENS,"3*","I","RORBUF","RORMSG") | 
|---|
|  | 103 | . D:$G(DIERR) DBS^RORERR("RORMSG",-9,,,799.6,IENS) | 
|---|
|  | 104 | . ;--- Compile the list of registries | 
|---|
|  | 105 | . S I="" | 
|---|
|  | 106 | . F  S I=$O(RORBUF(799.63,I))  Q:I=""  D | 
|---|
|  | 107 | . . S REGNAME=$G(RORBUF(799.63,I,.01,"I"))  Q:REGNAME="" | 
|---|
|  | 108 | . . S TMP=$$REGIEN^RORUTL02(REGNAME) | 
|---|
|  | 109 | . . S:TMP>0 REGLST(REGNAME)=TMP | 
|---|
|  | 110 | . ;--- Associate the log with the registries | 
|---|
|  | 111 | . S RC=$$SETRGLST^RORLOG(.REGLST) | 
|---|
|  | 112 | . ;--- | 
|---|
|  | 113 | . S TMP=$$PARAM^RORTSK01("FAM") | 
|---|
|  | 114 | . S RC=$$EXTRACT^RORHDT04(.REGLST,HDEIEN,TASKIEN,TMP) | 
|---|
|  | 115 | . S:RC'<0 COUNTERS=RC | 
|---|
|  | 116 | ; | 
|---|
|  | 117 | ;--- Post-processing | 
|---|
|  | 118 | S TMP=$$EXIT^RORTSK01(RC) | 
|---|
|  | 119 | ;--- Close the log | 
|---|
|  | 120 | S TMP="HDE TASK #"_RORTSK_$S(RC<0:" ABORTED",1:" COMPLETED") | 
|---|
|  | 121 | D CLOSE^RORLOG(TMP,$G(COUNTERS)) | 
|---|
|  | 122 | D:'$G(RORPARM("DEBUG")) INIT^RORUTL01("RORHDT") | 
|---|
|  | 123 | Q | 
|---|