DG967PST ;BIR/CML-PATCH DG*5.3*967 POST INSTALLATION ROUTINE ;8/14/18
;;5.3;Registration;**967**;Aug 13, 1993;Build 3
;
; - Story 783361 (cml) DG*5.3*967
; This post-init will loop thru the DG SECURITY LOG FILE (#38.1) and identify entries that are marked as "sensitive".
; The job will be scheduled to run after 10:00pm local time.
; Any records that are found will trigger an A31 message to the MPI.
; When the job is complete it will send an email with stats to:
; - (locally) POSTMASTER and the person who installed the patch (DUZ)
; - (MPI Outlook) Christine.Chesney@domain.ext, Link.Christine@domain.ext and John.Williams30ec0c@domain.ext.
;
; - Story 827326 (cml) DG*5.3*967
; This post-init will loop thru the Patient file (#2) and look for any records with the ZIP+4 field (#.1112) that contains a "-".
; The job will be scheduled to run after 10:00pm local time.
; Any records that are found will strip out the dash and reset the field which will put the edit in the ADT/HL7 PIVOT file (#391.71)
; When the job is complete it will send an email with stats to:
; - (locally) POSTMASTER and the person who installed the patch (DUZ)
; - (MPI Outlook) Christine.Chesney@domain.ext, Link.Christine@domain.ext and John.Williams30ec0c@domain.ext.
;
POST ;queue off post-init to identify patients marked as "sensitive" and trigger A31 to MPI and clean up ZIP+4 records
N DGI,DGFLDS
D BMES^XPDUTL("Post-Install for Sensitivity Seeding/ZIP+4 Cleanup:") ;,MES^XPDUTL("")
I $$PATCH^XPDUTL("DG*5.3*967") D BMES^XPDUTL("Post-Install for Sensitivity Seeding/ZIP+4 previously run.") Q
D QUE ;Task off seeding job of sensitivity updates to MPI and ZIP+4 cleanup
D BMES^XPDUTL("Post-Install for Sensitivity Seeding/ZIP4 Queued.")
Q
;
QUE ; Queue off seeding job of sensitivity updates to MPI and ZIP+4 cleanup to run after 10:00pm
D BMES^XPDUTL(" Queuing job to seed sensitivity updates to MPI/ZIP+4 cleanup after 10:00pm.")
N DAY,DONE,QQ,TIME,ZTIO,ZTSK,ZTRTN,ZTDESC,ZTSAVE,ZTDTH,Y
S ZTIO="",ZTRTN="SECLOOP^DG967PST"
;schedule job after 10:00pm
K SCH S QQ=$$NOW^XLFDT,DAY=$P(QQ,"."),TIME=$P(QQ,".",2)
I TIME<"215900" S SCH=DAY_".2205"
I TIME>"220000" S SCH=$$NOW^XLFDT
S ZTDTH=SCH
S ZTDESC="DG*5.3*967 post-install seeding sensitivity updates and ZIP+4 cleanup."
D ^%ZTLOAD
I '$G(ZTSK) D MES^XPDUTL(" **** Queuing job failed!!!") Q
D MES^XPDUTL(" Job number #"_ZTSK_" was queued.")
Q
;
SECLOOP ; entry point for queued job to loop on DG SECURITY LOG FILE
N DFNCNT,DFN,ICN,SENSI,A31CNT,START,TRY,DONE
S START=$$FMTE^XLFDT($$NOW^XLFDT)
S (DFNCNT,DFN,A31CNT)=0
F S DFN=$O(^DGSL(38.1,DFN)) Q:'DFN S DFNCNT=DFNCNT+1 D
.I $D(^DPT(DFN,-9)) Q
.S SENSI=$P(^DGSL(38.1,DFN,0),"^",2) I SENSI D
..S ICN=$P($G(^DPT(DFN,"MPI")),"^") I ICN S A31CNT=A31CNT+1 S TRY=$$A31^MPIFA31B(DFN)
;
S DONE=$$FMTE^XLFDT($$NOW^XLFDT)
;
EMAILS1 ; Send email to person who ran the INIT, letting them know results
N XMDUZ,XMTEXT,XMSUB,XMY,XMZ,XMDUN,X,R
S R(1)="Seeding of patients marked as Sensitive:"
S R(2)=" "
S R(3)="Process started: "_START
S R(4)="Process completed: "_DONE
S R(5)="Total number of patients processed : "_DFNCNT
S R(6)="Total number of A31 messages triggered to MPI: "_A31CNT
S XMTEXT="R(",XMSUB="Result of running patch DG*5.3*967 (Sensitivity Seeding)"
S XMDUZ=.5
S XMY(DUZ)=""
D ^XMD
;
; Send message to MPI developers on Outlook
; IA#4440 supported call to check for test or production account
I $$PROD^XUPROD()=0 G ZIP4LOOP ;not a production account. Don't send email to MPI dev
;
N DGSNAME,DGSITE,XMDUZ,XMTEXT,XMSUB,XMY,XMZ,XMDUN,R
S X=$$SITE^VASITE()
S DGSNAME=$P(X,"^",2),DGSITE=$P(X,"^",3)
S R(1)="Post-Init routine ^DG967PST run at station: "_DGSITE_" - "_DGSNAME
S R(2)=" "
S R(3)="Seeding of patients marked as Sensitive:"
S R(4)="Process Started: "_START_" - Completed: "_DONE
S R(5)=" "
S R(6)="Total number of patients processed: "_DFNCNT_" "
S R(7)="Total number of A31 messages triggered to MPI: "_A31CNT
S XMTEXT="R(",XMSUB="Result of running patch DG*5.3*967 (Sensitivity) at station: "_DGSITE
S XMDUZ=DUZ
S XMY("Christine.Chesney@domain.ext")=""
S XMY("John.Williams30ec0c@domain.ext")=""
S XMY("Christine.Link@domain.ext")=""
D ^XMD
;
ZIP4LOOP ; start cleanup of ZIP+4 records
N DFNCNT,DFN,NODE,ZIP4,EDZIP,EDCNT,START,DONE
S START=$$FMTE^XLFDT($$NOW^XLFDT)
S (DFNCNT,DFN,EDCNT)=0
F S DFN=$O(^DPT(DFN)) Q:'DFN S DFNCNT=DFNCNT+1 D
.I $D(^DPT(DFN,-9)) Q
.S NODE=$G(^DPT(DFN,.11)),ZIP4=$P(NODE,"^",12) I ZIP4["-" S EDCNT=EDCNT+1 D
..S EDZIP=$P(ZIP4,"-")_$P(ZIP4,"-",2) S X=EDZIP,DIE="^DPT(",DA=DFN,DR=".1112///^S X=EDZIP" D ^DIE K DIE,DA,DR
;
S DONE=$$FMTE^XLFDT($$NOW^XLFDT)
;
EMAILS2 ; Send email to person who ran the INIT, letting them know results
N XMDUZ,XMTEXT,XMSUB,XMY,XMZ,XMDUN,X,R
S R(1)="Cleanup of Patient file records having ZIP+4 field (#.1112) with dashes:"
S R(2)=" "
S R(3)="Process started: "_START
S R(4)="Process completed: "_DONE
S R(5)="Total number of patients processed : "_DFNCNT
S R(6)="Total number of ZIP+4 records edited: "_EDCNT
S R(7)=" ",R(8)="You can now delete the post-init routine ^DG967PST."
S XMTEXT="R(",XMSUB="Result of running patch DG*5.3*967 (ZIP+4 cleanup)"
S XMDUZ=.5
S XMY(DUZ)=""
D ^XMD
;
; Send message to MPI developers on Outlook
; IA#4440 supported call to check for test or production account
Q:$$PROD^XUPROD()=0 ;not a production account. Don't send email to MPI dev
;
N DGSNAME,DGSITE,XMDUZ,XMTEXT,XMSUB,XMY,XMZ,XMDUN,R
S X=$$SITE^VASITE()
S DGSNAME=$P(X,"^",2),DGSITE=$P(X,"^",3)
S R(1)="Post-Init routine ^DG967PST run at station: "_DGSITE_" - "_DGSNAME
S R(2)=" "
S R(3)="Cleanup of Patient file records having ZIP+4 field (#.1112) with dashes:"
S R(4)="Process Started: "_START_" - Completed: "_DONE
S R(5)=" "
S R(6)="Total number of patients processed: "_DFNCNT_" "
S R(7)="Total number of ZIP+4 records edited: "_EDCNT
S XMTEXT="R(",XMSUB="Result of running patch DG*5.3*967 (ZIP+4) at station: "_DGSITE
S XMDUZ=DUZ
S XMY("Christine.Chesney@domain.ext")=""
S XMY("John.Williams30ec0c@domain.ext")=""
S XMY("Christine.Link@domain.ext")=""
D ^XMD
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDG967PST 6351 printed Dec 13, 2024@02:40:57 Page 2
DG967PST ;BIR/CML-PATCH DG*5.3*967 POST INSTALLATION ROUTINE ;8/14/18
+1 ;;5.3;Registration;**967**;Aug 13, 1993;Build 3
+2 ;
+3 ; - Story 783361 (cml) DG*5.3*967
+4 ; This post-init will loop thru the DG SECURITY LOG FILE (#38.1) and identify entries that are marked as "sensitive".
+5 ; The job will be scheduled to run after 10:00pm local time.
+6 ; Any records that are found will trigger an A31 message to the MPI.
+7 ; When the job is complete it will send an email with stats to:
+8 ; - (locally) POSTMASTER and the person who installed the patch (DUZ)
+9 ; - (MPI Outlook) Christine.Chesney@domain.ext, Link.Christine@domain.ext and John.Williams30ec0c@domain.ext.
+10 ;
+11 ; - Story 827326 (cml) DG*5.3*967
+12 ; This post-init will loop thru the Patient file (#2) and look for any records with the ZIP+4 field (#.1112) that contains a "-".
+13 ; The job will be scheduled to run after 10:00pm local time.
+14 ; Any records that are found will strip out the dash and reset the field which will put the edit in the ADT/HL7 PIVOT file (#391.71)
+15 ; When the job is complete it will send an email with stats to:
+16 ; - (locally) POSTMASTER and the person who installed the patch (DUZ)
+17 ; - (MPI Outlook) Christine.Chesney@domain.ext, Link.Christine@domain.ext and John.Williams30ec0c@domain.ext.
+18 ;
POST ;queue off post-init to identify patients marked as "sensitive" and trigger A31 to MPI and clean up ZIP+4 records
+1 NEW DGI,DGFLDS
+2 ;,MES^XPDUTL("")
DO BMES^XPDUTL("Post-Install for Sensitivity Seeding/ZIP+4 Cleanup:")
+3 IF $$PATCH^XPDUTL("DG*5.3*967")
DO BMES^XPDUTL("Post-Install for Sensitivity Seeding/ZIP+4 previously run.")
QUIT
+4 ;Task off seeding job of sensitivity updates to MPI and ZIP+4 cleanup
DO QUE
+5 DO BMES^XPDUTL("Post-Install for Sensitivity Seeding/ZIP4 Queued.")
+6 QUIT
+7 ;
QUE ; Queue off seeding job of sensitivity updates to MPI and ZIP+4 cleanup to run after 10:00pm
+1 DO BMES^XPDUTL(" Queuing job to seed sensitivity updates to MPI/ZIP+4 cleanup after 10:00pm.")
+2 NEW DAY,DONE,QQ,TIME,ZTIO,ZTSK,ZTRTN,ZTDESC,ZTSAVE,ZTDTH,Y
+3 SET ZTIO=""
SET ZTRTN="SECLOOP^DG967PST"
+4 ;schedule job after 10:00pm
+5 KILL SCH
SET QQ=$$NOW^XLFDT
SET DAY=$PIECE(QQ,".")
SET TIME=$PIECE(QQ,".",2)
+6 IF TIME<"215900"
SET SCH=DAY_".2205"
+7 IF TIME>"220000"
SET SCH=$$NOW^XLFDT
+8 SET ZTDTH=SCH
+9 SET ZTDESC="DG*5.3*967 post-install seeding sensitivity updates and ZIP+4 cleanup."
+10 DO ^%ZTLOAD
+11 IF '$GET(ZTSK)
DO MES^XPDUTL(" **** Queuing job failed!!!")
QUIT
+12 DO MES^XPDUTL(" Job number #"_ZTSK_" was queued.")
+13 QUIT
+14 ;
SECLOOP ; entry point for queued job to loop on DG SECURITY LOG FILE
+1 NEW DFNCNT,DFN,ICN,SENSI,A31CNT,START,TRY,DONE
+2 SET START=$$FMTE^XLFDT($$NOW^XLFDT)
+3 SET (DFNCNT,DFN,A31CNT)=0
+4 FOR
SET DFN=$ORDER(^DGSL(38.1,DFN))
if 'DFN
QUIT
SET DFNCNT=DFNCNT+1
Begin DoDot:1
+5 IF $DATA(^DPT(DFN,-9))
QUIT
+6 SET SENSI=$PIECE(^DGSL(38.1,DFN,0),"^",2)
IF SENSI
Begin DoDot:2
+7 SET ICN=$PIECE($GET(^DPT(DFN,"MPI")),"^")
IF ICN
SET A31CNT=A31CNT+1
SET TRY=$$A31^MPIFA31B(DFN)
End DoDot:2
End DoDot:1
+8 ;
+9 SET DONE=$$FMTE^XLFDT($$NOW^XLFDT)
+10 ;
EMAILS1 ; Send email to person who ran the INIT, letting them know results
+1 NEW XMDUZ,XMTEXT,XMSUB,XMY,XMZ,XMDUN,X,R
+2 SET R(1)="Seeding of patients marked as Sensitive:"
+3 SET R(2)=" "
+4 SET R(3)="Process started: "_START
+5 SET R(4)="Process completed: "_DONE
+6 SET R(5)="Total number of patients processed : "_DFNCNT
+7 SET R(6)="Total number of A31 messages triggered to MPI: "_A31CNT
+8 SET XMTEXT="R("
SET XMSUB="Result of running patch DG*5.3*967 (Sensitivity Seeding)"
+9 SET XMDUZ=.5
+10 SET XMY(DUZ)=""
+11 DO ^XMD
+12 ;
+13 ; Send message to MPI developers on Outlook
+14 ; IA#4440 supported call to check for test or production account
+15 ;not a production account. Don't send email to MPI dev
IF $$PROD^XUPROD()=0
GOTO ZIP4LOOP
+16 ;
+17 NEW DGSNAME,DGSITE,XMDUZ,XMTEXT,XMSUB,XMY,XMZ,XMDUN,R
+18 SET X=$$SITE^VASITE()
+19 SET DGSNAME=$PIECE(X,"^",2)
SET DGSITE=$PIECE(X,"^",3)
+20 SET R(1)="Post-Init routine ^DG967PST run at station: "_DGSITE_" - "_DGSNAME
+21 SET R(2)=" "
+22 SET R(3)="Seeding of patients marked as Sensitive:"
+23 SET R(4)="Process Started: "_START_" - Completed: "_DONE
+24 SET R(5)=" "
+25 SET R(6)="Total number of patients processed: "_DFNCNT_" "
+26 SET R(7)="Total number of A31 messages triggered to MPI: "_A31CNT
+27 SET XMTEXT="R("
SET XMSUB="Result of running patch DG*5.3*967 (Sensitivity) at station: "_DGSITE
+28 SET XMDUZ=DUZ
+29 SET XMY("Christine.Chesney@domain.ext")=""
+30 SET XMY("John.Williams30ec0c@domain.ext")=""
+31 SET XMY("Christine.Link@domain.ext")=""
+32 DO ^XMD
+33 ;
ZIP4LOOP ; start cleanup of ZIP+4 records
+1 NEW DFNCNT,DFN,NODE,ZIP4,EDZIP,EDCNT,START,DONE
+2 SET START=$$FMTE^XLFDT($$NOW^XLFDT)
+3 SET (DFNCNT,DFN,EDCNT)=0
+4 FOR
SET DFN=$ORDER(^DPT(DFN))
if 'DFN
QUIT
SET DFNCNT=DFNCNT+1
Begin DoDot:1
+5 IF $DATA(^DPT(DFN,-9))
QUIT
+6 SET NODE=$GET(^DPT(DFN,.11))
SET ZIP4=$PIECE(NODE,"^",12)
IF ZIP4["-"
SET EDCNT=EDCNT+1
Begin DoDot:2
+7 SET EDZIP=$PIECE(ZIP4,"-")_$PIECE(ZIP4,"-",2)
SET X=EDZIP
SET DIE="^DPT("
SET DA=DFN
SET DR=".1112///^S X=EDZIP"
DO ^DIE
KILL DIE,DA,DR
End DoDot:2
End DoDot:1
+8 ;
+9 SET DONE=$$FMTE^XLFDT($$NOW^XLFDT)
+10 ;
EMAILS2 ; Send email to person who ran the INIT, letting them know results
+1 NEW XMDUZ,XMTEXT,XMSUB,XMY,XMZ,XMDUN,X,R
+2 SET R(1)="Cleanup of Patient file records having ZIP+4 field (#.1112) with dashes:"
+3 SET R(2)=" "
+4 SET R(3)="Process started: "_START
+5 SET R(4)="Process completed: "_DONE
+6 SET R(5)="Total number of patients processed : "_DFNCNT
+7 SET R(6)="Total number of ZIP+4 records edited: "_EDCNT
+8 SET R(7)=" "
SET R(8)="You can now delete the post-init routine ^DG967PST."
+9 SET XMTEXT="R("
SET XMSUB="Result of running patch DG*5.3*967 (ZIP+4 cleanup)"
+10 SET XMDUZ=.5
+11 SET XMY(DUZ)=""
+12 DO ^XMD
+13 ;
+14 ; Send message to MPI developers on Outlook
+15 ; IA#4440 supported call to check for test or production account
+16 ;not a production account. Don't send email to MPI dev
if $$PROD^XUPROD()=0
QUIT
+17 ;
+18 NEW DGSNAME,DGSITE,XMDUZ,XMTEXT,XMSUB,XMY,XMZ,XMDUN,R
+19 SET X=$$SITE^VASITE()
+20 SET DGSNAME=$PIECE(X,"^",2)
SET DGSITE=$PIECE(X,"^",3)
+21 SET R(1)="Post-Init routine ^DG967PST run at station: "_DGSITE_" - "_DGSNAME
+22 SET R(2)=" "
+23 SET R(3)="Cleanup of Patient file records having ZIP+4 field (#.1112) with dashes:"
+24 SET R(4)="Process Started: "_START_" - Completed: "_DONE
+25 SET R(5)=" "
+26 SET R(6)="Total number of patients processed: "_DFNCNT_" "
+27 SET R(7)="Total number of ZIP+4 records edited: "_EDCNT
+28 SET XMTEXT="R("
SET XMSUB="Result of running patch DG*5.3*967 (ZIP+4) at station: "_DGSITE
+29 SET XMDUZ=DUZ
+30 SET XMY("Christine.Chesney@domain.ext")=""
+31 SET XMY("John.Williams30ec0c@domain.ext")=""
+32 SET XMY("Christine.Link@domain.ext")=""
+33 DO ^XMD
+34 QUIT