[613] | 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
|
---|