| 1 | SCRPV1A ; bp/djb - PCMM Inconsistency Rpt - Get Data ; 8/25/99 9:57am | 
|---|
| 2 | ;;5.3;Scheduling;**177**;AUG 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | ;Return: | 
|---|
| 5 | ;  Inconsistency array in format: | 
|---|
| 6 | ;     ^TMP("PCMM POSITION",$J,#,Tm,TmPos,)="" | 
|---|
| 7 | ;     ^TMP("PCMM PATIENT",$J,Name,DFN,#,Tm,Pos)="" | 
|---|
| 8 | ; | 
|---|
| 9 | ;For a list of inconsistencies, see bottom of routine SCRPV1B. | 
|---|
| 10 | ; | 
|---|
| 11 | EN ; | 
|---|
| 12 | D POSITION | 
|---|
| 13 | D PATIENT | 
|---|
| 14 | Q | 
|---|
| 15 | ; | 
|---|
| 16 | POSITION ;Check for position inconsistencies. | 
|---|
| 17 | ; | 
|---|
| 18 | NEW POSI,POSN,TMI,TMN | 
|---|
| 19 | ; | 
|---|
| 20 | ;Look at each team | 
|---|
| 21 | S TMN="" | 
|---|
| 22 | F  S TMN=$O(^SCTM(404.51,"B",TMN)) Q:TMN=""  D  ; | 
|---|
| 23 | . S TMI=0 | 
|---|
| 24 | . F  S TMI=$O(^SCTM(404.51,"B",TMN,TMI)) Q:'TMI  D  ; | 
|---|
| 25 | .. Q:'$D(^SCTM(404.51,TMI,0)) | 
|---|
| 26 | .. ;If user selected teams, quit if this one isn't on list. | 
|---|
| 27 | .. I SCTYPE("TM")="S" Q:'$D(SCTM(TMI)) | 
|---|
| 28 | .. ;Look at each position for this team | 
|---|
| 29 | .. S POSI=0 | 
|---|
| 30 | .. F  S POSI=$O(^SCTM(404.57,"C",TMI,POSI)) Q:'POSI  D  ; | 
|---|
| 31 | ... S POSN=$P($G(^SCTM(404.57,POSI,0)),U,1) Q:POSN']"" | 
|---|
| 32 | ... D CHECK45(TMI,POSI) ;..Check for inconsistencies 4 & 5. | 
|---|
| 33 | ... Q:'$D(^SCPT(404.43,"APTPA",POSI)) | 
|---|
| 34 | ... D CHECK1(TMI,POSI) ;...Check for inconsistency 1. | 
|---|
| 35 | Q | 
|---|
| 36 | ; | 
|---|
| 37 | PATIENT ;Check for patient inconsistencies. | 
|---|
| 38 | D CHECK28 | 
|---|
| 39 | D CHECK367 | 
|---|
| 40 | Q | 
|---|
| 41 | ; | 
|---|
| 42 | CHECK1(TMI,POSI) ;Check positions for inconsistency 1. | 
|---|
| 43 | ;Input: | 
|---|
| 44 | ;   TMI  - Team IEN | 
|---|
| 45 | ;   POSI - Team Position IEN | 
|---|
| 46 | ; | 
|---|
| 47 | NEW POSN,TMN | 
|---|
| 48 | Q:+$$GETPRTP^SCAPMCU2(POSI,DT)  ;Current provider. Fld 304 in 404.57. | 
|---|
| 49 | Q:+$$ACTTM^SCMCTMU(TMI,DT)'=1  ;Team inactive | 
|---|
| 50 | Q:+$$ACTTP^SCMCTPU(POSI,DT)'=1  ;Position inactive | 
|---|
| 51 | S TMN=$$TMNAME(TMI) | 
|---|
| 52 | S POSN=$$POSNAME(POSI) | 
|---|
| 53 | S ^TMP("PCMM POSITION",$J,1,TMN,POSN)="" ;.........................#1 | 
|---|
| 54 | Q | 
|---|
| 55 | ; | 
|---|
| 56 | CHECK28 ;Check patients for inconsistencies 2 & 8. | 
|---|
| 57 | ; | 
|---|
| 58 | ;Loop thru 404.43 for each patient. | 
|---|
| 59 | ;Use "ACTDFN" xref. Active entries sorted by patient IEN. | 
|---|
| 60 | ; | 
|---|
| 61 | NEW DATA,DFN,DFNNAM,NUM,POSI,POSN,PTI,PTPI,TMI,TMN | 
|---|
| 62 | ; | 
|---|
| 63 | S DFN=0 | 
|---|
| 64 | F  S DFN=$O(^SCPT(404.43,"ACTDFN",DFN)) Q:'DFN  D  ; | 
|---|
| 65 | . S PTPI=0 | 
|---|
| 66 | . F  S PTPI=$O(^SCPT(404.43,"ACTDFN",DFN,PTPI)) Q:'PTPI  D  ; | 
|---|
| 67 | .. S DATA=$G(^SCPT(404.43,PTPI,0)) ;Team Position Assign zero node | 
|---|
| 68 | .. Q:$P(DATA,U,4)]""  ;.............Inactive | 
|---|
| 69 | .. S PTI=$P(DATA,U,1) Q:'PTI  ;.....Team Assign IEN | 
|---|
| 70 | .. S POSI=$P(DATA,U,2) Q:'POSI  ;...Position | 
|---|
| 71 | .. S DATA=$G(^SCPT(404.42,PTI,0)) ;.Team Assign zero node | 
|---|
| 72 | .. S TMI=$P(DATA,U,3) Q:'TMI  ;.....Team IEN | 
|---|
| 73 | .. ; | 
|---|
| 74 | .. ;If user selected teams, quit if this one isn't on list. | 
|---|
| 75 | .. I SCTYPE("TM")="S" Q:'$D(SCTM(TMI)) | 
|---|
| 76 | .. ; | 
|---|
| 77 | .. S POSN=$$POSNAME(POSI) | 
|---|
| 78 | .. S TMN=$$TMNAME(TMI) | 
|---|
| 79 | .. S DFNNAM=$$PTNAME(DFN) ;Patient name | 
|---|
| 80 | .. ; | 
|---|
| 81 | .. D  ;Check for nconsistency 8 | 
|---|
| 82 | ... I $P(DATA,U,9)]"" D  ;...............Tm Pos Assign Inactive....#8 | 
|---|
| 83 | .... S ^TMP("PCMM PATIENT",$J,DFNNAM,DFN,8.1,TMN,POSN)=PTPI | 
|---|
| 84 | ... I +$$ACTTM^SCMCTMU(TMI,DT)'=1 D  ;...Team inactive.............#8 | 
|---|
| 85 | .... S ^TMP("PCMM PATIENT",$J,DFNNAM,DFN,8.2,TMN,POSN)=PTPI | 
|---|
| 86 | ... I +$$ACTTP^SCMCTPU(POSI,DT)'=1 D  ;..Position inactive.........#8 | 
|---|
| 87 | .... S ^TMP("PCMM PATIENT",$J,DFNNAM,DFN,8.3,TMN,POSN)=PTPI | 
|---|
| 88 | .. ; | 
|---|
| 89 | .. Q:$P(DATA,U,8)'=1  ;..Team Assign not PC | 
|---|
| 90 | .. Q:$P(DATA,U,9)]""  ;..Team Assign inactive | 
|---|
| 91 | .. ; | 
|---|
| 92 | .. Q:$D(^SCPT(404.43,"APCPOS",DFN,1)) | 
|---|
| 93 | .. S ^TMP("PCMM PATIENT",$J,DFNNAM,DFN,2,TMN,POSN)=PTPI ;..........#2 | 
|---|
| 94 | Q | 
|---|
| 95 | ; | 
|---|
| 96 | CHECK367 ;Check patients for inconsistencies 3,6,7. | 
|---|
| 97 | ; | 
|---|
| 98 | ;Loop thru 404.43 for each patient. | 
|---|
| 99 | ;Use "ACTPC" xref. Active entries sorted by patient IEN & PC ROLE. | 
|---|
| 100 | ; | 
|---|
| 101 | NEW CNT,DATA,DFN,DFNNAM,HLD,POSI,POSN,PTI,PTPI,TMI,TMN | 
|---|
| 102 | ; | 
|---|
| 103 | S DFN=0 | 
|---|
| 104 | F  S DFN=$O(^SCPT(404.43,"ACTPC",DFN)) Q:'DFN  D  ; | 
|---|
| 105 | . S CNT=0 KILL HLD ;Initialize for each DFN | 
|---|
| 106 | . S PTPI=0 | 
|---|
| 107 | . F  S PTPI=$O(^SCPT(404.43,"ACTPC",DFN,1,PTPI)) Q:'PTPI  D  ; | 
|---|
| 108 | .. S DATA=$G(^SCPT(404.43,PTPI,0)) ;..Team Position Assign zero node | 
|---|
| 109 | .. Q:$P(DATA,U,4)]""  ;...............Inactive | 
|---|
| 110 | .. S PTI=$P(DATA,U,1) Q:'PTI  ;.......Team Assign IEN | 
|---|
| 111 | .. S POSI=$P(DATA,U,2) Q:'POSI  ;.....Position | 
|---|
| 112 | .. S DATA=$G(^SCPT(404.42,PTI,0)) ;...Team Assign zero node | 
|---|
| 113 | .. S TMI=$P(DATA,U,3) Q:'TMI  ;.......Team IEN | 
|---|
| 114 | .. ; | 
|---|
| 115 | .. ;If user selected teams, quit if this one isn't on list. | 
|---|
| 116 | .. I SCTYPE("TM")="S" Q:'$D(SCTM(TMI)) | 
|---|
| 117 | .. ; | 
|---|
| 118 | .. Q:$P(DATA,U,8)'=1  ;...............Team Assign not PC | 
|---|
| 119 | .. Q:$P(DATA,U,9)]""  ;...............Team Assign inactive | 
|---|
| 120 | .. S POSN=$$POSNAME(POSI) | 
|---|
| 121 | .. S TMN=$$TMNAME(TMI) | 
|---|
| 122 | .. S DFNNAM=$$PTNAME(DFN) ;Patient name | 
|---|
| 123 | .. ; | 
|---|
| 124 | .. D CHECK67 | 
|---|
| 125 | .. ; | 
|---|
| 126 | .. S CNT=CNT+1 | 
|---|
| 127 | .. ;Save 1st occurance. Asingle occurance is not a problem. | 
|---|
| 128 | .. I CNT=1 S HLD(DFNNAM,DFN,3,TMN,POSN)="" Q | 
|---|
| 129 | .. ; | 
|---|
| 130 | .. ;If there is a 2nd occurance, move 1st occurance into array. | 
|---|
| 131 | .. I CNT=2 M ^TMP("PCMM PATIENT",$J)=HLD KILL HLD | 
|---|
| 132 | .. S ^TMP("PCMM PATIENT",$J,DFNNAM,DFN,3,TMN,POSN)=PTPI ;..........#3 | 
|---|
| 133 | Q | 
|---|
| 134 | ; | 
|---|
| 135 | CHECK45(TMI,POSI) ;Check positions for inconsistencies 4 & 5. | 
|---|
| 136 | ;Input: | 
|---|
| 137 | ;   TMI  - Team IEN | 
|---|
| 138 | ;   POSI - Team Position IEN | 
|---|
| 139 | ; | 
|---|
| 140 | NEW AP,DATA,PCP,POSN,PREHI,STAFFAP,STAFFPCP,TMN | 
|---|
| 141 | ; | 
|---|
| 142 | S PREHI=0 | 
|---|
| 143 | F  S PREHI=$O(^SCTM(404.53,"B",POSI,PREHI)) Q:'PREHI  D  ; | 
|---|
| 144 | . S DATA=$G(^SCTM(404.53,PREHI,0)) | 
|---|
| 145 | . Q:DATA']"" | 
|---|
| 146 | . S AP=$P(DATA,U,1) ;.....................Preceptee position | 
|---|
| 147 | . S PCP=$P(DATA,U,6) ;....................Preceptor position | 
|---|
| 148 | . S STAFFAP=+$$GETPRTP^SCAPMCU2(AP,DT) ;..Preceptee staff person | 
|---|
| 149 | . S STAFFPCP=+$$GETPRTP^SCAPMCU2(PCP,DT) ;Preceptor staff person | 
|---|
| 150 | . ; | 
|---|
| 151 | . S TMN=$$TMNAME(TMI) | 
|---|
| 152 | . S POSN=$$POSNAME(POSI) | 
|---|
| 153 | . I STAFFAP,STAFFAP=STAFFPCP D  ; | 
|---|
| 154 | .. S ^TMP("PCMM POSITION",$J,4,TMN,POSN)="" ;......................#4 | 
|---|
| 155 | . I STAFFPCP="" D  ; | 
|---|
| 156 | .. S ^TMP("PCMM POSITION",$J,5,TMN,POSN)="" ;......................#5 | 
|---|
| 157 | Q | 
|---|
| 158 | ; | 
|---|
| 159 | CHECK67 ;Check patients for inconsistencies 6 & 7. | 
|---|
| 160 | NEW ERROR,ID,LIST,NUM,POS,RESULT,TYPE,ZDATE | 
|---|
| 161 | ; | 
|---|
| 162 | S ZDATE("BEGIN")=DT | 
|---|
| 163 | S ZDATE("END")=DT | 
|---|
| 164 | S ZDATE("INCL")=0 | 
|---|
| 165 | ; | 
|---|
| 166 | S RESULT=$$PRPTTPC^SCAPMC(PTPI,"ZDATE","LIST","ERROR",1) | 
|---|
| 167 | ; | 
|---|
| 168 | S NUM=0 | 
|---|
| 169 | F  S NUM=$O(LIST(NUM)) Q:'NUM  D  ; | 
|---|
| 170 | . S TYPE="" | 
|---|
| 171 | . F  S TYPE=$O(LIST(NUM,TYPE)) Q:TYPE=""  D  ; | 
|---|
| 172 | .. S ID="" | 
|---|
| 173 | .. F  S ID=$O(LIST(NUM,TYPE,ID)) Q:ID=""  D  ; | 
|---|
| 174 | ... S POS=$P(LIST(NUM,TYPE,ID),U,3) Q:'POS | 
|---|
| 175 | ... ;See if field 4, POSSIBLE PRIMARY PRACTITIONER, equals 1. | 
|---|
| 176 | ... Q:$P($G(^SCTM(404.57,POS,0)),U,4)=1 | 
|---|
| 177 | ... I TYPE="AP" D  Q | 
|---|
| 178 | .... S ^TMP("PCMM PATIENT",$J,DFNNAM,DFN,6,TMN,POSN)=PTPI ;........#6 | 
|---|
| 179 | ... I TYPE="PCP" D  Q | 
|---|
| 180 | .... S ^TMP("PCMM PATIENT",$J,DFNNAM,DFN,7,TMN,POSN)=PTPI ;........#7 | 
|---|
| 181 | Q | 
|---|
| 182 | ; | 
|---|
| 183 | TMNAME(TMI) ;Return team name | 
|---|
| 184 | NEW NAME | 
|---|
| 185 | S NAME=$P($G(^SCTM(404.51,TMI,0)),U,1) | 
|---|
| 186 | S:NAME="" NAME="UNKNOWN" | 
|---|
| 187 | Q NAME | 
|---|
| 188 | ; | 
|---|
| 189 | POSNAME(POSI) ;Return position name | 
|---|
| 190 | NEW NAME | 
|---|
| 191 | S NAME=$P($G(^SCTM(404.57,POSI,0)),U,1) | 
|---|
| 192 | S:NAME="" NAME="UNKNOWN" | 
|---|
| 193 | Q NAME | 
|---|
| 194 | ; | 
|---|
| 195 | PTNAME(DFN) ;Return patient name | 
|---|
| 196 | NEW NAME | 
|---|
| 197 | S NAME=$P($G(^DPT(DFN,0)),U,1) | 
|---|
| 198 | S:NAME="" NAME="UNKNOWN" | 
|---|
| 199 | Q NAME | 
|---|