| [623] | 1 | ECUMRPC1 ;ALB/JAM-Event Capture Management Broker Utilities ;28 Nov 00 | 
|---|
|  | 2 | ;;2.0; EVENT CAPTURE ;**25,30,33,72**;8 May 96 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | DSSUNT(RESULTS,ECARY) ; | 
|---|
|  | 5 | ; | 
|---|
|  | 6 | ;This broker entry point returns DSS units from file 724 | 
|---|
|  | 7 | ;        RPC: EC GETDSSUNIT | 
|---|
|  | 8 | ;INPUTS         ECARY - Contains the following subscripted elements | 
|---|
|  | 9 | ;               STAT   - Active or inactive DSS Units (optional) | 
|---|
|  | 10 | ;               A-ctive (default), I-nactive, B-oth | 
|---|
|  | 11 | ; | 
|---|
|  | 12 | ;OUTPUTS        RESULTS - Array of DSS units. Data pieces as follows:- | 
|---|
|  | 13 | ;               PIECE - Description | 
|---|
|  | 14 | ;                 1     IEN of DSS Unit | 
|---|
|  | 15 | ;                 2     Name of DSS Unit | 
|---|
|  | 16 | ;                 3     Service | 
|---|
|  | 17 | ;                 4     Medical Specialty | 
|---|
|  | 18 | ;                 5     Cost Center | 
|---|
|  | 19 | ;                 6     Unit Number | 
|---|
|  | 20 | ;                 7     Inactive Flag | 
|---|
|  | 21 | ;                 8     Associated Stop code (if not sending to PCE) | 
|---|
|  | 22 | ;                 9     Category flag | 
|---|
|  | 23 | ;                 10    Default date entry | 
|---|
|  | 24 | ;                 11    Send to PCE Flag | 
|---|
|  | 25 | ; | 
|---|
|  | 26 | N UNT,STAT,CNT,CAT,NODE,ECS,STR,SRV,MED,CST,UNO,INACT,ASC,PCE,ACT,NODE | 
|---|
|  | 27 | N DFD | 
|---|
|  | 28 | D SETENV^ECUMRPC | 
|---|
|  | 29 | K ^TMP($J,"ECDSSUNT") | 
|---|
|  | 30 | S STAT=$P($G(ECARY),U),(CNT,UNT)=0 S:STAT="" STAT="A" | 
|---|
|  | 31 | F  S UNT=$O(^ECD(UNT)) Q:'UNT  S NODE=$G(^ECD(UNT,0)) I NODE'="" D | 
|---|
|  | 32 | . S ECS=$P(NODE,U,8),ACT=$P(NODE,U,6),ACT=$S(ACT:1,1:0) | 
|---|
|  | 33 | . Q:'ECS  I $S(STAT="A"&(ACT):1,STAT="I"&('ACT):1,1:0) Q | 
|---|
|  | 34 | . S CNT=CNT+1,CAT=$P(NODE,U,11),CAT=$S(CAT:"Y",1:"N"),UNO=$P(NODE,U,5) | 
|---|
|  | 35 | . S SRV=$$GET1^DIQ(49,$P(NODE,U,2),.01,"I") | 
|---|
|  | 36 | . S MED=$$GET1^DIQ(723,$P(NODE,U,3),.01,"I") | 
|---|
|  | 37 | . S CST=$$GET1^DIQ(420.1,$P(NODE,U,4),.01,"I") | 
|---|
|  | 38 | . S INACT=$P(NODE,U,6),INACT=$S(INACT:"I",1:"A"),ASC=$P(NODE,U,10) | 
|---|
|  | 39 | . S:ASC ASC=$$GET1^DIQ(40.7,ASC,.01,"I") | 
|---|
|  | 40 | . S DFD=$S($P(NODE,U,12)="N":"N",1:"X"),PCE=$P(NODE,U,14) | 
|---|
|  | 41 | . S PCE=$S(PCE="A":PCE,PCE="O":PCE,1:"N") | 
|---|
|  | 42 | . S STR=UNT_U_$P(NODE,U)_U_SRV_U_MED_U_CST_U_UNO_U_INACT_U_ASC_U_CAT | 
|---|
|  | 43 | . S STR=STR_U_DFD_U_PCE,^TMP($J,"ECDSSUNT",CNT)=STR | 
|---|
|  | 44 | S RESULTS=$NA(^TMP($J,"ECDSSUNT")) | 
|---|
|  | 45 | Q | 
|---|
|  | 46 | CAT(RESULTS,ECARY) ; | 
|---|
|  | 47 | ; | 
|---|
|  | 48 | ;This broker entry point returns a list of categories from file 726 | 
|---|
|  | 49 | ;        RPC: EC GETCAT | 
|---|
|  | 50 | ;INPUTS         ECARY - Contains the following subscripted elements | 
|---|
|  | 51 | ;                STAT - Active or inactive category (optional) | 
|---|
|  | 52 | ;                A-ctive (default), I-nactive, B-oth | 
|---|
|  | 53 | ; | 
|---|
|  | 54 | ;OUTPUTS        RESULTS - Array of category. Data pieces as follows:- | 
|---|
|  | 55 | ;               PIECE - Description | 
|---|
|  | 56 | ;                 1     IEN of Category | 
|---|
|  | 57 | ;                 2     Name of Category | 
|---|
|  | 58 | ;                 3     Creation Date | 
|---|
|  | 59 | ;                 4     Inactive Date | 
|---|
|  | 60 | ; | 
|---|
|  | 61 | N STAT,CNT,CAT,NODE,ECDT,INDT,CRDT | 
|---|
|  | 62 | D SETENV^ECUMRPC | 
|---|
|  | 63 | K ^TMP($J,"ECCAT") | 
|---|
|  | 64 | S STAT=$P($G(ECARY),U),(CNT,CAT)=0 S:STAT="" STAT="A" | 
|---|
|  | 65 | F  S CAT=$O(^EC(726,CAT)) Q:'CAT  S NODE=$G(^EC(726,CAT,0)) I NODE'="" D | 
|---|
|  | 66 | . S ECDT=$P(NODE,U,3) | 
|---|
|  | 67 | . I STAT="A",ECDT'="",ECDT'>DT Q | 
|---|
|  | 68 | . I STAT="I",ECDT="" Q | 
|---|
|  | 69 | . S CRDT=$$FMTE^XLFDT($P(NODE,U,2),"2F") | 
|---|
|  | 70 | . S INDT=$$FMTE^XLFDT($P(NODE,U,3),"2F") | 
|---|
|  | 71 | . S CNT=CNT+1,^TMP($J,"ECCAT",CNT)=CAT_U_$P(NODE,U)_U_CRDT_U_INDT | 
|---|
|  | 72 | S RESULTS=$NA(^TMP($J,"ECCAT")) | 
|---|
|  | 73 | Q | 
|---|
|  | 74 | ; | 
|---|
|  | 75 | CATCHK(RESULTS,ECARY) ; | 
|---|
|  | 76 | ; | 
|---|
|  | 77 | ;Broker call checks whether category is used in an Event Code Screen. | 
|---|
|  | 78 | ;        RPC: EC DSSCATCHECK | 
|---|
|  | 79 | ;INPUTS   ECARY  - Contains the following subscripted elements | 
|---|
|  | 80 | ;          ECDA  - DSS Unit ien (file #724) | 
|---|
|  | 81 | ; | 
|---|
|  | 82 | ;OUTPUTS  RESULTS - Category used in Event Code Screen, 1-Yes or 0-No | 
|---|
|  | 83 | ; | 
|---|
|  | 84 | N ECDA,ECFLG,ECX | 
|---|
|  | 85 | D SETENV^ECUMRPC | 
|---|
|  | 86 | S ECDA=$P(ECARY,U) I ECDA="" Q | 
|---|
|  | 87 | S (ECFLG,ECX)=0 | 
|---|
|  | 88 | F  S ECX=$O(^ECJ("AP",ECX)) Q:'ECX!(ECFLG)  D | 
|---|
|  | 89 | . I $D(^ECJ("AP",ECX,ECDA)) S ECFLG=1 | 
|---|
|  | 90 | S RESULTS=ECFLG | 
|---|
|  | 91 | Q | 
|---|
|  | 92 | PXCHK(RESULTS,ECARY) ; | 
|---|
|  | 93 | ; | 
|---|
|  | 94 | ;Checks whether procedure description or national number exist | 
|---|
|  | 95 | ;INPUTS   ECARY  - Contains the following subscripted elements | 
|---|
|  | 96 | ;          ECP - Procedure description | 
|---|
|  | 97 | ;          ECN - EC National Number | 
|---|
|  | 98 | ; | 
|---|
|  | 99 | ;OUTPUTS  RESULTS - Px used^National # used, 1-Yes or 0-No ex. 1^0 | 
|---|
|  | 100 | ; | 
|---|
|  | 101 | N ECX,ECP,ECN | 
|---|
|  | 102 | Q:$G(ECARY) | 
|---|
|  | 103 | D SETENV^ECUMRPC | 
|---|
|  | 104 | S ECP=$P(ECARY,U),ECN=$P(ECARY,U,2),RESULTS="0^0" | 
|---|
|  | 105 | I ECP'="",$D(^EC(725,"B",ECP)) S $P(RESULTS,U)=1 | 
|---|
|  | 106 | I ECN'="" F ECX="E","D","DL" D  I $P(RESULTS,U,2) Q | 
|---|
|  | 107 | . I $D(^EC(725,ECX,ECN)) S $P(RESULTS,U,2)=1 | 
|---|
|  | 108 | Q | 
|---|
|  | 109 | SRCLST(RESULTS,ECARY) ; | 
|---|
|  | 110 | ; | 
|---|
|  | 111 | ;This broker entry returns an array of codes from a file based on a | 
|---|
|  | 112 | ;search string. | 
|---|
|  | 113 | ;        RPC: EC GETLIST | 
|---|
|  | 114 | ; | 
|---|
|  | 115 | ;INPUTS      ECARY   - Contains the following subscripted elements | 
|---|
|  | 116 | ;             ECSTR  - Search string | 
|---|
|  | 117 | ;             ECFIL  - File to search | 
|---|
|  | 118 | ;             ECDIR  - Search order | 
|---|
|  | 119 | ; | 
|---|
|  | 120 | ;OUTPUTS     RESULTS - Array of values based on the search criteria. | 
|---|
|  | 121 | ; | 
|---|
|  | 122 | N ECNT,DIC,ECSTR,ECFIL,ECORD,ECER,ECDI | 
|---|
|  | 123 | D SETENV^ECUMRPC | 
|---|
|  | 124 | S ECNT=0,ECFIL=$P(ECARY,U),ECSTR=$P(ECARY,U,2),ECDIR=$P(ECARY,U,3) | 
|---|
|  | 125 | S ECORD=$S(ECDIR=-1:"B",1:"I") | 
|---|
|  | 126 | K ^TMP($J,"ECFIND"),^TMP("ECSRCH",$J) | 
|---|
|  | 127 | I ECFIL="" Q | 
|---|
|  | 128 | S ECNUM=44 | 
|---|
|  | 129 | I ECFIL=420.1 D CSTCTR            ;Cost Center search | 
|---|
|  | 130 | I ECFIL=49 D SERVC                ;Service search | 
|---|
|  | 131 | I ECFIL=723 D MEDSPC              ;Medical specialty | 
|---|
|  | 132 | I ECFIL=40.7 D STPCDE G EXIT      ;Associated stop code | 
|---|
|  | 133 | I ECFIL=724 D DUNT G EXIT         ;DSS Unit | 
|---|
|  | 134 | I ECFIL=726 D ECAT                ;Category | 
|---|
|  | 135 | I ECFIL=4 D LOC                   ;Location | 
|---|
|  | 136 | I ECFIL=44 D ASCLN G EXIT         ;Associated clinic | 
|---|
|  | 137 | I ECFIL=757.01 D LEX^ECUMRPC2 G EXIT  ;Lex ICD code | 
|---|
|  | 138 | I ECFIL=200 D PROV^ECUMRPC2      ;Providers | 
|---|
|  | 139 | I $D(ECER) S ^TMP($J,"ECFIND",1)="0^Error occurred during search" G EXIT | 
|---|
|  | 140 | D SORT | 
|---|
|  | 141 | EXIT K ^TMP("ECSRCH",$J) | 
|---|
|  | 142 | S RESULTS=$NA(^TMP($J,"ECFIND")) | 
|---|
|  | 143 | Q | 
|---|
|  | 144 | ASCLN ;Search for active associated clinics (file #44) | 
|---|
|  | 145 | N CNT,NOD,ECDT,INACT,REACT,ERR | 
|---|
|  | 146 | S CNT=0,ECDT=DT | 
|---|
|  | 147 | F  Q:CNT=ECNUM  S ECSTR=$O(^SC("B",ECSTR),ECDIR) Q:ECSTR=""  S CLN="" D | 
|---|
|  | 148 | .F  S CLN=$O(^SC("B",ECSTR,CLN),ECDIR) Q:CLN=""  S NOD=$G(^SC(CLN,0)) D | 
|---|
|  | 149 | ..Q:NOD=""  Q:$P(NOD,U,3)'="C"  ;Q:+$G(^SC(CLN,"OOS")) | 
|---|
|  | 150 | ..S ERR=0 I $D(^SC(CLN,"I")) D  I ERR Q | 
|---|
|  | 151 | ...S INACT=$P(^SC(CLN,"I"),U),REACT=$P(^SC(CLN,"I"),U,2) | 
|---|
|  | 152 | ...I INACT D  I ERR Q | 
|---|
|  | 153 | ....I REACT="" S:ECDT'<INACT ERR=1 Q | 
|---|
|  | 154 | ....I ECDT'<INACT,ECDT<REACT S ERR=1 Q | 
|---|
|  | 155 | ...I REACT,ECDT<REACT S ERR=1 | 
|---|
|  | 156 | ..S CNT=CNT+1,^TMP($J,"ECFIND",CNT)=CLN_U_$P(NOD,U) | 
|---|
|  | 157 | Q | 
|---|
|  | 158 | CSTCTR ;Search for cost centers (File #420.1) | 
|---|
|  | 159 | N ECNULL,INDX,STR,NSTR,I | 
|---|
|  | 160 | S $P(ECNULL," ",7)=" ",INDX="B" | 
|---|
|  | 161 | I $E(ECSTR)?.N,$L(ECSTR)<7 S ECSTR=ECSTR_$E(ECNULL,1,7-$L(ECSTR)) | 
|---|
|  | 162 | I $L($P(ECSTR," "))=6,$P(ECSTR," ",2)?.A D   ;truncate for x-ref | 
|---|
|  | 163 | . S ECSTR=$P(ECSTR," ")_" "_$E($P(ECSTR," ",2,999),1,22) | 
|---|
|  | 164 | I $E(ECSTR)?.A S INDX="C",(STR,NSTR)="" D  S ECSTR=NSTR | 
|---|
|  | 165 | .F I=1:1 S STR=$P(ECSTR," ",I) Q:STR=""  D | 
|---|
|  | 166 | ..S STR=$E(STR)_$TR($E(STR,2,9999),"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz") | 
|---|
|  | 167 | ..S NSTR=NSTR_STR | 
|---|
|  | 168 | D LISTDIC(ECFIL,"",.01,ECORD,ECNUM,ECSTR,"",INDX,"I '$P(^(0),U,2)","","^TMP(""ECSRCH"",$J)","ECER") | 
|---|
|  | 169 | Q | 
|---|
|  | 170 | SERVC ;Search for services (File #49) | 
|---|
|  | 171 | D LISTDIC(ECFIL,"",.01,ECORD,ECNUM,ECSTR,"","","","","^TMP(""ECSRCH"",$J)","ECER") | 
|---|
|  | 172 | Q | 
|---|
|  | 173 | MEDSPC ;Search for medical specialty (File #723) | 
|---|
|  | 174 | D LISTDIC(ECFIL,"",.01,ECORD,ECNUM,ECSTR,"","","","","^TMP(""ECSRCH"",$J)","ECER") | 
|---|
|  | 175 | Q | 
|---|
|  | 176 | STPCDE ;Search for associated stop code (File #40.7) | 
|---|
|  | 177 | N ECNT,INDX,ECNUL,STR,IEN | 
|---|
|  | 178 | S $P(ECNUL,"  ",30)=" ",INDX="B",ECNT=0,ECSTR=$P(ECSTR,"~") | 
|---|
|  | 179 | I +ECSTR,+ECSTR?.N S INDX="C",IEN=0 D  Q | 
|---|
|  | 180 | .S ECSTR=$O(^DIC(40.7,INDX,+ECSTR)) I ECSTR="" Q | 
|---|
|  | 181 | .F  S IEN=$O(^DIC(40.7,INDX,ECSTR,IEN)) Q:'IEN  D  I ECNT>(ECNUM-1) Q | 
|---|
|  | 182 | ..S STR=$G(^DIC(40.7,IEN,0)) I (STR="")!($P(STR,U,3)'="") Q | 
|---|
|  | 183 | ..S STR=$E($P(STR,U),1,30)_"  ["_$J($P(STR,U,2),3,0)_"]"_U_$P(STR,U,2)_U_IEN | 
|---|
|  | 184 | ..S ECNT=ECNT+1,^TMP($J,"ECFIND",ECNT)=STR | 
|---|
|  | 185 | D LISTDIC(ECFIL,"",".01;1",ECORD,ECNUM,ECSTR,"",INDX,"I $P(^(0),""^"",3)=""""!($P(^(0),U,3)'<DT)","","^TMP(""ECSRCH"",$J)","ECER") | 
|---|
|  | 186 | S ECNT=0 | 
|---|
|  | 187 | F  S ECNT=$O(^TMP("ECSRCH",$J,"DILIST","ID",ECNT)) Q:'ECNT  D | 
|---|
|  | 188 | .S STR=$G(^TMP("ECSRCH",$J,"DILIST","ID",ECNT,.01))_U_$G(^(1)) | 
|---|
|  | 189 | .S STR=$E($P(STR,U),1,30)_"  ["_$J($P(STR,U,2),3,0)_"]"_U_$P(STR,U,2) | 
|---|
|  | 190 | .S ^TMP($J,"ECFIND",ECNT)=STR_U_^TMP("ECSRCH",$J,"DILIST",2,ECNT) | 
|---|
|  | 191 | Q | 
|---|
|  | 192 | DUNT ;Search for DSS unit (File #724) | 
|---|
|  | 193 | N ECNT,SNDPCE | 
|---|
|  | 194 | D LISTDIC(ECFIL,"",".01;10;13",ECORD,ECNUM,ECSTR,"","","I '$P(^(0),""^"",6),$P(^(0),U,8)","","^TMP(""ECSRCH"",$J)","ECER") | 
|---|
|  | 195 | S ECNT=0 | 
|---|
|  | 196 | F  S ECNT=$O(^TMP("ECSRCH",$J,"DILIST","ID",ECNT)) Q:'ECNT  D | 
|---|
|  | 197 | .S SNDPCE=$G(^TMP("ECSRCH",$J,"DILIST","ID",ECNT,13)) | 
|---|
|  | 198 | .S SNDPCE=$S(SNDPCE="O":1,SNDPCE="A":1,1:0) | 
|---|
|  | 199 | .S ^TMP($J,"ECFIND",ECNT)=$G(^TMP("ECSRCH",$J,"DILIST","ID",ECNT,.01))_U_^TMP("ECSRCH",$J,"DILIST",2,ECNT)_U_$G(^TMP("ECSRCH",$J,"DILIST","ID",ECNT,10))_U_SNDPCE | 
|---|
|  | 200 | Q | 
|---|
|  | 201 | ECAT ;Search for Category (File #726) | 
|---|
|  | 202 | D LISTDIC(ECFIL,"",.01,ECORD,ECNUM,ECSTR,"","","I $P(^(0),""^"",3)=""""!($P(^(0),U,3)>DT)","","^TMP(""ECSRCH"",$J)","ECER") | 
|---|
|  | 203 | Q | 
|---|
|  | 204 | LOC ;Search for Location (File #4) | 
|---|
|  | 205 | D LISTDIC(ECFIL,"",.01,ECORD,ECNUM,ECSTR,"","","I $G(^(""EC""))","","^TMP(""ECSRCH"",$J)","ECER") | 
|---|
|  | 206 | Q | 
|---|
|  | 207 | LISTDIC(ECFL,ECIEN,ECFLD,ECFLG,ECNUM,ECFRM,ECPRT,ECINDX,ECSCN,ECIND,ECTG,ECER) ; | 
|---|
|  | 208 | ;Produces a list of records in a file base on search string | 
|---|
|  | 209 | N DIC | 
|---|
|  | 210 | D LIST^DIC(ECFL,ECIEN,ECFLD,ECFLG,ECNUM,ECFRM,ECPRT,ECINDX,ECSCN,ECIND,ECTG,ECER) | 
|---|
|  | 211 | K ECFL,ECIEN,ECFLD,ECFLG,ECNUM,ECFRM,ECPRT,ECINDX,ECSCN,ECID | 
|---|
|  | 212 | Q | 
|---|
|  | 213 | SORT ;Extracts data to be returned to broker | 
|---|
|  | 214 | N ECNT,STR | 
|---|
|  | 215 | S ECNT=0 | 
|---|
|  | 216 | F  S ECNT=$O(^TMP("ECSRCH",$J,"DILIST","ID",ECNT)) Q:'ECNT  D | 
|---|
|  | 217 | .S ^TMP($J,"ECFIND",ECNT)=$G(^TMP("ECSRCH",$J,"DILIST","ID",ECNT,.01))_U_^TMP("ECSRCH",$J,"DILIST",2,ECNT) | 
|---|
|  | 218 | Q | 
|---|