1 | SCRPV1 ; bp/djb - PCMM Inconsistency Rpt - Main ; 8/25/99 9:52am
|
---|
2 | ;;5.3;Scheduling;**177**;AUG 13, 1993
|
---|
3 | ;
|
---|
4 | ;This routine is part of Patch 177 (PCMM Phase II). It prompts for
|
---|
5 | ;those Team and Position Assignments to be validated according to
|
---|
6 | ;the business rules that have been established for PCMM and the
|
---|
7 | ;relationship between Associate Provider and Preceptor.
|
---|
8 | ;
|
---|
9 | ;See tag IEN to include 404.43 IEN in printout.
|
---|
10 | ;
|
---|
11 | EN ;
|
---|
12 | NEW QUIT,RESULT,SCMODE,SCPOS,SCTM,SCTYPE
|
---|
13 | TOP ;
|
---|
14 | KILL SCMODE,SCTM,SCTYPE
|
---|
15 | S QUIT=0
|
---|
16 | ;
|
---|
17 | ;Get teams to include in report.
|
---|
18 | S SCTYPE("TM")=$$ASKTM() G:SCTYPE("TM")=0 EXIT
|
---|
19 | I SCTYPE("TM")="S" D GETTM G:SCTM=0 TOP
|
---|
20 | ;
|
---|
21 | ;Get MODE: Brief/Detail
|
---|
22 | I SCTYPE("TM")'="I" S SCMODE=$$ASKMODE() G:SCMODE=0 TOP
|
---|
23 | ;
|
---|
24 | S RESULT=$$DEVICE()
|
---|
25 | ;
|
---|
26 | EXIT ; Cleanup and Exit
|
---|
27 | Q
|
---|
28 | ;
|
---|
29 | RUN ;Gather the data and print the report.
|
---|
30 | ;
|
---|
31 | KILL ^TMP("PCMM PATIENT",$J)
|
---|
32 | KILL ^TMP("PCMM POSITION",$J)
|
---|
33 | ;
|
---|
34 | I SCTYPE("TM")="I" D LIST^SCRPV1B1 Q
|
---|
35 | I '$D(ZTQUEUED),'(IOST["P-"&(IOST["MESSAGE")) W "Please wait..."
|
---|
36 | ;
|
---|
37 | D ^SCRPV1A ;............Gather data
|
---|
38 | D ^SCRPV1B ;............Print report
|
---|
39 | ;
|
---|
40 | KILL ^TMP("PCMM PATIENT",$J)
|
---|
41 | KILL ^TMP("PCMM POSITION",$J)
|
---|
42 | Q
|
---|
43 | ;
|
---|
44 | DEVICE() ; Select output device.
|
---|
45 | NEW POP,SCX,ZTDESC,ZTRTN,ZTSAVE
|
---|
46 | NEW %XX,%ZHFN,QUE
|
---|
47 | ;
|
---|
48 | W ! I SCTYPE("TM")'="I" D ;
|
---|
49 | . W !,"This report may take a long time to run."
|
---|
50 | . W !,"Queuing is recommended.",!
|
---|
51 | ;
|
---|
52 | S ZTRTN="RUN^SCRPV1"
|
---|
53 | S ZTDESC="PCMM Inconsistency Report"
|
---|
54 | S ZTSAVE("SC*")=""
|
---|
55 | S ZTSAVE("SCTYPE(")=""
|
---|
56 | S ZTSAVE("SCTM(")=""
|
---|
57 | D EN^XUTMDEVQ(ZTRTN,ZTDESC,.ZTSAVE)
|
---|
58 | Q POP
|
---|
59 | ;
|
---|
60 | ASKTM() ; Ask user to select teams.
|
---|
61 | ; A = All Teams
|
---|
62 | ; S = Select Teams
|
---|
63 | ; Return: 0,A, or S.
|
---|
64 | ;
|
---|
65 | NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
|
---|
66 | NEW COL,LINE
|
---|
67 | ;
|
---|
68 | S $P(LINE,"-",IOM)=""
|
---|
69 | S COL=(IOM/2-12)
|
---|
70 | W @IOF,!?COL,"PCMM INCONSISTENCY REPORT"
|
---|
71 | W !,LINE
|
---|
72 | W !!,"T E A M S"
|
---|
73 | S DIR(0)="SMO^A:All Teams;S:Specific Teams;I:Inconsistency Descriptions"
|
---|
74 | S DIR("A")=" Select TEAMS"
|
---|
75 | S DIR("?")="Select I for a list of inconsistency descriptions"
|
---|
76 | S DIR("?",1)="Select A for a report of All Teams"
|
---|
77 | S DIR("?",2)="Select S for a report of Specific Teams"
|
---|
78 | D ^DIR
|
---|
79 | Q $S($D(DIRUT):0,1:Y)
|
---|
80 | ;
|
---|
81 | GETTM ;Allow the user to select multiple teams.
|
---|
82 | ;Set up SCTM array in format:
|
---|
83 | ; SCTM(TeamName,TeamIEN)=""
|
---|
84 | ;
|
---|
85 | NEW CNT,ND,TMI,TMN
|
---|
86 | NEW %,%Y,%Y1,C,DDH,X,SCESEQ,SCLSEQ,SCN
|
---|
87 | ;
|
---|
88 | KILL SCTM
|
---|
89 | S SCTM=0
|
---|
90 | F W ! S TMI=$$TEAM^SCMCMU(DT) Q:TMI<0 D ;
|
---|
91 | . S ND=$G(^SCTM(404.51,TMI,0))
|
---|
92 | . S TMN=$P(ND,U,1)
|
---|
93 | . Q:TMN']""
|
---|
94 | . Q:$D(SCTM(TMI))
|
---|
95 | . S SCTM(TMI)=""
|
---|
96 | . S SCTM=SCTM+1
|
---|
97 | Q
|
---|
98 | ;
|
---|
99 | ASKMODE() ; Which report type to run: BRIEF or DETAIL.
|
---|
100 | ; B = Brief
|
---|
101 | ; DP = Detailed by PATIENT
|
---|
102 | ; DT = Detailed by TEAM
|
---|
103 | ; Return: 0,B, or D.
|
---|
104 | ;
|
---|
105 | NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
|
---|
106 | ;
|
---|
107 | W !!,"R E P O R T T Y P E"
|
---|
108 | S DIR(0)="SMO^B:Brief;DP:Detailed by PATIENT;DT:Detailed by TEAM"
|
---|
109 | S DIR("A")=" Select REPORT TYPE"
|
---|
110 | S DIR("B")="DP"
|
---|
111 | S DIR("?")="Select DT for a detailed report by team"
|
---|
112 | S DIR("?",1)="Select B for a brief summary report"
|
---|
113 | S DIR("?",2)="Select DP for a detailed report by patient"
|
---|
114 | D ^DIR
|
---|
115 | Q $S($D(DIRUT):0,1:Y)
|
---|
116 | ;
|
---|
117 | IEN ;Call here to include the 404.43 IEN on the right side of the
|
---|
118 | ;printout for all type 8 inconsistencies. You can use this number
|
---|
119 | ;to find the problem entry in Fileman. This feature only works
|
---|
120 | ;with the DP print option.
|
---|
121 | ;
|
---|
122 | NEW SCIEN
|
---|
123 | S SCIEN=1
|
---|
124 | G EN
|
---|
125 | ;
|
---|
126 | MAIL(SCDUZ) ; Queue report as a MailMan Message.
|
---|
127 | NEW CNT,QUIT,RESULT,SCTYPE
|
---|
128 | NEW XMY,XMDUZ,XMSUB,XMTEXT
|
---|
129 | ;
|
---|
130 | KILL ^TMP("PCMM PATIENT",$J)
|
---|
131 | KILL ^TMP("PCMM POSITION",$J)
|
---|
132 | KILL ^TMP("SCMSG",$J)
|
---|
133 | ;
|
---|
134 | S CNT=1
|
---|
135 | D SET("This message was automatically generated by PCMM patch SD*5.3*177.")
|
---|
136 | ;
|
---|
137 | S SCTYPE("TM")="A" ;All Teams & Positions
|
---|
138 | D ^SCRPV1A ;..Gather data
|
---|
139 | D MAILPOS ;...Build position inconsistency array
|
---|
140 | D MAILPT ;....Build patient inconsistency array
|
---|
141 | ;
|
---|
142 | S XMDUZ=.5
|
---|
143 | S XMY(XMDUZ)=""
|
---|
144 | I $G(SCDUZ) S XMY(SCDUZ)=""
|
---|
145 | S XMSUB="PCMM INCONSISTENCY REPORT"
|
---|
146 | S XMTEXT="^TMP(""SCMSG"",$J,"
|
---|
147 | D ^XMD
|
---|
148 | ;
|
---|
149 | KILL ^TMP("PCMM PATIENT",$J)
|
---|
150 | KILL ^TMP("PCMM POSITION",$J)
|
---|
151 | KILL ^TMP("SCMSG",$J)
|
---|
152 | Q
|
---|
153 | MAILPOS ;Print POSITION error counts only.
|
---|
154 | NEW ERROR,NUM,NUM1,POS,TM,TXT
|
---|
155 | ;
|
---|
156 | S NUM=0
|
---|
157 | F S NUM=$O(^TMP("PCMM POSITION",$J,NUM)) Q:'NUM D ;
|
---|
158 | . S TM=""
|
---|
159 | . F S TM=$O(^TMP("PCMM POSITION",$J,NUM,TM)) Q:TM="" D ;
|
---|
160 | .. S POS=""
|
---|
161 | .. F S POS=$O(^TMP("PCMM POSITION",$J,NUM,TM,POS)) Q:POS="" D ;
|
---|
162 | ... S ERROR(NUM\1)=($G(ERROR(NUM\1))+1)
|
---|
163 | ;
|
---|
164 | D SET(" ")
|
---|
165 | D SET("POSITION INCONSISTENCIES")
|
---|
166 | D SET("------------------------")
|
---|
167 | D SET(" ")
|
---|
168 | I '$D(^TMP("PCMM POSITION",$J)) D Q
|
---|
169 | . D SET("No inconsistencies found.")
|
---|
170 | ;
|
---|
171 | D SET("Total teams/positions per inconsistency type:")
|
---|
172 | S NUM=0
|
---|
173 | F S NUM=$O(ERROR(NUM)) Q:'NUM D ;
|
---|
174 | . S NUM1=(NUM\1)
|
---|
175 | . S TXT=$T(TXT+NUM1^SCRPV1B)
|
---|
176 | . ;W !?3,$P(TXT,";",3)_". "
|
---|
177 | . S TXT=$P(TXT,";",4)
|
---|
178 | . I TXT["[]" D ;
|
---|
179 | .. S TXT=$P(TXT,"[]",1)_"Team Assign/Team/Position"_$P(TXT,"[]",2)
|
---|
180 | . D SET(TXT_" - "_ERROR(NUM1))
|
---|
181 | Q
|
---|
182 | ;
|
---|
183 | MAILPT ;Print PATIENT error counts only.
|
---|
184 | NEW DFN,DFNNAM,ERROR,NUM
|
---|
185 | ;
|
---|
186 | S DFNNAM=""
|
---|
187 | F S DFNNAM=$O(^TMP("PCMM PATIENT",$J,DFNNAM)) Q:DFNNAM="" D ;
|
---|
188 | . S DFN=0
|
---|
189 | . F S DFN=$O(^TMP("PCMM PATIENT",$J,DFNNAM,DFN)) Q:'DFN D ;
|
---|
190 | .. S NUM=0
|
---|
191 | .. F S NUM=$O(^TMP("PCMM PATIENT",$J,DFNNAM,DFN,NUM)) Q:'NUM D ;
|
---|
192 | ... S ERROR("PT",NUM\1)=($G(ERROR("PT",NUM\1))+1)
|
---|
193 | ;
|
---|
194 | D SET(" ")
|
---|
195 | D SET("PATIENT INCONSISTENCIES")
|
---|
196 | D SET("-----------------------")
|
---|
197 | D SET(" ")
|
---|
198 | I '$D(^TMP("PCMM PATIENT",$J)) D Q
|
---|
199 | . D SET("No inconsistencies found.")
|
---|
200 | ;
|
---|
201 | D SET("Total patients per inconsistency type:")
|
---|
202 | S NUM=0
|
---|
203 | F S NUM=$O(ERROR("PT",NUM)) Q:'NUM D ;
|
---|
204 | . S NUM=NUM\1
|
---|
205 | . S TXT=$T(TXT+NUM^SCRPV1B)
|
---|
206 | . ;W !?3,$P(TXT,";",3)_". "
|
---|
207 | . S TXT=$P(TXT,";",4)
|
---|
208 | . I TXT["[]" D ;
|
---|
209 | .. S TXT=$P(TXT,"[]",1)_"Team Assign/Team/Position"_$P(TXT,"[]",2)
|
---|
210 | . D SET(TXT_" - "_ERROR("PT",NUM))
|
---|
211 | Q
|
---|
212 | ;
|
---|
213 | SET(TXT) ;Build message array
|
---|
214 | S ^TMP("SCMSG",$J,CNT)=TXT
|
---|
215 | S CNT=CNT+1
|
---|
216 | Q
|
---|