| [613] | 1 | EAS155P1 ;;ALB/SCK - MT LETTERS BAD POINTERS CLEAN UP ;07/22/2004
 | 
|---|
 | 2 |  ;;1.0;ENROLLMENT APPLICATION SYSTEM;**55**;MAR 15,2001
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  ; This routine was initally run as the post-install for patch EAS*1*55
 | 
|---|
 | 5 |  ; Running this routine from programmer mode will initiate another
 | 
|---|
 | 6 |  ; reporting cycle.  You should not run this routine unless advised
 | 
|---|
 | 7 |  ; by customer support.
 | 
|---|
 | 8 |  Q
 | 
|---|
 | 9 |  ;
 | 
|---|
 | 10 | EN ; Entry point from programmer mode
 | 
|---|
 | 11 |  N MSG,XCNT,DIR,X,Y,DIRUT
 | 
|---|
 | 12 |  ;
 | 
|---|
 | 13 |  F XCNT=1:1 S LINE=$P($T(TEXT+XCNT),";;",2) Q:LINE="$$END"  S MSG(XCNT)=LINE
 | 
|---|
 | 14 |  W @IOF
 | 
|---|
 | 15 |  S XCNT=0 F  S XCNT=$O(MSG(XCNT)) Q:'XCNT  W !?3,MSG(XCNT)
 | 
|---|
 | 16 |  W !
 | 
|---|
 | 17 |  I '$$CHKPREV Q
 | 
|---|
 | 18 |  ;
 | 
|---|
 | 19 |  S DIR(0)="Y",DIR("B")="YES",DIR("A")="Continue with scan"
 | 
|---|
 | 20 |  S DIR("?")="Press ENTER to continue, enter ""NO"" to exit."
 | 
|---|
 | 21 |  D ^DIR K DIR
 | 
|---|
 | 22 |  I Y D QUE  Q
 | 
|---|
 | 23 |  W !?3,"Exiting scan..."
 | 
|---|
 | 24 |  Q
 | 
|---|
 | 25 |  ;
 | 
|---|
 | 26 | QUE ;
 | 
|---|
 | 27 |  K ZTRTN,ZTDESC,ZTSAVE
 | 
|---|
 | 28 |  S ZTRTN="BLD^EAS155P1"
 | 
|---|
 | 29 |  S ZTDESC="EAS MT LTR BAD PTR SCAN"
 | 
|---|
 | 30 |  S ZTSAVE("DUZ")=""
 | 
|---|
 | 31 |  S ZTIO=""
 | 
|---|
 | 32 |  D ^%ZTLOAD
 | 
