| 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 | 
|---|