[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
|
---|