|---|
 | 33 |  I $D(ZTSK)[0 D
 | 
|---|
 | 34 |  . W:'$G(EASQ) !!?3,"Scan canceled"
 | 
|---|
 | 35 |  E  D
 | 
|---|
 | 36 |  . I $G(EASQ) D BMES^XPDUTL("Scan Queued: "_ZTSK)
 | 
|---|
 | 37 |  . E  W !!?3,"Scan Queued: "_ZTSK
 | 
|---|
 | 38 |  Q
 | 
|---|
 | 39 |  ;
 | 
|---|
 | 40 | BLD ; Entry point scan and cleanup.  Do not call directly, call from the EN entry point.
 | 
|---|
 | 41 |  D SCAN,CLNUP,ALERT
 | 
|---|
 | 42 |  S ^XTMP("EASBADPTRS",0,"END")=$H
 | 
|---|
 | 43 |  Q
 | 
|---|
 | 44 |  ;
 | 
|---|
 | 45 | POST ; Post Install entry point.  This entry point is intended to be called from the KIDS build.
 | 
|---|
 | 46 |  N MSG,XCNT,EASQ
 | 
|---|
 | 47 |  ;
 | 
|---|
 | 48 |  F XCNT=1:1 S LINE=$P($T(TEXT+XCNT),";;",2) Q:LINE="$$END"  D
 | 
|---|
 | 49 |  . S MSG(XCNT)=LINE
 | 
|---|
 | 50 |  D MES^XPDUTL(.MSG)
 | 
|---|
 | 51 |  S EASQ=1 D QUE
 | 
|---|
 | 52 |  Q
 | 
|---|
 | 53 |  ;
 | 
|---|
 | 54 | SCAN ; Begin scanning for any bad pointers in the MT Letter Files
 | 
|---|
 | 55 |  N EAIEN
 | 
|---|
 | 56 |  ;
 | 
|---|
 | 57 |  K ^XTMP("EASBADPTRS")
 | 
|---|
 | 58 |  S ^XTMP("EASBADPTRS",0)=$$FMADD^XLFDT($$DT^XLFDT,30)_U_$$DT^XLFDT_U_"EAS MT LETTERS BAD POINTERS SCAN"
 | 
|---|
 | 59 |  S ^XTMP("EASBADPTRS",0,"START")=$H,^XTMP("EASBADPTRS",0,"DUZ")=DUZ
 | 
|---|
 | 60 |  S EAIEN=0
 | 
|---|
 | 61 |  F  S EAIEN=$O(^EAS(713.2,"AC",0,EAIEN)) Q:'EAIEN  D
 | 
|---|
 | 62 |  . I $$GET1^DIQ(713.2,EAIEN,2)']"" S ^XTMP("EASBADPTRS",EAIEN)=""
 | 
|---|
 | 63 |  S ^XTMP("EASBADPTRS",0,"SCAN COMPLETE")=$H
 | 
|---|
 | 64 |  Q
 | 
|---|
 | 65 |  ;
 | 
|---|
 | 66 | CLNUP ; Disable letters in MT Letter Status file with suspicious pointers
 | 
|---|
 | 67 |  ; Do not delete, but flag as "bad"
 | 
|---|
 | 68 |  N EAIEN,EAFDA,ERR,DIE,DA,DR
 | 
|---|
 | 69 |  ;
 | 
|---|
 | 70 |  S EAIEN=0
 | 
|---|
 | 71 |  F  S EAIEN=$O(^XTMP("EASBADPTRS",EAIEN)) Q:'EAIEN  D
 | 
|---|
 | 72 |  . S DIE="^EAS(713.2,",DA=EAIEN
 | 
|---|
 | 73 |  . S DR="4///YES;5///TODAY;6////.5;7///LETTER DISABLED, BAD POINTERS?;9///NO;12///NO;18///NO"
 | 
|---|
 | 74 |  . D ^DIE K DIE,DR,DA
 | 
|---|
 | 75 |  ;
 | 
|---|
 | 76 |  S ^XTMP("EASBADPTRS",0,"CLEANUP COMPLETE")=$H
 | 
|---|
 | 77 |  Q
 | 
|---|
 | 78 |  ;
 | 
|---|
 | 79 | ALERT ; Send an alert to user that the scan has completed.
 | 
|---|
 | 80 |  K XQA,XQAMSG,XQAOPT,XQAROU,XQAID,XQDATA,XQAFLAG
 | 
|---|
 | 81 |  ;
 | 
|---|
 | 82 |  S XQA(DUZ)="",XQAID="EAS",XQAROU="REPORT^EAS155P1"
 | 
|---|
 | 83 |  S XQAMSG="EAS MT LTRs Bad Pointers Scan Complete, Print Report"
 | 
|---|
 | 84 |  D SETUP^XQALERT
 | 
|---|
 | 85 |  Q
 | 
|---|
 | 86 |  ;
 | 
|---|
 | 87 | REPORT ; Print Bad Pointers Report setup
 | 
|---|
 | 88 |  K ZTSAVE S ZTSAVE("DUZ")=""
 | 
|---|
 | 89 |  D EN^XUTMDEVQ("P^EAS155P1","Print EAS Bad Pointers Report",.ZTSAVE)
 | 
|---|
 | 90 |  Q
 | 
|---|
 | 91 |  ;
 | 
|---|
 | 92 | P ; Print report
 | 
|---|
 | 93 |  N LINE,EAIEN,PAGE,EAX,DFN
 | 
|---|
 | 94 |  ;
 | 
|---|
 | 95 |  S (PAGE,EAIEN)=0
 | 
|---|
 | 96 |  D HDR
 | 
|---|
 | 97 |  F  S EAIEN=$O(^XTMP("EASBADPTRS",EAIEN)) Q:'EAIEN  D  Q:$G(EASABRT)
 | 
|---|
 | 98 |  . S LINE=""
 | 
|---|
 | 99 |  . S LINE=$$SETSTR^VALM1(EAIEN,"",20,15)
 | 
|---|
 | 100 |  . S EAX=$$GET1^DIQ(713.2,EAIEN,2,"I")
 | 
|---|
 | 101 |  . S LINE=$$SETSTR^VALM1(EAX,LINE,40,15)
 | 
|---|
 | 102 |  . S DFN=$$GET1^DIQ(713.1,EAX,.01,"I")
 | 
|---|
 | 103 |  . S LINE=$$SETSTR^VALM1(DFN,LINE,60,15)
 | 
|---|
 | 104 |  . W !,LINE
 | 
|---|
 | 105 |  . I $Y+5>IOSL D  Q:$G(EASABRT)
 | 
|---|
 | 106 |  . . I $E(IOST,1,2)="C-" D  Q:$G(EASABRT)
 | 
|---|
 | 107 |  . . . S DIR(0)="E" D ^DIR K DIR
 | 
|---|
 | 108 |  . . . I 'Y S EASABRT=1 Q
 | 
|---|
 | 109 |  . . D HDR
 | 
|---|
 | 110 |  Q
 | 
|---|
 | 111 |  ;
 | 
|---|
 | 112 | HDR ; PRINT REPORT HEADER
 | 
|---|
 | 113 |  N LINE,DDASH,TEXT,TEXT1
 | 
|---|
 | 114 |  ;
 | 
|---|
 | 115 |  S PAGE=PAGE+1
 | 
|---|
 | 116 |  W:$E(IOST,1,2)="C-" @IOF
 | 
|---|
 | 117 |  W "Results of Possible Bad Pointers Report for EAS MT Letters"
 | 
|---|
 | 118 |  S TEXT="Date Scan Run: "_$$HTE^XLFDT(^XTMP("EASBADPTRS",0,"END"))
 | 
|---|
 | 119 |  S TEXT1="Run by: "_$$GET1^DIQ(200,^XTMP("EASBADPTRS",0,"DUZ"),.01)
 | 
|---|
 | 120 |  S SPACE=(IOM-($L(TEXT)+$L(TEXT1)))
 | 
|---|
 | 121 |  S $P(LINE," ",SPACE-2)=""
 | 
|---|
 | 122 |  W !,TEXT,LINE,TEXT1
 | 
|---|
 | 123 |  ;
 | 
|---|
 | 124 |  S TEXT="Print Date: "_$$FMTE^XLFDT($$NOW^XLFDT)
 | 
|---|
 | 125 |  S TEXT1="Page: "_PAGE
 | 
|---|
 | 126 |  S SPACE=(IOM-($L(TEXT)+$L(TEXT1)))
 | 
|---|
 | 127 |  S $P(LINE," ",SPACE-2)=""
 | 
|---|
 | 128 |  W !,TEXT,LINE,TEXT1,!
 | 
|---|
 | 129 |  ;
 | 
|---|
 | 130 |  S $P(DDASH,"=",IOM-10)=""
 | 
|---|
 | 131 |  S LINE=$$SETSTR^VALM1("File IEN's","",5,12)
 | 
|---|
 | 132 |  S LINE=$$SETSTR^VALM1("713.2",LINE,20,5)
 | 
|---|
 | 133 |  S LINE=$$SETSTR^VALM1("713.1",LINE,40,5)
 | 
|---|
 | 134 |  S LINE=$$SETSTR^VALM1("DFN",LINE,60,5)
 | 
|---|
 | 135 |  W !,LINE
 | 
|---|
 | 136 |  W !?5,DDASH
 | 
|---|
 | 137 |  Q
 | 
|---|
 | 138 |  ;
 | 
|---|
 | 139 | CHKPREV() ; Check for a previous scan in XTMP
 | 
|---|
 | 140 |  N RSLT,EASDUZ
 | 
|---|
 | 141 |  ;
 | 
|---|
 | 142 |  S RSLT=1
 | 
|---|
 | 143 |  I $D(^XTMP("EASBADPTRS")) D
 | 
|---|
 | 144 |  . I '$D(^XTMP("EASBADPTRS",0,"END")) D
 | 
|---|
 | 145 |  . . W !?3,$CHAR(7),"The EAS MT LTRs Bad Pointer scan is currently running."
 | 
|---|
 | 146 |  . . S EASDUZ=$G(^XTMP("EASBADPTRS",0,"DUZ"))
 | 
|---|
 | 147 |  . . I EASDUZ>0 W !?3,"started by ",$$GET1^DIQ(200,EASDUZ,.01)
 | 
|---|
 | 148 |  . . I $D(^XTMP("EASBADPTRS",0,"START")) W " on ",$$HTE^XLFDT(^XTMP("EASBADPTRS",0,"START"))
 | 
|---|
 | 149 |  . . S RSLT=0
 | 
|---|
 | 150 |  . E  D
 | 
|---|
 | 151 |  . . W !?3,"Data from a previous scan exists.  "
 | 
|---|
 | 152 |  . . I $D(^XTMP("EASBADPTRS",0,"END")) W "Last Run: ",$$HTE^XLFDT(^XTMP("EASBADPTRS",0,"END"))
 | 
|---|
 | 153 |  . . W !?3,"Answering ""YES"" will cause this data to be erased and a new"
 | 
|---|
 | 154 |  . . W !?3,"scan started!",!
 | 
|---|
 | 155 |  Q $G(RSLT)
 | 
|---|
 | 156 |  ;
 | 
|---|
 | 157 | TEXT ;
 | 
|---|
 | 158 |  ;;Running this routine will scan the EAS MT PATIENT STATUS File (#713.1)
 | 
|---|
 | 159 |  ;;and the EAS MT LETTER STATUS File (#713.2) for any bad pointers
 | 
|---|
 | 160 |  ;;linking to the PATIENT File (#2).  This routine WILL NOT clean up
 | 
|---|
 | 161 |  ;;these pointers, but will flag the appropriate MT Letter entry as
 | 
|---|
 | 162 |  ;;'MT RETURNED' and enter a comment of 'Bad Pointer'.  Your local 
 | 
|---|
 | 163 |  ;;IRM may take additional cleanup actions.
 | 
|---|
 | 164 |  ;;
 | 
|---|
 | 165 |  ;;Data from this scan will be retained in the ^XTMP("EASBADPTRS") 
 | 
|---|
 | 166 |  ;;global for 30 days.  You may run REPORT^EAS155P1 at a programmer 
 | 
|---|
 | 167 |  ;;prompt to re-print a formatted report.  You will be alerted when the 
 | 
|---|
 | 168 |  ;;scan is complete. 
 | 
|---|
 | 169 |  ;;$$END
 | 
|---|
 | 170 |  Q
 | 
|---|