1 | YSGAFUTL ;DALCIOFO/MJD-GAF CLEANUP UTILITY ROUTINE ;02/17/99
|
---|
2 | ;;5.01;MENTAL HEALTH;**49**;Dec 30, 1994
|
---|
3 | ;
|
---|
4 | ;This routine will perform the following:
|
---|
5 | ;
|
---|
6 | ;1) Identify the DIAGNOSTIC RESULTS - MENTAL HEALTH file (#627.8)
|
---|
7 | ;records that contain no AXIS 5 (#65) data or DIAGNOSIS BY (#.04)
|
---|
8 | ;data after the installation of patch YS*5.01*43. Only records with
|
---|
9 | ;a DATE/TIME OF DIAGNOSIS field (#.04) containing a fiscal year 1998
|
---|
10 | ;or fiscal year 1999 date will be reviewed.
|
---|
11 | ;2) Delete these records if they contain no other related data.
|
---|
12 | ;3) Create a MAILMAN message that summarizes the status of the records.
|
---|
13 | ;4) Verify that the PATIENT TYPE (#66) is correct by
|
---|
14 | ;calling IN5^VADPT. If the patient type is incorrect, the routine
|
---|
15 | ;updates the field with the correct type (In-patient or Out-patient).
|
---|
16 | ;
|
---|
17 | ;NOTE: PLEASE EXECUTE THIS ROUTINE BY CALLING LINE TAG "START^YSGAFUTL"
|
---|
18 | ;
|
---|
19 | Q
|
---|
20 | START ;Set up task
|
---|
21 | ;
|
---|
22 | I '$D(DUZ) D Q
|
---|
23 | .W !!,$C(7),"ERROR: DUZ is not defined. Use ^XUP or ask your "
|
---|
24 | .W !,"IRM why you don't have a DUZ variable defined.",!!
|
---|
25 | .D CLNUP
|
---|
26 | S YSGFDATE="",YSSTD=2971001,YSSPD=2990930
|
---|
27 | S ZTRTN="EN^YSGAFUTL"
|
---|
28 | ;
|
---|
29 | ;VARIABLES TO BE SAVED IN ZTSAVE
|
---|
30 | S ZTSAVE("*")=""
|
---|
31 | S ZTDESC="MENTAL HEALTH - YS GAF UTILITY"
|
---|
32 | S ZTIO=""
|
---|
33 | D ^%ZTLOAD
|
---|
34 | I '$D(ZTSK) QUIT ;-->
|
---|
35 | W !!,"The Mental Health GAF Utility has been Tasked, job# ",ZTSK,"...",!
|
---|
36 | Q
|
---|
37 | ;
|
---|
38 | EN ; Main subroutine
|
---|
39 | I $D(ZTQUEUED) S ZTREQ="@" K ZTSK
|
---|
40 | K ^TMP("YSGAFUTL",$J),^TMP("YSGMM",$J)
|
---|
41 | ; Date range will be from 10-01-97 to TODAY
|
---|
42 | S:$G(U)="" U="^"
|
---|
43 | S YSAOF=""
|
---|
44 | S (YSIEN,YSPIEN,YSPATID,YSAPATID,YSADT,YSPTC,YSDDC,YSPTO,YSERC)=0
|
---|
45 | S (YSTOT,YSGDC,YSNMC,YSDEL)=0
|
---|
46 | F YSI="FY98","FY99" D
|
---|
47 | .F YSJ="I","O" S YSTOT(YSI,YSJ)=0
|
---|
48 | F S YSIEN=$O(^YSD(627.8,YSIEN)) Q:YSIEN=""!('YSIEN) D
|
---|
49 | .S YSO=$G(^YSD(627.8,YSIEN,0)),YSYEAR="FY99"
|
---|
50 | .S YSPATID=$P(YSO,U,2) ; Patient ID
|
---|
51 | .S YSGAFDT=$P(YSO,U,3) ; Date/time of diagnosis
|
---|
52 | .S MDFLG=0
|
---|
53 | .I YSGAFDT="" D Q ; Count the number of records missing
|
---|
54 | ..S MDFLG=1 ; the date/time of diagnosis and delete
|
---|
55 | ..D DELCHK ; if no other data is found.
|
---|
56 | ..S YSDDC=YSDDC+1 ; Count both deleted/non-deleted in YSDDC
|
---|
57 | .S YSGFDATE=$P($P(YSO,U,3),".",1)
|
---|
58 | .I (YSGFDATE>(YSSTD-1))&(YSGFDATE<(YSSPD+1)) D
|
---|
59 | ..S YSTOT=YSTOT+1 ; Count total records found in this date range
|
---|
60 | ..S:YSGFDATE<2981001 YSYEAR="FY98"
|
---|
61 | ..S YSTOT(YSYEAR)=$G(YSTOT(YSYEAR))+1
|
---|
62 | ..S YSP=$G(^YSD(627.8,YSIEN,60)),YSPATYPE=$P(YSP,U,4)
|
---|
63 | ..; Re-evaulate patient type indicator (In/Out patient)
|
---|
64 | ..S DFN=YSPATID
|
---|
65 | ..S VAIP("D")=YSGAFDT
|
---|
66 | ..D IN5^VADPT
|
---|
67 | ..S YSSTAT=$S(VAIP(1):"I",1:"O")
|
---|
68 | ..; If patient types don't match, update the record
|
---|
69 | ..I YSPATYPE'=YSSTAT D
|
---|
70 | ...S YSPATYPE=YSSTAT
|
---|
71 | ...S YSPTC=YSPTC+1
|
---|
72 | ...S DIE="^YSD(627.8,",DA=YSIEN
|
---|
73 | ...S DR="66////"_YSSTAT
|
---|
74 | ...L +^YSD(627.8,DA):0
|
---|
75 | ...D ^DIE
|
---|
76 | ...L -^YSD(627.8,DA)
|
---|
77 | ..S YSTOT(YSYEAR,YSPATYPE)=$G(YSTOT(YSYEAR,YSPATYPE))+1
|
---|
78 | ..; Check for missing data (GAF or Provider)
|
---|
79 | ..S YSAX5=$P(YSP,U,3),YSPROV=$P(YSO,U,4)
|
---|
80 | ..I YSAX5=""!(YSPROV="") D
|
---|
81 | ...; Verify that record is not entered in error
|
---|
82 | ...S YSEFLG=0
|
---|
83 | ...I $D(^YSD(627.8,YSIEN,80)) D
|
---|
84 | ....S YSERN=0
|
---|
85 | ....F S YSERN=$O(^YSD(627.8,YSIEN,80,YSERN)) Q:YSERN'>0!(YSEFLG) D
|
---|
86 | .....I $G(^YSD(627.8,YSIEN,80,YSERN,0))["Error" S YSEFLG=1 Q
|
---|
87 | ...I YSEFLG S YSERC=YSERC+1 Q
|
---|
88 | ...; If outpatient, update totals and quit
|
---|
89 | ...I YSPATYPE="O" D Q
|
---|
90 | ....D DELCHK Q:FLGDEL
|
---|
91 | ....S YSPTO=YSPTO+1
|
---|
92 | ...D DELCHK Q:FLGDEL
|
---|
93 | ...S YSNMC=YSNMC+1 ; Inpatient
|
---|
94 | ..E S YSGDC=YSGDC+1 ; Currently contains both GAF and Provider
|
---|
95 | D DELREC,TOTREP
|
---|
96 | D MAILIT,CLNUP
|
---|
97 | Q
|
---|
98 | DELREC ; Delete records
|
---|
99 | Q:'$D(^TMP("YSGAFUTL",$J))
|
---|
100 | S DIK="^YSD(627.8,",DA=""
|
---|
101 | F S DA=$O(^TMP("YSGAFUTL",$J,DA)) Q:DA="" D ^DIK
|
---|
102 | Q
|
---|
103 | TOTREP ;Write totals to ^TMP
|
---|
104 | S YSLN=0
|
---|
105 | S YSSUBT=YSGDC+YSERC+YSPTO+YSNMC+YSDEL
|
---|
106 | S XTMP="GAF CLEANUP UTILITY TOTALS" D YSLN,SPC
|
---|
107 | S XTMP="Total GAF Records:" D YSLN,SPC
|
---|
108 | F YSI="FY98","FY99" D
|
---|
109 | .F YSJ="I","O" D
|
---|
110 | ..S XTMP=$J(+$G(YSTOT(YSI,YSJ)),8)_" "
|
---|
111 | ..S XTMP=XTMP_$S(YSJ="I":"In",1:"Out")_"-patient" D YSLN
|
---|
112 | .D DSH
|
---|
113 | .S XTMP=$J(+$G(YSTOT(YSI)),8)_" Total "_YSI_" GAF Records" D YSLN,DSH
|
---|
114 | S XTMP=$J(YSTOT,8)_" Total GAF Records for Fiscal Years 98 and 99"
|
---|
115 | D YSLN
|
---|
116 | F YSI=1:1:2 D DSH
|
---|
117 | D SPC
|
---|
118 | S XTMP="GAF Record Summary:" D YSLN,SPC
|
---|
119 | S XTMP=$J(YSGDC,8)_" Record(s) currently contain Provider "
|
---|
120 | S XTMP=XTMP_"and GAF data" D YSLN
|
---|
121 | S XTMP=$J(YSERC,8)_" Record(s) entered in error" D YSLN
|
---|
122 | S XTMP=$J(YSPTO,8)_" Outpatient record(s) missing data" D YSLN
|
---|
123 | S XTMP=$J(YSNMC,8)_" Inpatient record(s) missing data" D YSLN
|
---|
124 | S XTMP=$J(YSDEL,8)_" Record(s) deleted due to incomplete data"
|
---|
125 | D YSLN,DSH
|
---|
126 | S XTMP=$J(YSSUBT,8)_" Total GAF Records"
|
---|
127 | D YSLN,DSH,DSH,SPC
|
---|
128 | S XTMP=$J((YSTOT-YSSUBT),8)_" Difference" D YSLN,SPC
|
---|
129 | I YSPTC D
|
---|
130 | .S XTMP="The PATIENT TYPE field (#66) was updated for "_YSPTC
|
---|
131 | .S XTMP=XTMP_" GAF record(s)." D YSLN
|
---|
132 | I YSDDC D
|
---|
133 | .S XTMP="DATE/TIME OF DIAGNOSIS field (#.04) was missing for "_YSDDC
|
---|
134 | .S XTMP=XTMP_" GAF record(s)." D YSLN
|
---|
135 | Q
|
---|
136 | SPC ;
|
---|
137 | S XTMP=" " D YSLN
|
---|
138 | Q
|
---|
139 | DSH ;
|
---|
140 | S XTMP="--------" D YSLN
|
---|
141 | Q
|
---|
142 | MAILIT ; Mail totals
|
---|
143 | S DTIME=600
|
---|
144 | S XMSUB="GAF Cleanup Utility"
|
---|
145 | S XMTEXT="^TMP(""YSGMM"",$J,"
|
---|
146 | S XMY(DUZ)=""
|
---|
147 | S XMY("YOUNG,TIM@ISC-DALLAS.VA.GOV")=""
|
---|
148 | S XMY("DEVLIN,MARK@ISC-DALLAS.VA.GOV")=""
|
---|
149 | S XMDUZ="AUTOMATED MESSAGE"
|
---|
150 | D ^XMD
|
---|
151 | Q
|
---|
152 | YSLN ;Store to ^TMP for MAILMAN message
|
---|
153 | S YSLN=YSLN+1
|
---|
154 | S ^TMP("YSGMM",$J,YSLN)=XTMP
|
---|
155 | Q
|
---|
156 | DELCHK ;Check records and flag for deletion if necessary
|
---|
157 | S (FLGDEL,FLGDATA)=0
|
---|
158 | F I=1,5,80 D Q:FLGDATA
|
---|
159 | .S:$D(^YSD(627.8,YSIEN,I)) FLGDATA=1
|
---|
160 | I $D(^YSD(627.8,YSIEN,60)) D Q:FLGDATA
|
---|
161 | .I $P(^YSD(627.8,YSIEN,60),"^")'="" S FLGDATA=1 Q
|
---|
162 | .I $P(^YSD(627.8,YSIEN,60),"^",2)'="" S FLGDATA=1
|
---|
163 | ;No data was found so flag it for deletion and update counter
|
---|
164 | S ^TMP("YSGAFUTL",$J,YSIEN)="",FLGDEL=1
|
---|
165 | S:'MDFLG YSDEL=YSDEL+1
|
---|
166 | Q
|
---|
167 | CLNUP ;Clean up variables
|
---|
168 | K X,Y,YSADT,YSAOF,YSAPATID,YSGAFDT
|
---|
169 | K YSGFDATE,YSIEN,YSO,YSPATID,YSPIEN,YSO,YSSPD,YSSTD,XTMP,VAIP
|
---|
170 | K YSAX5,YSDDC,YSDEL,YSEFLG,YSERC,YSERN,YSGDC,YSLN,YSNMC,YSP,YSSUBT
|
---|
171 | K YSPATYPE,YSPROV,YSPTC,YSPTO,YSSTAT,YSTOT
|
---|
172 | K YSYEAR,YSI,YSJ,XMDUZ,XCNP,XMZ,VAERR,FLGDATA,FLGDEL,DFN
|
---|
173 | K MDFLG,^TMP("YSGAFUTL",$J),^TMP("YSGMM",$J)
|
---|
174 | Q
|
---|