1 | RA27PST ;HIRMFO/SWM - Clean up after Patch RA*5.0*27 ;12/28/01 14:06
|
---|
2 | VERSION ;;5.0;Radiology/Nuclear Medicine;**27**;Mar 16, 1998
|
---|
3 | ; *** Delete duplicate Clinical History from file #74 ***
|
---|
4 | ;
|
---|
5 | QOFF ;Post-Install queues off clean-up job
|
---|
6 | I '$D(XPDNM)#2 W !!,"** This entry point must be called from KIDS installation **",!! Q
|
---|
7 | N RATXT,ZTDESC,ZTDTH,ZTIO,ZTRTN S ZTIO=""
|
---|
8 | S ZTRTN="EN^RA27PST"
|
---|
9 | S ZTDESC="RA*5.0*27 Cleanup Duplicate Clin. Hist. from File 74"
|
---|
10 | S ZTDTH=$$FMADD^XLFDT($$NOW^XLFDT(),0,0,2,0) ;add 2 minutes to 'now'
|
---|
11 | D ^%ZTLOAD S RATXT(1)=" "
|
---|
12 | S RATXT(2)="RA*5.0*27 cleanup is running in background."
|
---|
13 | S:$G(ZTSK)>0 RATXT(3)="Task: "_ZTSK_"." D MES^XPDUTL(.RATXT)
|
---|
14 | Q
|
---|
15 | MANUAL ;manually queue off clean-up job, only needed if post-install abends
|
---|
16 | ;^XTMP("RA-RA27PST",0)=60days later^date+time this was 1st run^description^subsequent date+time this was run (overwritten each subsequent time)
|
---|
17 | I +$G(DUZ)=0 W !!?5,"** DUZ is required! Nothing done. **",!! Q
|
---|
18 | N RA1 S RA1=""
|
---|
19 | I $D(^XTMP("RA-RA27PST",0))#2 S RA1=^(0)
|
---|
20 | I RA1="" W !,"This clean-up was either never queued off by the Installation of RA*5.0*27,",!,"or it had been completed over 60 days ago.",!! G ASKQ
|
---|
21 | I $P(RA1,"^",4)]"" S Y=$P(RA1,"^",4) D DD^%DT W !!?2,"MANUAL^RA27PST was done previously on ",Y,!!
|
---|
22 | I $P(RA1,"^",4)="" S Y=$P(RA1,"^",2) D DD^%DT W !!?2,"The installation of RA*5*27 tasked this job on ",Y,!?2,"but the job abended.",!!
|
---|
23 | I $G(^XTMP("RA-RA27PST","LAST"))="DONE" W !,"This clean-up was completed. You do not have to queue it again.",!! Q
|
---|
24 | ASKQ K DIR,DIROUT,DIRUT,DTOUT,DUOUT
|
---|
25 | S DIR(0)="Y",DIR("B")="No"
|
---|
26 | S DIR("?")="Enter 'Y' if you want to queue the clean-up of duplicate Clin. History for File #74."
|
---|
27 | S DIR("A")="Do you want to continue the clean-up from patch RA*5.0*27"
|
---|
28 | D ^DIR
|
---|
29 | K DIR,DIROUT,DIRUT,DTOUT,DUOUT
|
---|
30 | Q:'Y ;don't queue if answer is NO
|
---|
31 | N ZTDESC,ZTDTH,ZTIO,ZTRTN S ZTIO=""
|
---|
32 | S ZTRTN="EN^RA27PST"
|
---|
33 | S ZTDESC="MANUAL Cleanup Duplicate Clin. Hist. from File 74, (RA*5*27 post-install)"
|
---|
34 | S ZTDTH=$$FMADD^XLFDT($$NOW^XLFDT(),0,0,2,0) ;add 2 minutes to 'now'
|
---|
35 | D ^%ZTLOAD
|
---|
36 | W !?2,"RA*5.0*27 cleanup will start in 2 minutes in the background."
|
---|
37 | I $G(ZTSK)>0 W !?2,"Task: "_ZTSK_".",!!
|
---|
38 | Q
|
---|
39 | ;
|
---|
40 | EN ; delete duplicate clinical history from file 74
|
---|
41 | S ZTREQ="@" ; delete from the task global
|
---|
42 | N %,RA70,RA701,RA74,RACNT,RAD0,RADFN,RADTI,RADELCNT,RADUPCNT
|
---|
43 | N RACNI,RACN,RACNT,RADUPHX,RANODE,RAOK,RAPOINT,RAX,RAX1
|
---|
44 | N RA1,RA2,RA3
|
---|
45 | S RA1="To IRM staff:"
|
---|
46 | S RA2=" If this routine abends, you may get the current count"
|
---|
47 | S RA3=" of records processed by listing ^XTMP(""RA-RA27PST"" "
|
---|
48 | S ^XTMP("RA-RA27PST",.1)=" Here are the counts from the post-install cleanup."
|
---|
49 | S ^XTMP("RA-RA27PST",.2)=" "
|
---|
50 | D INIT
|
---|
51 | I RAPOINT="DONE" S ^XTMP("RA-RA27PST",.1)="Already done previously. No need to continue.",^(.3)="----- Previous results are repeated below: ----- ",^(.4)="" D MAIL Q
|
---|
52 | S RAD0=+RAPOINT
|
---|
53 | F S RAD0=$O(^RARPT(RAD0)) Q:'RAD0 D CHKHX D:RADUPHX DELHX S ^XTMP("RA-RA27PST","LAST")=RAD0,RACNT=RACNT+1,$P(^XTMP("RA-RA27PST",.5),"^")=RACNT
|
---|
54 | ; increment "LAST" and RACNT after chkhx and delhx
|
---|
55 | D FINISH
|
---|
56 | D MAIL
|
---|
57 | Q
|
---|
58 | CHKHX ; Check History between file 70 and 74.
|
---|
59 | ; Returns RADUPHX 1 = Duplicate
|
---|
60 | ; 0 = Different
|
---|
61 | S RADUPHX=0
|
---|
62 | I '$O(^RARPT(RAD0,"H",0)) Q ;default to 0 to skip DELHX since no data
|
---|
63 | S RANODE=$G(^RARPT(RAD0,0)) Q:RANODE=""
|
---|
64 | S RADFN=$P(RANODE,"^",2),RADTI=9999999.9999-$P(RANODE,"^",3)
|
---|
65 | S RACN=$P(RANODE,"^",4)
|
---|
66 | Q:'RADFN!('RADTI)!('RACN)
|
---|
67 | S RACNI=$O(^RADPT(RADFN,"DT",RADTI,"P","B",RACN,0))
|
---|
68 | Q:'RACNI
|
---|
69 | S RA74=$O(^RARPT(RAD0,"H",""),-1)
|
---|
70 | S RA70=$O(^RADPT(RADFN,"DT",RADTI,"P",RACNI,"H",""),-1),RA701=$O(^(0))
|
---|
71 | Q:RA70=0 Q:RA701="" ;no history in exam record
|
---|
72 | S RAX=RA74-RA70+1 Q:RAX'=1 ;different total lines
|
---|
73 | ; same total lines, so check line by line
|
---|
74 | ; RAOK=1 all lines match, =0 at least 1 difference
|
---|
75 | S RAOK=1
|
---|
76 | F RAX1=RA701:1:RA70 I ^RARPT(RAD0,"H",RAX1,0)'=^RADPT(RADFN,"DT",RADTI,"P",RACNI,"H",RAX1,0) S RAOK=0 Q
|
---|
77 | I 'RAOK Q
|
---|
78 | S RADUPCNT=RADUPCNT+1
|
---|
79 | S $P(^XTMP("RA-RA27PST",.6),"^")=RADUPCNT
|
---|
80 | I $P(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0),"^",17)'=RAD0 D MSG1 Q ;exam not pointing to this report, so skip this report
|
---|
81 | S RADUPHX=1
|
---|
82 | Q
|
---|
83 | DELHX ; delete history portion from this report
|
---|
84 | L +^RARPT(RAD0):0 I '$T D MSG2 Q
|
---|
85 | K ^RARPT(RAD0,"H")
|
---|
86 | L -^RARPT(RAD0)
|
---|
87 | S RADELCNT=RADELCNT+1
|
---|
88 | S $P(^XTMP("RA-RA27PST",.7),"^")=RADELCNT
|
---|
89 | Q
|
---|
90 | MSG1 ;
|
---|
91 | S ^XTMP("RA-RA27PST",RAD0)=$P(RANODE,"^")_" ien="_RAD0_" but",^XTMP("RA-RA27PST",(RAD0+.1))=" ^RADPT("_RADFN_",""DT"","_RADTI_",""P"","_RACNI_",0)'s 17th piece="_$P(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0),"^",17)
|
---|
92 | Q
|
---|
93 | MSG2 ;
|
---|
94 | S ^XTMP("RA-RA27PST",RAD0)=$P(RANODE,"^")_" locked by another process."
|
---|
95 | Q
|
---|
96 | INIT ; set point of latest ien processed
|
---|
97 | N %,%H,%I,%T,X,Y,RANOW
|
---|
98 | D NOW^%DTC S RANOW=% ;output NOW's dt+tm is in var %
|
---|
99 | I $D(^XTMP("RA-RA27PST",0))#2 S $P(^(0),"^",4)=RANOW,RAPOINT=^("LAST"),RACNT=+^(.5),RADUPCNT=+^(.6),RADELCNT=+^(.7) Q
|
---|
100 | S (RACNT,RADELCNT,RADUPCNT,RAPOINT)=0
|
---|
101 | S X1=RANOW,X2=60 D C^%DTC ;add 60 days to RANOW, output is X
|
---|
102 | S ^XTMP("RA-RA27PST",0)=X_"^"_RANOW_"^"_"RA*5*27 POST-INSTALL"
|
---|
103 | S ^XTMP("RA-RA27PST","LAST")=0
|
---|
104 | S ^XTMP("RA-RA27PST",.5)="^ reports processed"
|
---|
105 | S ^XTMP("RA-RA27PST",.6)="^ reports with dupl history"
|
---|
106 | S ^XTMP("RA-RA27PST",.7)="^ reports had dupl history purged"
|
---|
107 | Q
|
---|
108 | FINISH ; all done
|
---|
109 | S ^XTMP("RA-RA27PST","LAST")="DONE"
|
---|
110 | S ^XTMP("RA-RA27PST",.8)=" "
|
---|
111 | S ^XTMP("RA-RA27PST",.81)=" The cleanup finished."
|
---|
112 | S ^XTMP("RA-RA27PST",.82)=" "
|
---|
113 | I $O(^XTMP("RA-RA27PST",.99)) S ^XTMP("RA-RA27PST",.83)="The following reports' history was not purged:",^(.84)=" "
|
---|
114 | Q
|
---|
115 | MAIL ; Send mail message to the installer
|
---|
116 | N XMDUZ,XMSUB,XMTEXT,XMY S XMDUZ=.5
|
---|
117 | S XMTEXT="^XTMP(""RA-RA27PST""," ;only numeric nodes are mailed
|
---|
118 | S XMSUB="Results from patch RA*5*27's post-install rtn RA27PST"
|
---|
119 | S XMY(DUZ)="" D ^XMD
|
---|
120 | Q
|
---|