- MDCPURG ;HINES OIFO/DP - CP Nightly Purge Options;27 Jan 2008
- ;;1.0;CLINICAL PROCEDURES;**16**;Apr 01, 2004;Build 280
- ;Per VHA Directive 2004-038, this routine should not be modified.
- ;
- ; This routine uses the following IAs:
- ; #10063 - %ZTLOAD calls Kernel (supported)
- ; # 2263 - XPAR calls Toolkit (supported)
- ;
- ;
- ;
- EN ; Not called interactively
- Q
- ;
- CP ; CP Legacy Cleanup
- N ZTREQ
- S ZTREQ=$$ZTREQ("CP_CLEANUP")
- S MDSTOP=+$$GET^XPAR("SYS","MD PARAMETERS","INSTRUMENT_DATA_RETENTION") Q:'MDSTOP
- S MDSTOP=$$FMADD^XLFDT(DT\1,MDSTOP*-1)
- S MDDT=""
- F S MDDT=$O(^MDD(703.1,"ADTP",MDDT)) Q:MDDT="" D:+MDDT<MDSTOP
- .F X1=0:0 S X1=$O(^MDD(703.1,"ADTP",MDDT,X1)) Q:'X1 D
- ..S MDFDA(703.1,X1_",",.4)="@"
- ..F X2=0:0 S X2=$O(^MDD(703.1,X1,.1,X2)) Q:'X2 D
- ...S MDFDA(703.11,X2_","_X1_",",.01)="@"
- ..D FILE^DIE("","MDFDA") K MDFDA
- Q
- ;
- CLIO ; CliO Background Cleanup
- S ZTREQ=$$ZTREQ("CLIO_CLEANUP")
- S MDSTOP=+$$GET^XPAR("SYS","MD PARAMETERS","UNVERIFIED_OBS_RETENTION") Q:'MDSTOP
- S MDSTOP=$$FMADD^XLFDT(DT,MDSTOP*-1)
- F MDDT=0:0 S MDDT=$O(^MDC(704.117,"AUV",0,MDDT)) Q:'MDDT!(MDDT>MDSTOP) D
- .F MDDA=0:0 S MDDA=$O(^MDC(704.117,"AUV",0,MDDT,MDDA)) Q:'MDDA D
- ..D PURGEOBS(MDDA)
- ..; Checking for child observations as well
- ..S MDGBL=$NA(^MDC(704.117,"AP",MDDA))
- ..F S MDGBL=$Q(@MDGBL) Q:MDGBL="" Q:$QS(MDGBL,3)'=MDDA D
- ...D PURGEOBS($QS(MDGBL,5))
- ..D FILE^DIE("K","MDFDA") ; Bang!
- ..K MDFDA
- Q
- ;
- PURGEOBS(MDDA) ; Gathers the pointers for a single observation
- N MDGBL
- S MDFDA(704.117,MDDA_",",.01)="@"
- ;
- ; Get the SET pointers
- S MDGBL=$NA(^MDC(704.1161,"AS",MDDA))
- F S MDGBL=$Q(@MDGBL) Q:MDGBL="" Q:$QS(MDGBL,3)'=MDDA D
- .S MDFDA(704.1161,$QS(MDGBL,5)_",",.01)="@"
- ;
- ; Get the QUALIFIER pointers
- S MDGBL=$NA(^MDC(704.118,"PK",MDDA))
- F S MDGBL=$Q(@MDGBL) Q:MDGBL="" Q:$QS(MDGBL,3)'=MDDA D
- .S MDFDA(704.118,$QS(MDGBL,5)_",",.01)="@"
- Q
- ;
- HL7 ; Purges HL7 data from 704.002
- S ZTREQ=$$ZTREQ("HL7_CLEANUP")
- S MDCSTOP=+$$GET^XPAR("SYS","MD PARAMETERS","GATEWAY_DATA_RETENTION") Q:'MDCSTOP
- D NOW^%DTC S MDCSTOP=$$FMADD^XLFDT(%,-MDCSTOP,0,0,0)
- N MDCDTTM,MDCIEN S (MDCDTTM,MDCIEN)=0
- F S MDCDTTM=$O(^MDC(704.002,"PURGE","4",MDCDTTM)) Q:$G(MDCDTTM)="" Q:(MDCDTTM>MDCSTOP) D
- .N MDCIEN S MDCIEN=0
- .F S MDCIEN=$O(^MDC(704.002,"PURGE","4",MDCDTTM,MDCIEN)) Q:$G(MDCIEN)="" D
- ..N MDCFDA,MDCSIEN S MDCSIEN=0
- ..S MDCFDA(704.002,MDCIEN_",",.01)="@"
- ..F S MDCSIEN=$O(^MDC(704.004,"B",MDCIEN,MDCSIEN)) Q:$G(MDCSIEN)="" D
- ...S MDCFDA(704.004,MDCSIEN_",",.01)="@"
- ..D FILE^DIE("K","MDCFDA")
- K MDCSTOP
- Q
- ;
- QUERIES ; Clear the cached queries nightly
- S ZTREQ=$$ZTREQ("CACHE_QUERIES")
- N MDOPT,MDQ,MDCMD,MDERR,MDNAME
- ; First, clear out all queries
- D CLEARQ
- ; Now re-build them :)
- D GETLST^XPAR(.MDOPT,"SYS","MD COMMANDS","Q")
- F MDQ=0:0 S MDQ=$O(MDOPT(MDQ)) Q:'MDQ D
- .S MDNAME=$P(MDOPT(MDQ),"^",1),MDNODE="MDCACHE_"_MDNAME
- .D GETWP^XPAR(.MDCMD,"SYS","MD COMMANDS",MDNAME,.MDERR)
- .I $P(MDCMD(1,0),";",7)'=1 Q
- .L +(^XTMP(MDNODE)):60 E Q
- .K ^XTMP(MDNODE)
- .D RPC^MDCLIO(.MDRET,"EXECUTE",MDNAME)
- .S ^XTMP(MDNODE,0)=$$FMADD^XLFDT(DT,1)_U_DT
- .M ^XTMP(MDNODE,1)=@MDRET
- .L -(^XTMP(MDNODE))
- Q
- ;
- CLEARQ ; Clear Queries Cache - Ignores script settings
- N MDQ
- S MDQ="MDCACHE_"
- F S MDQ=$O(^XTMP(MDQ)) Q:MDQ'?1"MDCACHE_".E D
- .L +(^XTMP(MDQ)):60 E Q ; Will try again next time ...
- .K ^XTMP(MDQ)
- .L -(^XTMP(MDQ))
- Q
- ;
- GETPAR(TASKID) ; Get Task in Parameter File
- Q $$GET^XPAR("SYS","MD PARAMETERS","TASK_"_TASKID)
- ;
- SETPAR(TASKID,ZTSK,NAME,RTN,RECUR) ;
- D EN^XPAR("SYS","MD PARAMETERS","TASK_"_TASKID,+$G(ZTSK)_";"_$G(NAME,"Task Has No Name")_";"_$TR($G(RTN),"^"," ")_";"_(+$G(RECUR)))
- Q
- ;
- ZTSK(TASKID) ; Taskman ID - According to MD PARAMETERS, creates one if missing
- N ZTSK
- Q:$$GETPAR(TASKID)="" -1 ; Error state, TASKID not in XPAR
- S ZTSK=+$P($$GETPAR(TASKID),";")
- D STAT^%ZTLOAD I ZTSK(0)=1 Q ZTSK
- Q 0
- ;
- DESC(TASKID) ; Task Description
- Q $P($$GETPAR(TASKID),";",2)
- ;
- RTN(TASKID) ; Task Routine
- Q $TR($P($$GETPAR(TASKID),";",3)," ",U)
- ;
- ZTREQ(TASKID) ; Taskman re-queue identifier
- Q $P("@^1H^1D^7D^30D^365D",U,$$RECUR(TASKID)+1)
- ;
- RECUR(TASKID) ; Task Recurrence
- Q +$P($$GETPAR(TASKID),";",4)
- ;
- START ; Queue the task to be ran @ P2(0)
- ; P2(0)=TASK ID as stored in XPAR (i.e. the name of the background task)
- N ZTSK,ZTRTN,ZTDESC,ZTDTH,ZTIO
- S ZTSK=$$ZTSK(P2(0))
- D:'ZTSK ; Create unscheduled task
- .S ZTRTN=$$RTN(P2(0))
- .S ZTDESC=$$DESC(P2(0))
- .S ZTDTH="@"
- .S ZTIO=""
- .D ^%ZTLOAD
- D ISQED^%ZTLOAD D:ZTSK(0)=1 DQ^%ZTLOAD ; Just to be safe DQ the task first
- S ZTDESC=$$DESC(P2(0)),ZTRTN=$$RTN(P2(0)),ZTIO=""
- S ZTDTH=$$FMDT^MDCLIO(P2(1))
- D REQ^%ZTLOAD
- D SETPAR(P2(0),ZTSK,$$DESC(P2(0)),$$RTN(P2(0)),+$G(P2(2)))
- S @RESULTS@(0)="1^RESCHEDULED"
- Q
- ;
- STOP ; Stop the task (i.e. dequeue)
- N ZTSK
- S ZTSK=$$ZTSK(P2(0))
- D ISQED^%ZTLOAD D:ZTSK(0)=1 DQ^%ZTLOAD
- D STAT
- Q
- ;
- STAT ; GET THE STATUS OF THE PURGE JOB
- D NEWDOC^MDCLIO("RESULTS")
- D XMLHDR^MDCLIO("RECORD")
- D XMLDATA^MDCLIO("TASK_ID",P2(0))
- S ZTSK=$$ZTSK(P2(0))
- I ZTSK<0 D Q
- .D XMLDATA^MDCLIO("TASK",-1)
- .D XMLDATA^MDCLIO("STATUS","-1")
- .D XMLDATA^MDCLIO("MESSAGE","No task ID parameter settings.")
- .D XMLFTR^MDCLIO("RECORD")
- .D ENDDOC^MDCLIO("RESULTS")
- ;
- D XMLDATA^MDCLIO("TASK",ZTSK)
- D XMLDATA^MDCLIO("TASK_NAME",$$DESC(P2(0)))
- D XMLDATA^MDCLIO("TASK_ROUTINE",$$RTN(P2(0)))
- D XMLDATA^MDCLIO("RECURRENCE",$$RECUR(P2(0)))
- ;
- D STAT^%ZTLOAD
- I '$G(ZTSK(0)) D Q
- .D XMLDATA^MDCLIO("STATUS",0)
- .D XMLDATA^MDCLIO("MESSAGE","Task ID not found in Taskman.")
- .D XMLFTR^MDCLIO("RECORD")
- .D ENDDOC^MDCLIO("RESULTS")
- ;
- D XMLDATA^MDCLIO("STATUS",ZTSK(1))
- D XMLDATA^MDCLIO("MESSAGE",ZTSK(2))
- I ZTSK(1)=1 D
- .D ISQED^%ZTLOAD
- .I $G(ZTSK("D"))]"" D XMLDT^MDCLIO("SCHEDULED",$$HTFM^XLFDT(ZTSK("D")))
- D XMLFTR^MDCLIO("RECORD")
- D ENDDOC^MDCLIO("RESULTS")
- Q
- ;
- GETTASKS ; Get list of the known tasks
- N MDLIST,MDERR,MDTASK
- D BLD
- D GETLST^XPAR(.MDLIST,"SYS","MD PARAMETERS","Q",.MDERR)
- D NEWDOC^MDCLIO("RESULTS")
- F MDTASK=0:0 S MDTASK=$O(MDLIST(MDTASK)) Q:'MDTASK D
- .Q:MDLIST(MDTASK)'?1"TASK_".E
- .D XMLHDR^MDCLIO("RECORD")
- .D XMLDATA^MDCLIO("TASK_ID",$P($P(MDLIST(MDTASK),"^",1),"TASK_",2))
- .D XMLDATA^MDCLIO("TASK_NAME",$P(MDLIST(MDTASK),";",2))
- .D XMLDATA^MDCLIO("TASK",+$P(MDLIST(MDTASK),"^",2))
- .D XMLFTR^MDCLIO("RECORD")
- D ENDDOC^MDCLIO("RESULTS")
- Q
- ;
- BLD ; Build the known tasks
- I $$GETPAR("CLIO_CLEANUP")="" D SETPAR("CLIO_CLEANUP",0,"CliO Cleanup","CLIO^MDCPURG")
- I $$GETPAR("CP_CLEANUP")="" D SETPAR("CP_CLEANUP",0,"CP Legacy Cleanup","CP^MDCPURG")
- I $$GETPAR("HL7_CLEANUP")="" D SETPAR("HL7_CLEANUP",0,"HL7 Log Cleanup","HL7^MDCPURG")
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HMDCPURG 6899 printed Mar 13, 2025@20:47:13 Page 2
- MDCPURG ;HINES OIFO/DP - CP Nightly Purge Options;27 Jan 2008
- +1 ;;1.0;CLINICAL PROCEDURES;**16**;Apr 01, 2004;Build 280
- +2 ;Per VHA Directive 2004-038, this routine should not be modified.
- +3 ;
- +4 ; This routine uses the following IAs:
- +5 ; #10063 - %ZTLOAD calls Kernel (supported)
- +6 ; # 2263 - XPAR calls Toolkit (supported)
- +7 ;
- +8 ;
- +9 ;
- EN ; Not called interactively
- +1 QUIT
- +2 ;
- CP ; CP Legacy Cleanup
- +1 NEW ZTREQ
- +2 SET ZTREQ=$$ZTREQ("CP_CLEANUP")
- +3 SET MDSTOP=+$$GET^XPAR("SYS","MD PARAMETERS","INSTRUMENT_DATA_RETENTION")
- if 'MDSTOP
- QUIT
- +4 SET MDSTOP=$$FMADD^XLFDT(DT\1,MDSTOP*-1)
- +5 SET MDDT=""
- +6 FOR
- SET MDDT=$ORDER(^MDD(703.1,"ADTP",MDDT))
- if MDDT=""
- QUIT
- if +MDDT<MDSTOP
- Begin DoDot:1
- +7 FOR X1=0:0
- SET X1=$ORDER(^MDD(703.1,"ADTP",MDDT,X1))
- if 'X1
- QUIT
- Begin DoDot:2
- +8 SET MDFDA(703.1,X1_",",.4)="@"
- +9 FOR X2=0:0
- SET X2=$ORDER(^MDD(703.1,X1,.1,X2))
- if 'X2
- QUIT
- Begin DoDot:3
- +10 SET MDFDA(703.11,X2_","_X1_",",.01)="@"
- End DoDot:3
- +11 DO FILE^DIE("","MDFDA")
- KILL MDFDA
- End DoDot:2
- End DoDot:1
- +12 QUIT
- +13 ;
- CLIO ; CliO Background Cleanup
- +1 SET ZTREQ=$$ZTREQ("CLIO_CLEANUP")
- +2 SET MDSTOP=+$$GET^XPAR("SYS","MD PARAMETERS","UNVERIFIED_OBS_RETENTION")
- if 'MDSTOP
- QUIT
- +3 SET MDSTOP=$$FMADD^XLFDT(DT,MDSTOP*-1)
- +4 FOR MDDT=0:0
- SET MDDT=$ORDER(^MDC(704.117,"AUV",0,MDDT))
- if 'MDDT!(MDDT>MDSTOP)
- QUIT
- Begin DoDot:1
- +5 FOR MDDA=0:0
- SET MDDA=$ORDER(^MDC(704.117,"AUV",0,MDDT,MDDA))
- if 'MDDA
- QUIT
- Begin DoDot:2
- +6 DO PURGEOBS(MDDA)
- +7 ; Checking for child observations as well
- +8 SET MDGBL=$NAME(^MDC(704.117,"AP",MDDA))
- +9 FOR
- SET MDGBL=$QUERY(@MDGBL)
- if MDGBL=""
- QUIT
- if $QSUBSCRIPT(MDGBL,3)'=MDDA
- QUIT
- Begin DoDot:3
- +10 DO PURGEOBS($QSUBSCRIPT(MDGBL,5))
- End DoDot:3
- +11 ; Bang!
- DO FILE^DIE("K","MDFDA")
- +12 KILL MDFDA
- End DoDot:2
- End DoDot:1
- +13 QUIT
- +14 ;
- PURGEOBS(MDDA) ; Gathers the pointers for a single observation
- +1 NEW MDGBL
- +2 SET MDFDA(704.117,MDDA_",",.01)="@"
- +3 ;
- +4 ; Get the SET pointers
- +5 SET MDGBL=$NAME(^MDC(704.1161,"AS",MDDA))
- +6 FOR
- SET MDGBL=$QUERY(@MDGBL)
- if MDGBL=""
- QUIT
- if $QSUBSCRIPT(MDGBL,3)'=MDDA
- QUIT
- Begin DoDot:1
- +7 SET MDFDA(704.1161,$QSUBSCRIPT(MDGBL,5)_",",.01)="@"
- End DoDot:1
- +8 ;
- +9 ; Get the QUALIFIER pointers
- +10 SET MDGBL=$NAME(^MDC(704.118,"PK",MDDA))
- +11 FOR
- SET MDGBL=$QUERY(@MDGBL)
- if MDGBL=""
- QUIT
- if $QSUBSCRIPT(MDGBL,3)'=MDDA
- QUIT
- Begin DoDot:1
- +12 SET MDFDA(704.118,$QSUBSCRIPT(MDGBL,5)_",",.01)="@"
- End DoDot:1
- +13 QUIT
- +14 ;
- HL7 ; Purges HL7 data from 704.002
- +1 SET ZTREQ=$$ZTREQ("HL7_CLEANUP")
- +2 SET MDCSTOP=+$$GET^XPAR("SYS","MD PARAMETERS","GATEWAY_DATA_RETENTION")
- if 'MDCSTOP
- QUIT
- +3 DO NOW^%DTC
- SET MDCSTOP=$$FMADD^XLFDT(%,-MDCSTOP,0,0,0)
- +4 NEW MDCDTTM,MDCIEN
- SET (MDCDTTM,MDCIEN)=0
- +5 FOR
- SET MDCDTTM=$ORDER(^MDC(704.002,"PURGE","4",MDCDTTM))
- if $GET(MDCDTTM)=""
- QUIT
- if (MDCDTTM>MDCSTOP)
- QUIT
- Begin DoDot:1
- +6 NEW MDCIEN
- SET MDCIEN=0
- +7 FOR
- SET MDCIEN=$ORDER(^MDC(704.002,"PURGE","4",MDCDTTM,MDCIEN))
- if $GET(MDCIEN)=""
- QUIT
- Begin DoDot:2
- +8 NEW MDCFDA,MDCSIEN
- SET MDCSIEN=0
- +9 SET MDCFDA(704.002,MDCIEN_",",.01)="@"
- +10 FOR
- SET MDCSIEN=$ORDER(^MDC(704.004,"B",MDCIEN,MDCSIEN))
- if $GET(MDCSIEN)=""
- QUIT
- Begin DoDot:3
- +11 SET MDCFDA(704.004,MDCSIEN_",",.01)="@"
- End DoDot:3
- +12 DO FILE^DIE("K","MDCFDA")
- End DoDot:2
- End DoDot:1
- +13 KILL MDCSTOP
- +14 QUIT
- +15 ;
- QUERIES ; Clear the cached queries nightly
- +1 SET ZTREQ=$$ZTREQ("CACHE_QUERIES")
- +2 NEW MDOPT,MDQ,MDCMD,MDERR,MDNAME
- +3 ; First, clear out all queries
- +4 DO CLEARQ
- +5 ; Now re-build them :)
- +6 DO GETLST^XPAR(.MDOPT,"SYS","MD COMMANDS","Q")
- +7 FOR MDQ=0:0
- SET MDQ=$ORDER(MDOPT(MDQ))
- if 'MDQ
- QUIT
- Begin DoDot:1
- +8 SET MDNAME=$PIECE(MDOPT(MDQ),"^",1)
- SET MDNODE="MDCACHE_"_MDNAME
- +9 DO GETWP^XPAR(.MDCMD,"SYS","MD COMMANDS",MDNAME,.MDERR)
- +10 IF $PIECE(MDCMD(1,0),";",7)'=1
- QUIT
- +11 LOCK +(^XTMP(MDNODE)):60
- IF '$TEST
- QUIT
- +12 KILL ^XTMP(MDNODE)
- +13 DO RPC^MDCLIO(.MDRET,"EXECUTE",MDNAME)
- +14 SET ^XTMP(MDNODE,0)=$$FMADD^XLFDT(DT,1)_U_DT
- +15 MERGE ^XTMP(MDNODE,1)=@MDRET
- +16 LOCK -(^XTMP(MDNODE))
- End DoDot:1
- +17 QUIT
- +18 ;
- CLEARQ ; Clear Queries Cache - Ignores script settings
- +1 NEW MDQ
- +2 SET MDQ="MDCACHE_"
- +3 FOR
- SET MDQ=$ORDER(^XTMP(MDQ))
- if MDQ'?1"MDCACHE_".E
- QUIT
- Begin DoDot:1
- +4 ; Will try again next time ...
- LOCK +(^XTMP(MDQ)):60
- IF '$TEST
- QUIT
- +5 KILL ^XTMP(MDQ)
- +6 LOCK -(^XTMP(MDQ))
- End DoDot:1
- +7 QUIT
- +8 ;
- GETPAR(TASKID) ; Get Task in Parameter File
- +1 QUIT $$GET^XPAR("SYS","MD PARAMETERS","TASK_"_TASKID)
- +2 ;
- SETPAR(TASKID,ZTSK,NAME,RTN,RECUR) ;
- +1 DO EN^XPAR("SYS","MD PARAMETERS","TASK_"_TASKID,+$GET(ZTSK)_";"_$GET(NAME,"Task Has No Name")_";"_$TRANSLATE($GET(RTN),"^"," ")_";"_(+$GET(RECUR)))
- +2 QUIT
- +3 ;
- ZTSK(TASKID) ; Taskman ID - According to MD PARAMETERS, creates one if missing
- +1 NEW ZTSK
- +2 ; Error state, TASKID not in XPAR
- if $$GETPAR(TASKID)=""
- QUIT -1
- +3 SET ZTSK=+$PIECE($$GETPAR(TASKID),";")
- +4 DO STAT^%ZTLOAD
- IF ZTSK(0)=1
- QUIT ZTSK
- +5 QUIT 0
- +6 ;
- DESC(TASKID) ; Task Description
- +1 QUIT $PIECE($$GETPAR(TASKID),";",2)
- +2 ;
- RTN(TASKID) ; Task Routine
- +1 QUIT $TRANSLATE($PIECE($$GETPAR(TASKID),";",3)," ",U)
- +2 ;
- ZTREQ(TASKID) ; Taskman re-queue identifier
- +1 QUIT $PIECE("@^1H^1D^7D^30D^365D",U,$$RECUR(TASKID)+1)
- +2 ;
- RECUR(TASKID) ; Task Recurrence
- +1 QUIT +$PIECE($$GETPAR(TASKID),";",4)
- +2 ;
- START ; Queue the task to be ran @ P2(0)
- +1 ; P2(0)=TASK ID as stored in XPAR (i.e. the name of the background task)
- +2 NEW ZTSK,ZTRTN,ZTDESC,ZTDTH,ZTIO
- +3 SET ZTSK=$$ZTSK(P2(0))
- +4 ; Create unscheduled task
- if 'ZTSK
- Begin DoDot:1
- +5 SET ZTRTN=$$RTN(P2(0))
- +6 SET ZTDESC=$$DESC(P2(0))
- +7 SET ZTDTH="@"
- +8 SET ZTIO=""
- +9 DO ^%ZTLOAD
- End DoDot:1
- +10 ; Just to be safe DQ the task first
- DO ISQED^%ZTLOAD
- if ZTSK(0)=1
- DO DQ^%ZTLOAD
- +11 SET ZTDESC=$$DESC(P2(0))
- SET ZTRTN=$$RTN(P2(0))
- SET ZTIO=""
- +12 SET ZTDTH=$$FMDT^MDCLIO(P2(1))
- +13 DO REQ^%ZTLOAD
- +14 DO SETPAR(P2(0),ZTSK,$$DESC(P2(0)),$$RTN(P2(0)),+$GET(P2(2)))
- +15 SET @RESULTS@(0)="1^RESCHEDULED"
- +16 QUIT
- +17 ;
- STOP ; Stop the task (i.e. dequeue)
- +1 NEW ZTSK
- +2 SET ZTSK=$$ZTSK(P2(0))
- +3 DO ISQED^%ZTLOAD
- if ZTSK(0)=1
- DO DQ^%ZTLOAD
- +4 DO STAT
- +5 QUIT
- +6 ;
- STAT ; GET THE STATUS OF THE PURGE JOB
- +1 DO NEWDOC^MDCLIO("RESULTS")
- +2 DO XMLHDR^MDCLIO("RECORD")
- +3 DO XMLDATA^MDCLIO("TASK_ID",P2(0))
- +4 SET ZTSK=$$ZTSK(P2(0))
- +5 IF ZTSK<0
- Begin DoDot:1
- +6 DO XMLDATA^MDCLIO("TASK",-1)
- +7 DO XMLDATA^MDCLIO("STATUS","-1")
- +8 DO XMLDATA^MDCLIO("MESSAGE","No task ID parameter settings.")
- +9 DO XMLFTR^MDCLIO("RECORD")
- +10 DO ENDDOC^MDCLIO("RESULTS")
- End DoDot:1
- QUIT
- +11 ;
- +12 DO XMLDATA^MDCLIO("TASK",ZTSK)
- +13 DO XMLDATA^MDCLIO("TASK_NAME",$$DESC(P2(0)))
- +14 DO XMLDATA^MDCLIO("TASK_ROUTINE",$$RTN(P2(0)))
- +15 DO XMLDATA^MDCLIO("RECURRENCE",$$RECUR(P2(0)))
- +16 ;
- +17 DO STAT^%ZTLOAD
- +18 IF '$GET(ZTSK(0))
- Begin DoDot:1
- +19 DO XMLDATA^MDCLIO("STATUS",0)
- +20 DO XMLDATA^MDCLIO("MESSAGE","Task ID not found in Taskman.")
- +21 DO XMLFTR^MDCLIO("RECORD")
- +22 DO ENDDOC^MDCLIO("RESULTS")
- End DoDot:1
- QUIT
- +23 ;
- +24 DO XMLDATA^MDCLIO("STATUS",ZTSK(1))
- +25 DO XMLDATA^MDCLIO("MESSAGE",ZTSK(2))
- +26 IF ZTSK(1)=1
- Begin DoDot:1
- +27 DO ISQED^%ZTLOAD
- +28 IF $GET(ZTSK("D"))]""
- DO XMLDT^MDCLIO("SCHEDULED",$$HTFM^XLFDT(ZTSK("D")))
- End DoDot:1
- +29 DO XMLFTR^MDCLIO("RECORD")
- +30 DO ENDDOC^MDCLIO("RESULTS")
- +31 QUIT
- +32 ;
- GETTASKS ; Get list of the known tasks
- +1 NEW MDLIST,MDERR,MDTASK
- +2 DO BLD
- +3 DO GETLST^XPAR(.MDLIST,"SYS","MD PARAMETERS","Q",.MDERR)
- +4 DO NEWDOC^MDCLIO("RESULTS")
- +5 FOR MDTASK=0:0
- SET MDTASK=$ORDER(MDLIST(MDTASK))
- if 'MDTASK
- QUIT
- Begin DoDot:1
- +6 if MDLIST(MDTASK)'?1"TASK_".E
- QUIT
- +7 DO XMLHDR^MDCLIO("RECORD")
- +8 DO XMLDATA^MDCLIO("TASK_ID",$PIECE($PIECE(MDLIST(MDTASK),"^",1),"TASK_",2))
- +9 DO XMLDATA^MDCLIO("TASK_NAME",$PIECE(MDLIST(MDTASK),";",2))
- +10 DO XMLDATA^MDCLIO("TASK",+$PIECE(MDLIST(MDTASK),"^",2))
- +11 DO XMLFTR^MDCLIO("RECORD")
- End DoDot:1
- +12 DO ENDDOC^MDCLIO("RESULTS")
- +13 QUIT
- +14 ;
- BLD ; Build the known tasks
- +1 IF $$GETPAR("CLIO_CLEANUP")=""
- DO SETPAR("CLIO_CLEANUP",0,"CliO Cleanup","CLIO^MDCPURG")
- +2 IF $$GETPAR("CP_CLEANUP")=""
- DO SETPAR("CP_CLEANUP",0,"CP Legacy Cleanup","CP^MDCPURG")
- +3 IF $$GETPAR("HL7_CLEANUP")=""
- DO SETPAR("HL7_CLEANUP",0,"HL7 Log Cleanup","HL7^MDCPURG")
- +4 QUIT