| 1 | ECUERPC ;ALB/JAM;Event Capture Data Entry Broker Utilities ;Aug 16, 2000
 | 
|---|
| 2 |  ;;2.0; EVENT CAPTURE ;**25,32,33,46,47,59,72**;8 May 96
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | USRUNT(RESULTS,ECARY) ;
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;This broker call returns an array of DSS units for a user & location
 | 
|---|
| 7 |  ;        RPC: EC GETUSRDSSUNIT
 | 
|---|
| 8 |  ;INPUTS        ECARY  - Contains the following subscripted elements
 | 
|---|
| 9 |  ;               1. ECL   - Location IEN (if define gives User's DSS 
 | 
|---|
| 10 |  ;                          units for a location)
 | 
|---|
| 11 |  ;               2. ECDUZ - New Person IEN (if define gives list of 
 | 
|---|
| 12 |  ;                          DSS Units available to user)
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  ;OUTPUTS        RESULTS - Array of DSS Units. Data pieces as follows:-
 | 
|---|
| 15 |  ;               PIECE - Description
 | 
|---|
| 16 |  ;                 1     IEN of file 724
 | 
|---|
| 17 |  ;                 2     Name of DSS Unit
 | 
|---|
| 18 |  ;                 3     Send to PCE Flag
 | 
|---|
| 19 |  ;                 4     Data Entry Date/Time Default
 | 
|---|
| 20 |  N ECL,ECDUZ,CNT,STR,DPT,IEN
 | 
|---|
| 21 |  D SETENV^ECUMRPC
 | 
|---|
| 22 |  S ECL=$P(ECARY,U),ECDUZ=$P(ECARY,U,2) I ECL="",ECDUZ="" Q
 | 
|---|
| 23 |  ;S ECDUZ=$G(DUZ,U),ECL=$P(ECARY,U) I (ECDUZ="")!(ECL="") Q
 | 
|---|
| 24 |  K ^TMP($J,"ECUSRUNT") S (DPT,CNT)=0
 | 
|---|
| 25 |  I ECL'="",ECDUZ="" S ECDUZ=$G(DUZ,U) I ECDUZ="" Q
 | 
|---|
| 26 |  I $D(^XUSEC("ECALLU",ECDUZ)) S DPT="" D
 | 
|---|
| 27 |  .I ECL="" S ^TMP($J,"ECUSRUNT",CNT+1)="ALL^ALL" Q
 | 
|---|
| 28 |  .I ECL="ALL" S ECL=""
 | 
|---|
| 29 |  .F  S DPT=$O(^ECD("B",DPT))  Q:DPT=""  S IEN=0 D
 | 
|---|
| 30 |  ..F  S IEN=$O(^ECD("B",DPT,IEN)) Q:'IEN  D UNTCHK
 | 
|---|
| 31 |  E  D
 | 
|---|
| 32 |  .I ECL="ALL" S ECL=""
 | 
|---|
| 33 |  .F  S DPT=$O(^VA(200,ECDUZ,"EC",DPT)) Q:'DPT  S IEN=DPT D UNTCHK
 | 
|---|
| 34 |  S RESULTS=$NA(^TMP($J,"ECUSRUNT"))
 | 
|---|
| 35 |  Q
 | 
|---|
| 36 | UNTCHK ;Check if DSS unit exist as event code screen and if active
 | 
|---|
| 37 |  N DSSF,DFD
 | 
|---|
| 38 |  ;I '$D(^ECJ("AP",ECL,IEN))!($P($G(^ECD(IEN,0)),U,6)) Q
 | 
|---|
| 39 |  I ECL'="",'$D(^ECJ("AP",ECL,IEN)) Q
 | 
