1 | DG53P543 ;BAY/JT - cleanup of file 20 ; 9/16/03 4:56pm
|
---|
2 | ;;5.3;Registration;**543**;Aug 13, 1993
|
---|
3 | ; patient name .01 only
|
---|
4 | ;
|
---|
5 | ENV ; do environment check
|
---|
6 | S XPDABORT=""
|
---|
7 | D PROGCHK(.XPDABORT)
|
---|
8 | I XPDABORT="" K XPDABORT
|
---|
9 | Q
|
---|
10 | PROGCHK(XPDABORT) ; checks for necessary programmer variables
|
---|
11 | I '$G(DUZ)!($G(DUZ(0))'="@")!('$G(DT))!($G(U)'="^") D
|
---|
12 | .D MES^XPDUTL("Your programming variables are not set up properly.")
|
---|
13 | .D MES^XPDUTL("Installation aborted.")
|
---|
14 | .S XPDABORT=2
|
---|
15 | Q
|
---|
16 | ;
|
---|
17 | CLEANUP N DGIEN,DGFULLNM,DGLINK,DGFND,DGDPT,DGNAME,DGZERO,DGONE,DGERR,CNT,DGMID,DGTOT,DGUPDT,DGNOLINK,DGLINK0,DGLINK1,DGCONC,DGOTHERS,DGGLOBAL,X1,X2
|
---|
18 | K ^XTMP("DG53P543")
|
---|
19 | S X1=DT,X2=90 D C^%DTC
|
---|
20 | S ^XTMP("DG53P543",0)=X_"^"_DT_"^Problems w/file 2 links w/file 20"
|
---|
21 | S (DGIEN,DGTOT,DGERR,DGUPDT,DGNOLINK,DGLINK0,DGLINK1,DGOTHERS)=0
|
---|
22 | D BMES^XPDUTL("Beginning clean-up...Reading thru entire Patient File...")
|
---|
23 | F S DGIEN=$O(^DPT(DGIEN)) Q:'DGIEN D
|
---|
24 | .S DGTOT=DGTOT+1
|
---|
25 | .Q:$P($G(^DPT(DGIEN,0)),U)["MERGING INTO"
|
---|
26 | .Q:$D(^DPT(DGIEN,-9))
|
---|
27 | .S DGFULLNM=$P($G(^DPT(DGIEN,0)),U)
|
---|
28 | .S DGLINK=+$P($G(^DPT(DGIEN,"NAME")),U)
|
---|
29 | .I 'DGLINK D NOLINK Q
|
---|
30 | .S DGZERO=$G(^VA(20,DGLINK,0))
|
---|
31 | .I DGZERO="" D NOZERO Q
|
---|
32 | .I $P(DGZERO,U)'=2!($P(DGZERO,U,2)'=".01")!(+$P(DGZERO,U,3)'=DGIEN) D BADZERO Q
|
---|
33 | .S DGONE=$G(^VA(20,DGLINK,1))
|
---|
34 | .I DGONE="" D NOONE Q
|
---|
35 | .;
|
---|
36 | .S DGERR=0
|
---|
37 | .; skip if "error" in family name
|
---|
38 | .I $P(DGFULLNM,",",1)["ERROR" Q
|
---|
39 | .; compare family name
|
---|
40 | .I $P(DGFULLNM,",",1)'=$P(DGONE,U) S DGERR=1 S ^XTMP("DG53P543",DGIEN,DGLINK,DGERR)=$P(DGFULLNM,",",1)_U_$P(DGONE,U) S DGUPDT=DGUPDT+1 Q
|
---|
41 | .; skip if no first name
|
---|
42 | .I $P(DGFULLNM,",",2)="",$P(DGONE,U,2)="" Q
|
---|
43 | .; if comma in first name, skip if everything equal
|
---|
44 | .I $P(DGONE,U,2)["," S DGCONC=$P(DGONE,U)_","_$P(DGONE,U,2) I DGCONC=DGFULLNM Q
|
---|
45 | .; compare first name
|
---|
46 | .S CNT=$L($P(DGONE,U,2))
|
---|
47 | .I $E($P(DGFULLNM,",",2),1,CNT)'=$P(DGONE,U,2) S DGERR=2 S ^XTMP("DG53P543",DGIEN,DGLINK,DGERR)=DGFULLNM_"///"_$P(DGONE,U,1,5) S DGOTHERS=DGOTHERS+1 Q
|
---|
48 | .;compare middle names and suffixes
|
---|
49 | .S DGMID=$P($P(DGFULLNM,",",2)," ",2)
|
---|
50 | .I DGMID=$P(DGONE,U,3)!(DGMID=$P(DGONE,U,5)) Q
|
---|
51 | .S DGMID=$P($P(DGFULLNM,",",2)," ",2,99)
|
---|
52 | .I $P(DGONE,U,3)'="",DGMID[$P(DGONE,U,3) Q
|
---|
53 | .I $P(DGONE,U,5)'="",DGMID[$P(DGONE,U,5) Q
|
---|
54 | .S DGERR=3
|
---|
55 | .S ^XTMP("DG53P543",DGIEN,DGLINK,DGERR)=DGFULLNM_"///"_$P(DGONE,U,1,5) S DGOTHERS=DGOTHERS+1
|
---|
56 | .Q
|
---|
57 | ;
|
---|
58 | D MES^XPDUTL("Total # of Patient File records read: "_DGTOT)
|
---|
59 | D MES^XPDUTL("Total # of Name Component file #20 records needing cleanup: "_DGUPDT)
|
---|
60 | I DGUPDT D
|
---|
61 | .D MES^XPDUTL("I will now update these records ...")
|
---|
62 | .D UPDATE
|
---|
63 | .D MES^XPDUTL("Done !")
|
---|
64 | I DGOTHERS!(DGNOLINK)!(DGLINK0)!(DGLINK1) D
|
---|
65 | .D MES^XPDUTL("I also found other records that need attention:")
|
---|
66 | .I DGOTHERS D MES^XPDUTL(" # of records needing reformatting: "_DGOTHERS)
|
---|
67 | .I DGNOLINK D MES^XPDUTL(" # of records with no link: "_DGNOLINK)
|
---|
68 | .I DGLINK0 D MES^XPDUTL(" # of records with no or bad zero node: "_DGLINK0)
|
---|
69 | .I DGLINK1 D MES^XPDUTL(" # of records with no '1' node: "_DGLINK1)
|
---|
70 | .S DGGLOBAL="^XTMP(""DG53P543"""
|
---|
71 | .D MES^XPDUTL(" For more details, please see the "_DGGLOBAL_" global")
|
---|
72 | .D MES^XPDUTL(" or print the report PRTRPT^DG53P543")
|
---|
73 | D BMES^XPDUTL("Clean-up is complete")
|
---|
74 | Q
|
---|
75 | NOLINK ;
|
---|
76 | S DGNOLINK=DGNOLINK+1
|
---|
77 | I DGFULLNM="" S ^XTMP("DG53P543",DGIEN,0)="no name on patient file" Q
|
---|
78 | I '$D(^VA(20,"C",DGFULLNM)) S ^XTMP("DG53P543",DGIEN,0)="no link to file 20" Q
|
---|
79 | S DGFND=0
|
---|
80 | F S DGFND=$O(^VA(20,"C",DGFULLNM,DGFND)) Q:'DGFND D
|
---|
81 | .S DGDPT=+$P($G(^VA(20,DGFND,0)),U,3)
|
---|
82 | .I DGDPT S DGNAME=$P($G(^DPT(DGDPT,0)),U) I DGNAME'="",DGNAME=DGFULLNM S ^XTMP("DG53P543",DGIEN,0)=DGFND_" points to Patient file "_DGDPT
|
---|
83 | Q
|
---|
84 | NOZERO ;
|
---|
85 | S DGLINK0=DGLINK0+1
|
---|
86 | S ^XTMP("DG53P543",DGIEN,DGLINK)="no zero node on file 20"
|
---|
87 | Q
|
---|
88 | BADZERO ;
|
---|
89 | S DGLINK0=DGLINK0+1
|
---|
90 | S ^XTMP("DG53P543",DGIEN,DGLINK)="bad zero node on file 20"
|
---|
91 | Q
|
---|
92 | NOONE ;
|
---|
93 | S DGLINK1=DGLINK1+1
|
---|
94 | S ^XTMP("DG53P543",DGIEN,DGLINK)="no '1' node on file 20"
|
---|
95 | Q
|
---|
96 | UPDATE ;
|
---|
97 | Q:'$D(^XTMP("DG53P543"))
|
---|
98 | N DG20NAME,DA,DR,DIE,X
|
---|
99 | S DGIEN=0
|
---|
100 | F S DGIEN=$O(^XTMP("DG53P543",DGIEN)) Q:'DGIEN D
|
---|
101 | .S DGLINK=0
|
---|
102 | .F S DGLINK=$O(^XTMP("DG53P543",DGIEN,DGLINK)) Q:'DGLINK D
|
---|
103 | ..S DGERR=0
|
---|
104 | ..F S DGERR=$O(^XTMP("DG53P543",DGIEN,DGLINK,DGERR)) Q:'DGERR D
|
---|
105 | ...I DGERR'=1 Q
|
---|
106 | ...S DG20NAME=$P($G(^DPT(DGIEN,0)),U) I DG20NAME'="" D
|
---|
107 | ....S DIE="^DPT(",DA=DGIEN,DR=".01///^S X=DG20NAME" D ^DIE
|
---|
108 | ....D MES^XPDUTL("Record # "_DGIEN_" for "_$P(^DPT(DGIEN,0),U)_" has been updated")
|
---|
109 | ....K ^XTMP("DG53P543",DGIEN,DGLINK,DGERR)
|
---|
110 | ....K DG20NAME
|
---|
111 | Q
|
---|
112 | ;
|
---|
113 | PRTRPT ;
|
---|
114 | I $$DEVICE() D PRINT
|
---|
115 | Q
|
---|
116 | DEVICE() ; choose device and whether to queue.
|
---|
117 | N OK,IOP,POP,%ZIS,DGX
|
---|
118 | S OK=1
|
---|
119 | S %ZIS="MQ"
|
---|
120 | D ^%ZIS
|
---|
121 | S:POP OK=0
|
---|
122 | I OK,$D(IO("Q")) D
|
---|
123 | .N ZTRTN,ZTDESC,ZTSKM,ZTREQ,ZTSTOP
|
---|
124 | .S ZTRTN="PRINT^DG53P543"
|
---|
125 | .S ZTDESC="Print of XTMP global for DG53P543."
|
---|
126 | .F DGX=1:1:20 D ^%ZTLOAD Q:$G(ZTSK)
|
---|
127 | .W !,$S($D(ZTSK):"Request "_ZTSK_" queued!",1:"Request Cancelled!"),!
|
---|
128 | .D HOME^%ZIS
|
---|
129 | .S OK=0
|
---|
130 | Q OK
|
---|
131 | ;
|
---|
132 | PRINT ;
|
---|
133 | U IO
|
---|
134 | N DGIEN,DGLINK,DGERR,DGQUIT,DGPG,DGDDT
|
---|
135 | S (DGQUIT,DGPG)=0
|
---|
136 | S DGDDT=$$FMTE^XLFDT($$NOW^XLFDT,"D")
|
---|
137 | D HEAD
|
---|
138 | S DGIEN=0,DGIEN=$O(^XTMP("DG53P543",DGIEN))
|
---|
139 | I DGIEN="" D Q
|
---|
140 | .W !!!,?20,"*** No records to report ***"
|
---|
141 | ;
|
---|
142 | S DGIEN=0
|
---|
143 | F S DGIEN=$O(^XTMP("DG53P543",DGIEN)) Q:'DGIEN D Q:DGQUIT
|
---|
144 | .I $D(^XTMP("DG53P543",DGIEN,0)) D
|
---|
145 | ..I $Y>(IOSL-4) D HEAD
|
---|
146 | ..W "# ",DGIEN,?11,^XTMP("DG53P543",DGIEN,0),!
|
---|
147 | .S DGLINK=0
|
---|
148 | .F S DGLINK=$O(^XTMP("DG53P543",DGIEN,DGLINK)) Q:'DGLINK D
|
---|
149 | ..I $D(^XTMP("DG53P543",DGIEN,DGLINK))=1 D
|
---|
150 | ...I $Y>(IOSL-4) D HEAD
|
---|
151 | ...W "# ",DGIEN,?11,$P(^DPT(DGIEN,0),U),?40,^XTMP("DG53P543",DGIEN,DGLINK),?69,"# ",DGLINK,!
|
---|
152 | ..S DGERR=0
|
---|
153 | ..F S DGERR=$O(^XTMP("DG53P543",DGIEN,DGLINK,DGERR)) Q:'DGERR D
|
---|
154 | ...I $Y>(IOSL-4) D HEAD
|
---|
155 | ...W "# ",DGIEN,?11,^XTMP("DG53P543",DGIEN,DGLINK,DGERR),?69,"# ",DGLINK,!
|
---|
156 | ;
|
---|
157 | I DGQUIT W:$D(ZTQUEUED) !!,"Report stopped at user's request" Q
|
---|
158 | I $G(DGPG)>0,$E(IOST)="C" K DIR S DIR(0)="E" D ^DIR K DIR S:+Y=0 DGQUIT=1
|
---|
159 | I $D(ZTQUEUED) S ZTREQ="@"
|
---|
160 | Q
|
---|
161 | HEAD ;
|
---|
162 | I $D(ZTQUEUED),$$S^%ZTLOAD S (ZTSTOP,DGQUIT)=1 Q
|
---|
163 | I $G(DGPG)>0,$E(IOST)="C" K DIR S DIR(0)="E" D ^DIR K DIR S:+Y=0 DGQUIT=1
|
---|
164 | Q:DGQUIT
|
---|
165 | S DGPG=$G(DGPG)+1
|
---|
166 | W @IOF,!,DGDDT,?15,"DG*5.3*543 File #20 Cleanup Utility",?70,"Page:",$J(DGPG,5),! K X S $P(X,"-",81)="" W X,!
|
---|
167 | W !,"File 2 IEN",?11,"Patient Name///Component Last^First^Middle^Prefix^Suffix",?69,"File 20 IEN",!
|
---|
168 | S $P(X,"-",81)="" W X,!
|
---|
169 | Q
|
---|