XT73P129 ;OAK/MKO-POST-INSTALL ROUTINE FOR XT*7.3*129 ;25 Jan 2011 10:17 PM
;;7.3;TOOLKIT;**129**;Apr 25, 1995;Build 2
Q
;
EN ; **129,MPIC_2382
; This entry point is called from the POST-INSTALL of patch XT*7.3*129.
; It queues a process to purge File #15 of entries that meet the following criteria:
; - STATUS (Field #.03) = 'P' for POTENTIAL DUPLICATE, UNVERIFIED
; - MERGE STATUS (Field #.05) = 0 or ""
; - WHO CREATED (field #.09) = POSTMASTER (.5)
D MSG
D QUEUE Q:$G(XPDABORT)
Q
;
PURGE ; Purge records. This is the entry point for the queued task.
N PAIR,DA,DIK,X,Y,MSG,XTMPNAME
;
; Set the header nodes in ^XTMP
S XTMPNAME=$$SETXTMP
;
; Loop through records in the "APOT" index for records pertaining to
; the Patient file and call ^DIK
S DIK="^VA(15,"
S PAIR="" F S PAIR=$O(^VA(15,"APOT","DPT(",PAIR)) Q:PAIR="" D
. S DA=0 F S DA=$O(^VA(15,"APOT","DPT(",PAIR,DA)) Q:'DA D
.. ; Screen on WHO CREATED = .5 (POSTMASTER) AND MERGE STATUS = 0 OR ""
.. I $D(^VA(15,DA,0))#2,$P(^(0),U,9)=.5,'$P(^(0),U,5) D
... ; Record status info in ^XTMP, save 0 node of record
... ; and write to console if not queued
... N STR
... S STR="IEN="_DA_", DFN pair="_PAIR
... S @XTMPNAME@(0,"STATUS")="Deleting "_STR
... S @XTMPNAME@(DA,0)=$G(^VA(15,DA,0))
... W:'$D(ZTQUEUED) !,"Deleting "_STR
... ;
... ; Delete the record and update count and status
... D ^DIK
... S @XTMPNAME@(0,"CNT")=$G(@XTMPNAME@(0,"CNT"))+1
... S @XTMPNAME@(0,"STATUS")="Deleted "_STR
;
; Record results in ^XTMP
S @XTMPNAME@(0,"STATUS")="Completed successfully."
S @XTMPNAME@(0,"COMPLETED")=$$NOW^XLFDT
;
; Delete task and send MailMan message if queued.
; Write a message if not queued.
I $D(ZTQUEUED) D
. S ZTREQ="@"
. D EMAIL(XTMPNAME)
E D
. W !!,"Process completed successfully, "_@XTMPNAME@(0,"CNT")_" records deleted.",!
Q
;
SETXTMP() ; Set up nodes in ^XTMP("XT73P129")
; Return the string ^XTMP("XT73P129",fmStartTime)
N TSTAMP,XTMPNAME
S TSTAMP=$$NOW^XLFDT
S ^XTMP("XT73P129",0)=$$FMADD^XLFDT($$DT^XLFDT,60)_U_TSTAMP_U_"Purge of DUPLICATE RECORD File (#15) of POTENTIAL DUPLICATE, UNVERIFIED patient records created by the POSTMASTER (#.5)"
S XTMPNAME=$NA(^XTMP("XT73P129",TSTAMP))
S @XTMPNAME@(0,"CNT")=0
S @XTMPNAME@(0,"DUZ")=$S($G(XTQUEDUZ)>0:XTQUEDUZ,$G(DUZ)>0:DUZ,1:.5)
S @XTMPNAME@(0,"STATUS")="Process started."
S @XTMPNAME@(0,"STARTED")=TSTAMP
Q XTMPNAME
;
QUEUE ; Queue the purging process
N ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTSK,XTQUEDUZ
S ZTRTN="PURGE^XT73P129"
S ZTDESC="Purge 'Potential Duplicate, Unverified' patient records from DUPLICATE RECORD File (#15)."
S ZTDTH=$H
S ZTIO=""
S XTQUEDUZ=$S($G(DUZ)>0:DUZ,1:.5),ZTSAVE("XTQUEDUZ")=""
D ^%ZTLOAD
I $D(ZTSK)[0 D
. D BMES^XPDUTL("*** Failed to queue the purging process. Post installation aborted. ***")
. S:$G(XPDNM)]"" XPDABORT=1
E D
. D BMES^XPDUTL("Purging process queued. Task: "_ZTSK)
Q
;
MSG ; Display/log introductory message
N MSG
D ADD(.MSG,"Queuing a TaskMan task to purge records from the DUPLICATE RECORD File (#15)")
D ADD(.MSG,"that meet the following criteria:")
D ADD(.MSG,"")
D ADD(.MSG," - STATUS (Field #.03) = 'P' for POTENTIAL DUPLICATE, UNVERIFIED")
D ADD(.MSG," - MERGE STATUS (Field #.05) = 0 or """"")
D ADD(.MSG," - WHO CREATED (field #.09) = POSTMASTER (.5)")
D ADD(.MSG,"")
D ADD(.MSG,"The tasked process stores information in the ^XTMP(""XT73P129"") global.")
D ADD(.MSG,"")
D ADD(.MSG," ^XTMP(""XT73P129"",fmStartTime,IEN,0) : 0 node of the record deleted")
D ADD(.MSG," ^XTMP(""XT73P129"",fmStartTime,0,""CNT"") : No. of records deleted")
D ADD(.MSG," ^XTMP(""XT73P129"",fmStartTime,0,""COMPLETED"") : Completion time in FM format")
D ADD(.MSG," ^XTMP(""XT73P129"",fmStartTime,0,""DUZ"") : DUZ of user")
D ADD(.MSG," ^XTMP(""XT73P129"",fmStartTime,0,""STARTED"") : Start time in FM format")
D ADD(.MSG," ^XTMP(""XT73P129"",fmStartTime,0,""STATUS"") : Status information")
D MES^XPDUTL(.MSG)
Q
;
EMAIL(XTMPNAME) ; Send e-mail with summary information
N XTQUEDUZ,STATUS,CNT,COMPLETE,START,XMDUZ,XMSUB,XMY,XMTEXT,XMMG,XTTEXT,DIFROM
;
; Get information from ^XTMP
S XTQUEDUZ=$G(@XTMPNAME@(0,"DUZ"))
S STATUS=$G(@XTMPNAME@(0,"STATUS"))
S CNT=+$G(@XTMPNAME@(0,"CNT"))
S START=$G(@XTMPNAME@(0,"STARTED"))
S COMPLETE=$G(@XTMPNAME@(0,"COMPLETED"))
;
; Build and send an e-mail message to POSTMASTER and user who queued
; the process
S XMDUZ=.5
S XMSUB="XT*7.3*129 POST-INSTALL COMPLETE"
S XMY(XTQUEDUZ)=""
S XMY(.5)=""
S XMTEXT="XTTEXT("
D ADD(.XTTEXT,"Post Install for patch XT*7.3*129 has run to completion.")
D ADD(.XTTEXT,"")
D ADD(.XTTEXT," Time started: "_$$FMTE^XLFDT(START))
D ADD(.XTTEXT," Time completed: "_$$FMTE^XLFDT(COMPLETE))
D ADD(.XTTEXT,"")
D ADD(.XTTEXT,CNT_" records were deleted from the DUPLICATE RECORD File (#15).")
D ADD(.XTTEXT,"")
D ADD(.XTTEXT,"The 0 nodes of deleted records are backed up in:")
D ADD(.XTTEXT,"")
D ADD(.XTTEXT," ^XTMP(""XT73P129"","_START_",IEN,0)")
D ADD(.XTTEXT,"")
D ADD(.XTTEXT,"You may now delete routine XT73P129.")
D ^XMD
Q
;
ADD(ARRAY,TXT) ; Add text to an array (passed by reference)
S ARRAY($O(ARRAY(""),-1)+1)=TXT
Q
XT73P129 ;OAK/MKO-POST-INSTALL ROUTINE FOR XT*7.3*129 ;25 Jan 2011 10:17 PM
+1 ;;7.3;TOOLKIT;**129**;Apr 25, 1995;Build 2
+2 QUIT
+3 ;
EN ; **129,MPIC_2382
+1 ; This entry point is called from the POST-INSTALL of patch XT*7.3*129.
+2 ; It queues a process to purge File #15 of entries that meet the following criteria:
+3 ; - STATUS (Field #.03) = 'P' for POTENTIAL DUPLICATE, UNVERIFIED
+4 ; - MERGE STATUS (Field #.05) = 0 or ""
+5 ; - WHO CREATED (field #.09) = POSTMASTER (.5)
+6 DO MSG
+7 DO QUEUE
IF $GET(XPDABORT)
QUIT
+8 QUIT
+9 ;
PURGE ; Purge records. This is the entry point for the queued task.
+1 NEW PAIR,DA,DIK,X,Y,MSG,XTMPNAME
+2 ;
+3 ; Set the header nodes in ^XTMP
+4 SET XTMPNAME=$$SETXTMP
+5 ;
+6 ; Loop through records in the "APOT" index for records pertaining to
+7 ; the Patient file and call ^DIK
+8 SET DIK="^VA(15,"
+9 SET PAIR=""
FOR
SET PAIR=$ORDER(^VA(15,"APOT","DPT(",PAIR))
IF PAIR=""
QUIT
Begin DoDot:1
+10 SET DA=0
FOR
SET DA=$ORDER(^VA(15,"APOT","DPT(",PAIR,DA))
IF 'DA
QUIT
Begin DoDot:2
+11 ; Screen on WHO CREATED = .5 (POSTMASTER) AND MERGE STATUS = 0 OR ""
+12 IF $DATA(^VA(15,DA,0))#2
IF $PIECE(^(0),U,9)=.5
IF '$PIECE(^(0),U,5)
Begin DoDot:3
+13 ; Record status info in ^XTMP, save 0 node of record
+14 ; and write to console if not queued
+15 NEW STR
+16 SET STR="IEN="_DA_", DFN pair="_PAIR
+17 SET @XTMPNAME@(0,"STATUS")="Deleting "_STR
+18 SET @XTMPNAME@(DA,0)=$GET(^VA(15,DA,0))
+19 IF '$DATA(ZTQUEUED)
WRITE !,"Deleting "_STR
+20 ;
+21 ; Delete the record and update count and status
+22 DO ^DIK
+23 SET @XTMPNAME@(0,"CNT")=$GET(@XTMPNAME@(0,"CNT"))+1
+24 SET @XTMPNAME@(0,"STATUS")="Deleted "_STR
End DoDot:3
End DoDot:2
End DoDot:1
+25 ;
+26 ; Record results in ^XTMP
+27 SET @XTMPNAME@(0,"STATUS")="Completed successfully."
+28 SET @XTMPNAME@(0,"COMPLETED")=$$NOW^XLFDT
+29 ;
+30 ; Delete task and send MailMan message if queued.
+31 ; Write a message if not queued.
+32 IF $DATA(ZTQUEUED)
Begin DoDot:1
+33 SET ZTREQ="@"
+34 DO EMAIL(XTMPNAME)
End DoDot:1
+35 IF '$TEST
Begin DoDot:1
+36 WRITE !!,"Process completed successfully, "_@XTMPNAME@(0,"CNT")_" records deleted.",!
End DoDot:1
+37 QUIT
+38 ;
SETXTMP() ; Set up nodes in ^XTMP("XT73P129")
+1 ; Return the string ^XTMP("XT73P129",fmStartTime)
+2 NEW TSTAMP,XTMPNAME
+3 SET TSTAMP=$$NOW^XLFDT
+4 SET ^XTMP("XT73P129",0)=$$FMADD^XLFDT($$DT^XLFDT,60)_U_TSTAMP_U_"Purge of DUPLICATE RECORD File (#15) of POTENTIAL DUPLICATE, UNVERIFIED patient records created by the POSTMASTER (#.5)"
+5 SET XTMPNAME=$NAME(^XTMP("XT73P129",TSTAMP))
+6 SET @XTMPNAME@(0,"CNT")=0
+7 SET @XTMPNAME@(0,"DUZ")=$SELECT($GET(XTQUEDUZ)>0:XTQUEDUZ,$GET(DUZ)>0:DUZ,1:.5)
+8 SET @XTMPNAME@(0,"STATUS")="Process started."
+9 SET @XTMPNAME@(0,"STARTED")=TSTAMP
+10 QUIT XTMPNAME
+11 ;
QUEUE ; Queue the purging process
+1 NEW ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTSK,XTQUEDUZ
+2 SET ZTRTN="PURGE^XT73P129"
+3 SET ZTDESC="Purge 'Potential Duplicate, Unverified' patient records from DUPLICATE RECORD File (#15)."
+4 SET ZTDTH=$HOROLOG
+5 SET ZTIO=""
+6 SET XTQUEDUZ=$SELECT($GET(DUZ)>0:DUZ,1:.5)
SET ZTSAVE("XTQUEDUZ")=""
+7 DO ^%ZTLOAD
+8 IF $DATA(ZTSK)[0
Begin DoDot:1
+9 DO BMES^XPDUTL("*** Failed to queue the purging process. Post installation aborted. ***")
+10 IF $GET(XPDNM)]""
SET XPDABORT=1
End DoDot:1
+11 IF '$TEST
Begin DoDot:1
+12 DO BMES^XPDUTL("Purging process queued. Task: "_ZTSK)
End DoDot:1
+13 QUIT
+14 ;
MSG ; Display/log introductory message
+1 NEW MSG
+2 DO ADD(.MSG,"Queuing a TaskMan task to purge records from the DUPLICATE RECORD File (#15)")
+3 DO ADD(.MSG,"that meet the following criteria:")
+4 DO ADD(.MSG,"")
+5 DO ADD(.MSG," - STATUS (Field #.03) = 'P' for POTENTIAL DUPLICATE, UNVERIFIED")
+6 DO ADD(.MSG," - MERGE STATUS (Field #.05) = 0 or """"")
+7 DO ADD(.MSG," - WHO CREATED (field #.09) = POSTMASTER (.5)")
+8 DO ADD(.MSG,"")
+9 DO ADD(.MSG,"The tasked process stores information in the ^XTMP(""XT73P129"") global.")
+10 DO ADD(.MSG,"")
+11 DO ADD(.MSG," ^XTMP(""XT73P129"",fmStartTime,IEN,0) : 0 node of the record deleted")
+12 DO ADD(.MSG," ^XTMP(""XT73P129"",fmStartTime,0,""CNT"") : No. of records deleted")
+13 DO ADD(.MSG," ^XTMP(""XT73P129"",fmStartTime,0,""COMPLETED"") : Completion time in FM format")
+14 DO ADD(.MSG," ^XTMP(""XT73P129"",fmStartTime,0,""DUZ"") : DUZ of user")
+15 DO ADD(.MSG," ^XTMP(""XT73P129"",fmStartTime,0,""STARTED"") : Start time in FM format")
+16 DO ADD(.MSG," ^XTMP(""XT73P129"",fmStartTime,0,""STATUS"") : Status information")
+17 DO MES^XPDUTL(.MSG)
+18 QUIT
+19 ;
EMAIL(XTMPNAME) ; Send e-mail with summary information
+1 NEW XTQUEDUZ,STATUS,CNT,COMPLETE,START,XMDUZ,XMSUB,XMY,XMTEXT,XMMG,XTTEXT,DIFROM
+2 ;
+3 ; Get information from ^XTMP
+4 SET XTQUEDUZ=$GET(@XTMPNAME@(0,"DUZ"))
+5 SET STATUS=$GET(@XTMPNAME@(0,"STATUS"))
+6 SET CNT=+$GET(@XTMPNAME@(0,"CNT"))
+7 SET START=$GET(@XTMPNAME@(0,"STARTED"))
+8 SET COMPLETE=$GET(@XTMPNAME@(0,"COMPLETED"))
+9 ;
+10 ; Build and send an e-mail message to POSTMASTER and user who queued
+11 ; the process
+12 SET XMDUZ=.5
+13 SET XMSUB="XT*7.3*129 POST-INSTALL COMPLETE"
+14 SET XMY(XTQUEDUZ)=""
+15 SET XMY(.5)=""
+16 SET XMTEXT="XTTEXT("
+17 DO ADD(.XTTEXT,"Post Install for patch XT*7.3*129 has run to completion.")
+18 DO ADD(.XTTEXT,"")
+19 DO ADD(.XTTEXT," Time started: "_$$FMTE^XLFDT(START))
+20 DO ADD(.XTTEXT," Time completed: "_$$FMTE^XLFDT(COMPLETE))
+21 DO ADD(.XTTEXT,"")
+22 DO ADD(.XTTEXT,CNT_" records were deleted from the DUPLICATE RECORD File (#15).")
+23 DO ADD(.XTTEXT,"")
+24 DO ADD(.XTTEXT,"The 0 nodes of deleted records are backed up in:")
+25 DO ADD(.XTTEXT,"")
+26 DO ADD(.XTTEXT," ^XTMP(""XT73P129"","_START_",IEN,0)")
+27 DO ADD(.XTTEXT,"")
+28 DO ADD(.XTTEXT,"You may now delete routine XT73P129.")
+29 DO ^XMD
+30 QUIT
+31 ;
ADD(ARRAY,TXT) ; Add text to an array (passed by reference)
+1 SET ARRAY($ORDER(ARRAY(""),-1)+1)=TXT
+2 QUIT