|---|
| 40 |  I ($P($G(^ECD(IEN,0)),U,6))!('$P($G(^ECD(IEN,0)),U,8)) Q
 | 
|---|
| 41 |  S DSSF=$P(^ECD(IEN,0),"^",14) S:DSSF="" DSSF="N"
 | 
|---|
| 42 |  S DFD=$S($P(^ECD(IEN,0),"^",12)="N":"N",1:"X") ; added by VMP
 | 
|---|
| 43 |  S CNT=CNT+1,STR=IEN_"^"_$P(^ECD(IEN,0),"^")_U_DSSF_"^"_DFD
 | 
|---|
| 44 |  S ^TMP($J,"ECUSRUNT",CNT)=STR
 | 
|---|
| 45 |  Q
 | 
|---|
| 46 | CAT(RESULTS,ECARY) ;
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 |  ;This broker entry point returns an array of categories for an Event 
 | 
|---|
| 49 |  ;Code screen based on location and DSS unit.
 | 
|---|
| 50 |  ;        RPC: EC GETECSCATS
 | 
|---|
| 51 |  ;INPUTS        ECARY  - Contains the following values separated by "^"
 | 
|---|
| 52 |  ;               ECL  - Location IEN
 | 
|---|
| 53 |  ;               ECD  - DSS Unit IEN
 | 
|---|
| 54 |  ;               ECCSTA-Active or inactive category
 | 
|---|
| 55 |  ;                      A-ctive (default), I-nactive, B-oth
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 |  ;OUTPUTS        RESULTS - Array of categories. Data pieces as follows:-
 | 
|---|
| 58 |  ;               PIECE - Description
 | 
|---|
| 59 |  ;                 1  - Category IEN
 | 
|---|
| 60 |  ;                 2  - Category description
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  N ECL,ECD,ECC,CNT,DATA,ECCSTA
 | 
|---|
| 63 |  D SETENV^ECUMRPC
 | 
|---|
| 64 |  S ECL=$P(ECARY,U),ECD=$P(ECARY,U,2) I (ECL="")!(ECD="") Q
 | 
|---|
| 65 |  S ECCSTA=$P(ECARY,U,3)
 | 
|---|
| 66 |  K ^TMP($J,"ECSCATS")
 | 
|---|
| 67 |  D CATS^ECHECK1
 | 
|---|
| 68 |  M ^TMP($J,"ECSCATS")=ECC
 | 
|---|
| 69 |  S RESULTS=$NA(^TMP($J,"ECSCATS"))
 | 
|---|
| 70 |  Q
 | 
|---|
| 71 | PROC(RESULTS,ECARY) ;
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 |  ;This broker entry point returns an array of procedures for an Event 
 | 
|---|
| 74 |  ;Code screen (file #720.3) based on location, DSS unit, and Category
 | 
|---|
| 75 |  ;        RPC: EC GETECSPROCS
 | 
|---|
| 76 |  ;INPUTS        ECARY  - Contains the following values separated by "^"
 | 
|---|
| 77 |  ;               ECL  - Location IEN
 | 
|---|
| 78 |  ;               ECD  - DSS Unit IEN
 | 
|---|
| 79 |  ;               ECC  - Category IEN
 | 
|---|
| 80 |  ;               ECDT - Procedure Date
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 |  ;OUTPUTS        RESULTS - Array of procedures. Data pieces as follows:-
 | 
|---|
| 83 |  ;               PIECE - Description
 | 
|---|
| 84 |  ;                 1  - EC National Number SPACE Procedure Name SPACE
 | 
|---|
| 85 |  ;                   - [Synonym]
 | 
|---|
| 86 |  ;                 2  - Procedure Code
 | 
|---|
| 87 |  ;                 3  - CPT Code
 | 
|---|
| 88 |  ;                 4  - Default volume (1 if no default volume)
 | 
|---|
| 89 |  ;                 5  - Event code screen IEN
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 |  N ECL,ECD,ECC,CNT,DATA,STR,ECCPT,PX
 | 
|---|
| 92 |  D SETENV^ECUMRPC
 | 
|---|
| 93 |  S ECL=$P(ECARY,U),ECD=$P(ECARY,U,2),ECC=$P(ECARY,U,3) S:ECC="" ECC=0
 | 
|---|
| 94 |  I (ECL="")!(ECD="") Q
 | 
|---|
| 95 |  S ECDT=$P(ECARY,U,4)
 | 
|---|
| 96 |  K ^TMP($J,"ECPRO")
 | 
|---|
| 97 |  D PROS^ECHECK1
 | 
|---|
| 98 |  S CNT=0 F  S CNT=$O(^TMP("ECPRO",$J,CNT)) Q:'CNT  D
 | 
|---|
| 99 |  .S DATA=^TMP("ECPRO",$J,CNT),PX=$P(DATA,U)
 | 
|---|
| 100 |  .S ECCPT=$S(PX["EC":$P($G(^EC(725,+PX,0)),"^",5),1:+PX)
 | 
|---|
| 101 |  .S STR=$P(DATA,U,5)_" "_$P(DATA,U,4)_" ["_$P(DATA,U,3)_"]"_U_PX
 | 
|---|
| 102 |  .S STR=STR_U_ECCPT_U_$S($P(DATA,U,6):+$P(DATA,U,6),1:1)_U_$P(DATA,U,2)
 | 
|---|
| 103 |  .S ^TMP($J,"ECPRO",CNT)=STR
 | 
|---|
| 104 |  S RESULTS=$NA(^TMP($J,"ECPRO"))
 | 
|---|
| 105 |  K ^TMP("ECPRO",$J)
 | 
|---|
| 106 |  Q
 | 
|---|
| 107 | ECPXMOD(RESULTS,ECARY) ;
 | 
|---|
| 108 |  ;
 | 
|---|
| 109 |  ;Broker call returns modifier entries for a CPT Procedure
 | 
|---|
| 110 |  ;        RPC: EC GETPXMODIFIER
 | 
|---|
| 111 |  ;INPUTS   ECARY  - Contains the following values separated by "^"
 | 
|---|
| 112 |  ;          ECCPT - CPT code ien (file #81)
 | 
|---|
| 113 |  ;          ECDT  - Procedure date and time (fileman format)
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 |  ;OUTPUTS  RESULTS - Array of procedure modifiers
 | 
|---|
| 116 |  ;          2-character modifier^modifer name^modifier ien #81.3
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 |  N CNT,SUB,ECCPT,ECDT,DATA,ECMOD
 | 
|---|
| 119 |  D SETENV^ECUMRPC
 | 
|---|
| 120 |  S ECCPT=$P(ECARY,U),ECDT=$P(ECARY,U,2) I ECDT="" D NOW^%DTC S ECDT=%
 | 
|---|
| 121 |  I ECCPT="" Q
 | 
|---|
| 122 |  K ^TMP($J,"ECPXMODS") S (SUB,CNT)=0
 | 
|---|
| 123 |  S DATA=$$CODM^ICPTCOD(ECCPT,"ECMOD","",ECDT) I +DATA<0 Q
 | 
|---|
| 124 |  F  S SUB=$O(ECMOD(SUB)) Q:SUB=""  D
 | 
|---|
| 125 |  . S CNT=CNT+1,^TMP($J,"ECPXMODS",CNT)=SUB_U_ECMOD(SUB)
 | 
|---|
| 126 |  S RESULTS=$NA(^TMP($J,"ECPXMODS"))
 | 
|---|
| 127 |  Q
 | 
|---|
| 128 | PRVDER(RESULTS,ECARY) ;
 | 
|---|
| 129 |  ;remove this rpc before release;JAM 6/4/01
 | 
|---|
| 130 |  ;This broker entry point returns an array of valid providers
 | 
|---|
| 131 |  ;        RPC: EC GETPROVIDER
 | 
|---|
| 132 |  ;INPUTS        ECARY  - Contains the following subscripted elements
 | 
|---|
| 133 |  ;               ECDT  - Procedure date
 | 
|---|
| 134 |  ;
 | 
|---|
| 135 |  ;OUTPUTS        RESULTS - Array of providers. Data pieces as follows:-
 | 
|---|
| 136 |  ;               PIECE - Description
 | 
|---|
| 137 |  ;                IEN of file 200^Provider Name^occupation^specialty^
 | 
|---|
| 138 |  ;                subspecialty
 | 
|---|
| 139 |  ;
 | 
|---|
| 140 |  N IEN,CNT,ECUTN,KEY,USR
 | 
|---|
| 141 |  D SETENV^ECUMRPC
 | 
|---|
| 142 |  S ECDT=$P($G(ECARY),U),ECDT=$S(ECDT="":DT,1:ECDT)
 | 
|---|
| 143 |  K ^TMP($J,"ECPRVDRS") S CNT=0
 | 
|---|
| 144 |  F KEY="PROVIDER" S IEN=0 D
 | 
|---|
| 145 |  .F  S IEN=$O(^XUSEC(KEY,IEN)) Q:'IEN  S USR=$G(^VA(200,IEN,0)) D:USR'=""
 | 
|---|
| 146 |  ..S ECUTN=$$GET^XUA4A72(IEN,ECDT) I +ECUTN'>0 Q
 | 
|---|
| 147 |  ..S CNT=CNT+1,^TMP($J,"ECPRVDRS",CNT)=IEN_U_$P(USR,U)_U_$P(ECUTN,2,4)
 | 
|---|
| 148 |  S RESULTS=$NA(^TMP($J,"ECPRVDRS"))
 | 
|---|
| 149 |  Q
 | 
|---|
| 150 |  ;
 | 
|---|
| 151 | ELIG(RESULTS,ECARY) ;
 | 
|---|
| 152 |  ;
 | 
|---|
| 153 |  ;Broker call returns a list of patient eligibilities
 | 
|---|
| 154 |  ;        RPC: EC GETPATELIG
 | 
|---|
| 155 |  ;INPUTS   ECARY  - Contains the following subscripted elements
 | 
|---|
| 156 |  ;          DFN - Patient ien (file #2)
 | 
|---|
| 157 |  ;
 | 
|---|
| 158 |  ;OUTPUTS  RESULTS - Array of eligibilities
 | 
|---|
| 159 |  ;          primary/secondary elig flag^elig ien^elig description
 | 
|---|
| 160 |  ;
 | 
|---|
| 161 |  N CNT,SUB,DFN,VAEL
 | 
|---|
| 162 |  D SETENV^ECUMRPC
 | 
|---|
| 163 |  S DFN=$P(ECARY,U) I DFN="" Q
 | 
|---|
| 164 |  K ^TMP($J,"ECPATELIG")
 | 
|---|
| 165 |  D ELIG^VADPT I $G(VAEL(1))="" Q
 | 
|---|
| 166 |  S ^TMP($J,"ECPATELIG",1)="1^"_VAEL(1),SUB=0,CNT=1
 | 
|---|
| 167 |  F  S SUB=$O(VAEL(1,SUB)) Q:SUB=""  D
 | 
|---|
| 168 |  . S CNT=CNT+1,^TMP($J,"ECPATELIG",CNT)="0^"_VAEL(1,SUB)
 | 
|---|
| 169 |  S RESULTS=$NA(^TMP($J,"ECPATELIG"))
 | 
|---|
| 170 |  Q
 | 
|---|
| 171 | PRDEFS(RESULTS,ECARY) ;
 | 
|---|
| 172 |  ;
 | 
|---|
| 173 |  ;This broker entry point returns the defaults for procedure data entry
 | 
|---|
| 174 |  ;        RPC: EC GETPRODEFS
 | 
|---|
| 175 |  ;INPUTS        ECARY  - Contains the following values separated by "^"
 | 
|---|
| 176 |  ;               ECL  - Location IEN
 | 
|---|
| 177 |  ;               ECD  - DSS Unit IEN
 | 
|---|
| 178 |  ;               ECC  - Category IEN
 | 
|---|
| 179 |  ;
 | 
|---|
| 180 |  ;OUTPUTS        RESULTS - Data pieces as follows:-
 | 
|---|
| 181 |  ;               PIECE - Description
 | 
|---|
| 182 |  ;                 1  - Associated Clinic IEN
 | 
|---|
| 183 |  ;                 2  - Associated Clinic
 | 
|---|
| 184 |  ;                 3  - Medical Specialty IEN
 | 
|---|
| 185 |  ;                 4  - Medical Specialty
 | 
|---|
| 186 |  ;
 | 
|---|
| 187 |  N ECL,ECD,ECC,ECP,IEN,ASC,ASCNM,MEDSP,MEDSPNM,ECCH
 | 
|---|
| 188 |  D SETENV^ECUMRPC
 | 
|---|
| 189 |  S ECL=$P(ECARY,U),ECD=$P(ECARY,U,2),ECC=$P(ECARY,U,3),ECP=$P(ECARY,U,4)
 | 
|---|
| 190 |  S:ECC="" ECC=0 I (ECL="")!(ECD="") Q
 | 
|---|
| 191 |  S (ASCNM,MEDSPNM)="",ECCH=ECL_"-"_ECD_"-"_ECC_"-"_ECP
 | 
|---|
| 192 |  I '$D(^ECJ("B",ECCH)) Q
 | 
|---|
| 193 |  S IEN=$O(^ECJ("B",ECCH,0)) I IEN="" Q
 | 
|---|
| 194 |  S ASC=$P($G(^ECJ(IEN,"PRO")),U,4) I ASC D
 | 
|---|
| 195 |  .S ASCNM=$$GET1^DIQ(44,ASC,.01,"I")
 | 
|---|
| 196 |  S MEDSP=$P($G(^ECD(ECD,0)),U,3) I MEDSP D 
 | 
|---|
| 197 |  .S MEDSPNM=$$GET1^DIQ(723,MEDSP,.01,"I")
 | 
|---|
| 198 |  S RESULTS=ASC_U_ASCNM_U_MEDSP_U_MEDSPNM
 | 
|---|
| 199 |  Q
 | 
|---|
| 200 | PATPROC(RESULTS,ECARY) ;
 | 
|---|
| 201 |  ;
 | 
|---|
| 202 |  ;Broker call returns the entries from EVENT CAPTURE PATIENT FILE #721
 | 
|---|
| 203 |  ;        RPC: EC GETPATPROCS
 | 
|---|
| 204 |  ;INPUTS   ECARY - Contains the following values separated by "^"
 | 
|---|
| 205 |  ;          ECLOC - Location ien
 | 
|---|
| 206 |  ;          ECPAT - Patient DFN ien
 | 
|---|
| 207 |  ;          ECUNT - DSS unit ien
 | 
|---|
| 208 |  ;          ECSD  - Start Date
 | 
|---|
| 209 |  ;          ECED  - End Date
 | 
|---|
| 210 |  ;
 | 
|---|
| 211 |  ;OUTPUTS  RESULTS - Array of Event Capture Patient entries contain
 | 
|---|
| 212 |  ;          721 IEN^Procedure date and time^Category^Procedure^Volume^
 | 
|---|
| 213 |  ;          Provider^ordering section^associated clinic^primary diagnoses
 | 
|---|
| 214 |  ;          ^Provider IEN
 | 
|---|
| 215 |  ;
 | 
|---|
| 216 |  N IEN,CNT,ECV,ECLOC,ECUNT,ECPAT,PX,NODE,DATA,PDT,PDX,PND,PDXD,CAT,ECI
 | 
|---|
| 217 |  N ORS,PRV,PRO,PROV,ECU
 | 
|---|
| 218 |  D SETENV^ECUMRPC
 | 
|---|
| 219 |  S ECV="ECLOC^ECPAT^ECUNT^ECSD^ECED"
 | 
|---|
| 220 |  D PARSE(ECV,ECARY) I (ECLOC="")!(ECPAT="")!(ECUNT="") Q
 | 
|---|
| 221 |  K ^TMP($J,"ECPATPX")
 | 
|---|
| 222 |  S ECSD=$G(ECSD,DT),ECED=$G(ECED,DT)
 | 
|---|
| 223 |  S %DT="X" F ECI="ECSD","ECED" S X=@ECI D ^%DT S @ECI=Y
 | 
|---|
| 224 |  K X,Y
 | 
|---|
| 225 |  S ECSD=$S(ECSD=-1:DT,1:ECSD)-.0001,ECED=$S(ECED=-1:DT,1:ECED)+.9999
 | 
|---|
| 226 |  Q:ECED'>ECSD  S PDT=ECSD,CNT=0
 | 
|---|
| 227 |  F  S PDT=$O(^ECH("ADT",ECLOC,ECPAT,ECUNT,PDT)) Q:'PDT!(PDT>ECED)  D
 | 
|---|
| 228 |  . S IEN=0 F  S IEN=$O(^ECH("ADT",ECLOC,ECPAT,ECUNT,PDT,IEN)) Q:'IEN  D
 | 
|---|
| 229 |  . . S NODE=$G(^ECH(IEN,0)),PND=$G(^ECH(IEN,"P")),PX=$P(NODE,U,9)
 | 
|---|
| 230 |  . . Q:NODE=""  S (PRV,CAT,ORS,ASC,PDXD)="",PDX=$P(PND,U,2)
 | 
|---|
| 231 |  . . I PX["EC" D
 | 
|---|
| 232 |  . . . S PRO=$G(^EC(725,$P(PX,";"),0)),PX=$P(PRO,U,2)_" "_$P(PRO,U)
 | 
|---|
| 233 |  . . E  S PRO=$$CPT^ICPTCOD($P(PX,";"),PDT) S PX=$P(PRO,U,2)_" "_$P(PRO,U,3)
 | 
|---|
| 234 |  . . S:$P(NODE,U,8) CAT=$$GET1^DIQ(726,$P(NODE,U,8),.01,"I")
 | 
|---|
| 235 |  . . K PROV S ECU=$$GETPPRV^ECPRVMUT(IEN,.PROV),PRV=$S(ECU:"UNKNOWN",1:$P(PROV,"^",2)),ECU=$S('ECU:+PROV,1:"")
 | 
|---|
| 236 |  . . S:$P(NODE,U,12) ORS=$$GET1^DIQ(723,$P(NODE,U,12),.01,"I")
 | 
|---|
| 237 |  . . S:$P(NODE,U,19) ASC=$$GET1^DIQ(44,$P(NODE,U,19),.01,"I")
 | 
|---|
| 238 |  . . S:PDX PDXD=$$ICDDX^ICDCODE(PDX,PDT),PDXD=$P(PDXD,U,2)_" "_$P(PDXD,U,4)
 | 
|---|
| 239 |  . . S DATA=$P(NODE,U)_U_$$FMTE^XLFDT($P(NODE,U,3),"2F")_U_CAT_U_PX
 | 
|---|
| 240 |  . . S DATA=DATA_U_$P(NODE,U,10)_U_PRV_U_ORS_U_ASC_U_PDXD_U_ECU
 | 
|---|
| 241 |  . . S CNT=CNT+1,^TMP($J,"ECPATPX",CNT)=DATA
 | 
|---|
| 242 |  S RESULTS=$NA(^TMP($J,"ECPATPX"))
 | 
|---|
| 243 |  Q
 | 
|---|
| 244 | PARSE(ECV,ECARY) ;Parse Variable
 | 
|---|
| 245 |  N I
 | 
|---|
| 246 |  F I=1:1:$L(ECARY,U) S @$P(ECV,U,I)=$P(ECARY,U,I)
 | 
|---|
| 247 |  Q
 | 
|---|