124 lines
3.9 KiB
Mathematica
124 lines
3.9 KiB
Mathematica
|
RORHDT03 ;HCIOFO/SG - MANIPULATIONS WITH EXTRACTION TASKS ; 1/23/06 8:40am
|
||
|
;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
|
||
|
;
|
||
|
Q
|
||
|
;
|
||
|
;***** STARTS THE DATA EXTRACTION TASK
|
||
|
;
|
||
|
; HDEIEN Data Extract IEN
|
||
|
; TASKIEN Task IEN
|
||
|
; FAM File Access Mode:
|
||
|
; "A" Append new messages to the file
|
||
|
; "O" Overwrite the file
|
||
|
; "N" Modify file name and create a new file
|
||
|
; [ZTDTH] Start date/time
|
||
|
;
|
||
|
; Return Values:
|
||
|
; <0 Error code
|
||
|
; 0 Ok
|
||
|
; 1 Start time has not been entered
|
||
|
; 2 Already running or pending
|
||
|
;
|
||
|
START(HDEIEN,TASKIEN,FAM,ZTDTH) ;
|
||
|
N IENS,PARAMS,RC,RORFDA,RORMSG,STATUS,TASK,TMP
|
||
|
N ZTCPU,ZTDESC,ZTIO,ZTKIL,ZTPRI,ZTRTN,ZTSAVE,ZTSK,ZTSYNC,ZTUCI
|
||
|
;--- Check status of the task
|
||
|
S STATUS=+$$TASKSTAT^RORHDTUT(HDEIEN,TASKIEN,3)
|
||
|
Q:(STATUS=1)!(STATUS=2)!(STATUS=102) 2
|
||
|
;--- Start/schedule the task
|
||
|
S PARAMS("PARAMS","HDEIEN")=HDEIEN
|
||
|
S PARAMS("PARAMS","TASKIEN")=TASKIEN
|
||
|
S PARAMS("PARAMS","FAM")=FAM
|
||
|
S ZTDESC="CCR HDE Task #"_TASKIEN
|
||
|
S TASK=$$CREATE^RORTSK(1,"TASK^RORHDT03",,,,,.PARAMS)
|
||
|
Q:TASK<0 TASK
|
||
|
W !,"Task #"_TASK_" has been scheduled."
|
||
|
;--- Update task number
|
||
|
S IENS=(+TASKIEN)_","_(+HDEIEN)_","
|
||
|
S RORFDA(799.64,IENS,.02)=TASK
|
||
|
D FILE^DIE(,"RORFDA","RORMSG")
|
||
|
Q:$G(DIERR) $$DBS^RORERR("RORMSG",-9,,,799.64,IENS)
|
||
|
;--- Update the last known task status
|
||
|
S TMP=$$TASKSTAT^RORHDTUT(HDEIEN,TASKIEN)
|
||
|
;--- Success
|
||
|
Q 0
|
||
|
;
|
||
|
;***** STOPS THE DATA EXTRACTION TASK
|
||
|
;
|
||
|
; HDEIEN Data Extract IEN
|
||
|
; TASKIEN Task IEN
|
||
|
;
|
||
|
; Return Values:
|
||
|
; <0 Error code
|
||
|
; 0 Ok
|
||
|
;
|
||
|
STOP(HDEIEN,TASKIEN) ;
|
||
|
N RC,STATUS,TASK,TMP
|
||
|
;--- Get status of the task
|
||
|
S STATUS=+$$TASKSTAT^RORHDTUT(HDEIEN,TASKIEN)
|
||
|
Q:STATUS<0 STATUS
|
||
|
;--- Stop the task if it is running, pending, or suspended
|
||
|
I (STATUS=1)!(STATUS=2)!(STATUS=102) D Q:$G(RC)<0 RC
|
||
|
. S TASK=$$TASKNUM^RORHDTUT(HDEIEN,TASKIEN)
|
||
|
. I TASK<0 S RC=+TASK Q
|
||
|
. S RC=$$DEQUEUE^RORTSK(TASK)
|
||
|
. W:'RC !,"The task #"_TASK_" has been stopped/unscheduled."
|
||
|
. ;--- Update the last known task status
|
||
|
. S STATUS=+$$TASKSTAT^RORHDTUT(HDEIEN,TASKIEN)
|
||
|
;--- Task is stopping
|
||
|
D:STATUS=103
|
||
|
. W !,"The task #"_TASK_" has not responded to the stop request yet."
|
||
|
Q 0
|
||
|
;
|
||
|
;***** HISTORICAL DATA EXTRACTION TASK
|
||
|
;
|
||
|
; RORTSK Task number and task parameters
|
||
|
;
|
||
|
TASK ;
|
||
|
N RORERRDL ; Default error location
|
||
|
N RORERROR ; Error processing data
|
||
|
N RORLOG ; Log susbsystem data
|
||
|
N RORPARM ; Application parameters
|
||
|
;
|
||
|
N BUF,COUNTERS,FAM,HDEIEN,I,IENS,INFO,RC,REGLST,REGNAME,RORBUF,RORMSG,TASKIEN,TMP
|
||
|
S RORTSK=ZTSK
|
||
|
S HDEIEN=+$$PARAM^RORTSK01("HDEIEN")
|
||
|
S TASKIEN=+$$PARAM^RORTSK01("TASKIEN")
|
||
|
;--- Initialize constants and variables
|
||
|
D INIT^RORUTL01("RORHDT"),CLEAR^RORERR("TASK^RORHDT03")
|
||
|
;S RORPARM("DEBUG")=1 ; Remove the first ';' to start in debug mode
|
||
|
S RORPARM("ERR")=1 ; Enable enhanced error processing
|
||
|
S RORPARM("LOG")=1 ; Enable error recording
|
||
|
;--- Wait until the task record is created
|
||
|
S TMP=$$TRWAIT^RORTSK01(RORTSK)
|
||
|
;--- Open the task log
|
||
|
S TMP=$$SETUP^RORLOG()
|
||
|
S TMP=$$OPEN^RORLOG(,4,"HDE TASK #"_RORTSK_" STARTED")
|
||
|
D
|
||
|
. ;--- Initialize the task
|
||
|
. S RC=$$INIT^RORTSK01(RORTSK,$$LOGIEN^RORLOG) Q:RC<0
|
||
|
. ;--- Load parameters of the data extraction
|
||
|
. S IENS=(+HDEIEN)_","
|
||
|
. D GETS^DIQ(799.6,IENS,"3*","I","RORBUF","RORMSG")
|
||
|
. D:$G(DIERR) DBS^RORERR("RORMSG",-9,,,799.6,IENS)
|
||
|
. ;--- Compile the list of registries
|
||
|
. S I=""
|
||
|
. F S I=$O(RORBUF(799.63,I)) Q:I="" D
|
||
|
. . S REGNAME=$G(RORBUF(799.63,I,.01,"I")) Q:REGNAME=""
|
||
|
. . S TMP=$$REGIEN^RORUTL02(REGNAME)
|
||
|
. . S:TMP>0 REGLST(REGNAME)=TMP
|
||
|
. ;--- Associate the log with the registries
|
||
|
. S RC=$$SETRGLST^RORLOG(.REGLST)
|
||
|
. ;---
|
||
|
. S TMP=$$PARAM^RORTSK01("FAM")
|
||
|
. S RC=$$EXTRACT^RORHDT04(.REGLST,HDEIEN,TASKIEN,TMP)
|
||
|
. S:RC'<0 COUNTERS=RC
|
||
|
;
|
||
|
;--- Post-processing
|
||
|
S TMP=$$EXIT^RORTSK01(RC)
|
||
|
;--- Close the log
|
||
|
S TMP="HDE TASK #"_RORTSK_$S(RC<0:" ABORTED",1:" COMPLETED")
|
||
|
D CLOSE^RORLOG(TMP,$G(COUNTERS))
|
||
|
D:'$G(RORPARM("DEBUG")) INIT^RORUTL01("RORHDT")
|
||
|
Q
|