| 1 | ECUMRPC ;ALB/JAM;Event Capture Management Broker Utilities ; 10/4/00 4:58pm | 
|---|
| 2 | ;;2.0; EVENT CAPTURE ;**25,32,33**;8 May 96 | 
|---|
| 3 | ECUSR(RESULTS,ECARY) ; | 
|---|
| 4 | ; | 
|---|
| 5 | ;This broker entry point returns an array of users with access to a | 
|---|
| 6 | ;DSS unit in file 200. | 
|---|
| 7 | ;        RPC: EC GETDSSUNITUSRS | 
|---|
| 8 | ;INPUTS         ECARY - Contains the following subscripted elements | 
|---|
| 9 | ;               UNT   - DSS unit IEN | 
|---|
| 10 | ; | 
|---|
| 11 | ;OUTPUTS        RESULTS - The array of users. Data pieces as follows:- | 
|---|
| 12 | ;               PIECE - Description | 
|---|
| 13 | ;                 1     NAME of user | 
|---|
| 14 | ;                 2     DUZ or IEN of file 200 | 
|---|
| 15 | ; | 
|---|
| 16 | N UNT,EDUZ,CNT | 
|---|
| 17 | D SETENV | 
|---|
| 18 | S UNT=$P(ECARY,U) Q:UNT="" | 
|---|
| 19 | K ^TMP($J,"ECUSR") S (EDUZ,CNT)=0 | 
|---|
| 20 | F  S EDUZ=$O(^VA(200,EDUZ)) Q:'EDUZ  I $D(^VA(200,EDUZ,"EC",UNT,0)) D | 
|---|
| 21 | . S CNT=CNT+1,^TMP($J,"ECUSR",CNT)=$P(^VA(200,EDUZ,0),U)_U_EDUZ | 
|---|
| 22 | S RESULTS=$NA(^TMP($J,"ECUSR")) | 
|---|
| 23 | Q | 
|---|
| 24 | ; | 
|---|
| 25 | ECLOC(RESULTS) ; | 
|---|
| 26 | ; | 
|---|
| 27 | ;This broker entry point returns all active Event Capture locations | 
|---|
| 28 | ;        RPC: EC GETECLOC | 
|---|
| 29 | ; | 
|---|
| 30 | ;OUTPUTS        RESULTS - The array of active Event Capture locations. | 
|---|
| 31 | ;               PIECE - Description | 
|---|
| 32 | ;                 1     Location description | 
|---|
| 33 | ;                 2     LOC IEN | 
|---|
| 34 | N LOC | 
|---|
| 35 | D SETENV | 
|---|
| 36 | K ^TMP($J,"ECLOC") | 
|---|
| 37 | D GETLOC^ECL(.LOC) M ^TMP($J,"ECLOC")=LOC | 
|---|
| 38 | S RESULTS=$NA(^TMP($J,"ECLOC")) | 
|---|
| 39 | Q | 
|---|
| 40 | ECSCN(RESULTS,ECARY) ; | 
|---|
| 41 | ; | 
|---|
| 42 | ;Broker call returns the entries from EC EVENT CODE SCREENS FILE #720.3 | 
|---|
| 43 | ;        RPC: GETECSCREEN | 
|---|
| 44 | ;INPUTS   ECARY   - Contains the following subscripted elements | 
|---|
| 45 | ;          STAT   - Active or inactive Event Code Screens | 
|---|
| 46 | ;                   A-ctive (default), I-nactive, B-oth | 
|---|
| 47 | ;          LOCIEN - Location IEN (optional) | 
|---|
| 48 | ;          DSSIEN - DSS IEN (optional) | 
|---|
| 49 | ; | 
|---|
| 50 | ;OUTPUTS  RESULTS - Array of EC screens, contains | 
|---|
| 51 | ;          720.3 ien^location description^DSS Unit description^Category | 
|---|
| 52 | ;          desription^Procedure 5 digit code and description | 
|---|
| 53 | ; | 
|---|
| 54 | N STAT,IEN,CNT,ACT,FL,V,EI,ECSCR,CLN,LOC,UNT,CAT,PX,NODE,LOCIEN,DSSIEN | 
|---|
| 55 | D SETENV K ^TMP($J,"ECSCN") | 
|---|
| 56 | S STAT=$P($G(ECARY,"A"),U),LOCIEN=$P($G(ECARY),U,2),FL="4,724,726" | 
|---|
| 57 | S V="LOC,UNT,CAT",(IEN,CNT)=0,DSSIEN=$P(ECARY,U,3) | 
|---|
| 58 | F  S IEN=$O(^ECJ(IEN)) Q:'IEN  S NODE=$G(^ECJ(IEN,0)) I NODE'="" D | 
|---|
| 59 | .S ACT=$P(NODE,U,2),ECSCR=$TR($P(NODE,U),"-;,","^^") | 
|---|
| 60 | .I $S(STAT="A"&(ACT'=""):1,STAT="I"&(ACT=""):1,1:0) Q | 
|---|
| 61 | .I LOCIEN'="",LOCIEN'=$P(ECSCR,U) Q | 
|---|
| 62 | .I DSSIEN'="",DSSIEN'=$P(ECSCR,U,2) Q | 
|---|
| 63 | .F EI=1:1:3 D | 
|---|
| 64 | ..S @$P(V,",",EI)=$$GET1^DIQ($P(FL,",",EI),$P(ECSCR,U,EI),.01,"E"),PX="" | 
|---|
| 65 | .I $P(ECSCR,U,5)["EC" D | 
|---|
| 66 | ..S PRO=$G(^EC(725,$P(ECSCR,U,4),0)),PX=$P(PRO,U,2)_" "_$P(PRO,U) | 
|---|
| 67 | .E  S PRO=$$CPT^ICPTCOD($P(ECSCR,U,4)) S PX=$P(PRO,U,2)_" "_$P(PRO,U,3) | 
|---|
| 68 | .S CNT=CNT+1,^TMP($J,"ECSCN",CNT)=IEN_U_LOC_U_UNT_U_CAT_U_PX | 
|---|
| 69 | S RESULTS=$NA(^TMP($J,"ECSCN")) | 
|---|
| 70 | Q | 
|---|
| 71 | ECSDTLS(RESULTS,ECARY) ; | 
|---|
| 72 | ; | 
|---|
| 73 | ;Broker call returns details on an Event Code Screen from EC EVENT | 
|---|
| 74 | ;CODE SCREENS FILE #720.3 | 
|---|
| 75 | ;        RPC: GETECSDETAIL | 
|---|
| 76 | ;INPUTS   ECARY  - Contains the following data | 
|---|
| 77 | ;                   Event code screen IEN | 
|---|
| 78 | ; | 
|---|
| 79 | ;OUTPUTS  RESULTS - Details of EC screen, contains | 
|---|
| 80 | ;          720.3 ien^event code screen key^synonym^volume^associated | 
|---|
| 81 | ;          clinic^Procedure reason indicator^event code screen status | 
|---|
| 82 | ;          flag (y-active,n-inactive)^Send To PCE | 
|---|
| 83 | ; | 
|---|
| 84 | N NODE,PRO,CLN,STAT,STR,SPCE | 
|---|
| 85 | Q:$G(ECARY)=""  Q:'$D(^ECJ(ECARY,0)) | 
|---|
| 86 | D SETENV | 
|---|
| 87 | S NODE=^ECJ(ECARY,0),PRO=$G(^ECJ(ECARY,"PRO")),SPCE=$P(NODE,"-",2) | 
|---|
| 88 | S SPCE=$P($G(^ECD(SPCE,0)),U,14),SPCE=$S(SPCE="O":1,SPCE="A":1,1:0) | 
|---|
| 89 | S STAT=$S($P(NODE,U,2)="":"Y",1:"N") | 
|---|
| 90 | S:$P(PRO,U,4)'="" CLN=$$GET1^DIQ(44,$P(PRO,U,4),.01,"E") | 
|---|
| 91 | S STR=ECARY_U_$P(NODE,U)_U_$P(PRO,U,2,3)_U_$G(CLN)_U_$P(PRO,U,5)_U_STAT | 
|---|
| 92 | S RESULTS=STR_U_SPCE | 
|---|
| 93 | Q | 
|---|
| 94 | ; | 
|---|
| 95 | DSSECS(RESULTS,ECARY) ; | 
|---|
| 96 | ; | 
|---|
| 97 | ;Broker call returns a list of Event Code Screen from EC EVENT CODE | 
|---|
| 98 | ;SCREENS FILE #720.3 based on a DSS Unit | 
|---|
| 99 | ;        RPC: EC GETDSSECS | 
|---|
| 100 | ;INPUTS   ECARY  - Contains the following data | 
|---|
| 101 | ;          ECD   - DSS Unit IEN | 
|---|
| 102 | ;          ECL   - Location | 
|---|
| 103 | ; | 
|---|
| 104 | ;OUTPUTS  RESULTS - Data on EC screen, contains | 
|---|
| 105 | ;          720.3 ien^Procedure 5 digit code and description^Location^ | 
|---|
| 106 | ;          status(Y-active, N-inactive)^Category description^synonym | 
|---|
| 107 | ; | 
|---|
| 108 | N NODE,PRO,STAT,CNT,ECD,LOC,CAT,IEN,PX,PN,CATD,LOCDS,ECL,ECSYN | 
|---|
| 109 | S ECD=$P(ECARY,U),ECL=$P(ECARY,U,2) I ECD="",ECL="" Q | 
|---|
| 110 | D SETENV K ^TMP($J,"ECDSSECS") | 
|---|
| 111 | S (CNT,LOC)=0 I ECL'="" S LOC=ECL-1 | 
|---|
| 112 | F  S LOC=$O(^ECJ("AP",LOC)) Q:'LOC  S CAT=""  Q:ECL&(ECL'=LOC)  D | 
|---|
| 113 | .I ECD'="" D:$D(^ECJ("AP",LOC,ECD)) GETSCN Q | 
|---|
| 114 | .S ECD=0 F  S ECD=$O(^ECJ("AP",LOC,ECD)) Q:'ECD  D GETSCN | 
|---|
| 115 | S RESULTS=$NA(^TMP($J,"ECDSSECS")) | 
|---|
| 116 | Q | 
|---|
| 117 | GETSCN F  S CAT=$O(^ECJ("AP",LOC,ECD,CAT)) Q:CAT=""  S PX="" D | 
|---|
| 118 | .F  S PX=$O(^ECJ("AP",LOC,ECD,CAT,PX)) Q:PX=""  S IEN=0 D | 
|---|
| 119 | ..F  S IEN=$O(^ECJ("AP",LOC,ECD,CAT,PX,IEN)) Q:'IEN  D | 
|---|
| 120 | ...S NODE=$G(^ECJ(IEN,0)) I NODE="" Q | 
|---|
| 121 | ...S PRO=$G(^ECJ(IEN,"PRO")),ECSYN=$P(PRO,U,2),PN=$P($P(PRO,U),";") | 
|---|
| 122 | ...I PN="" Q | 
|---|
| 123 | ...I $P(PRO,U)["EC" S PN=$G(^EC(725,PN,0)),PRO=$P(PN,U,2)_" "_$P(PN,U) | 
|---|
| 124 | ...E  S PN=$$CPT^ICPTCOD(PN) S PRO=$P(PN,U,2)_" "_$P(PN,U,3) | 
|---|
| 125 | ...S STAT=$S($P(NODE,U,2)'="":"No",1:"Yes") | 
|---|
| 126 | ...S CATD=$S('CAT:"None",1:$P($G(^EC(726,CAT,0)),U)) | 
|---|
| 127 | ...S LOCDS=$$GET1^DIQ(4,LOC,.01,"I"),CNT=CNT+1 | 
|---|
| 128 | ...S ^TMP($J,"ECDSSECS",CNT)=IEN_U_PRO_U_LOCDS_U_STAT_U_CATD_U_ECSYN | 
|---|
| 129 | Q | 
|---|
| 130 | ; | 
|---|
| 131 | ECPXRS(RESULTS,ECARY) ; | 
|---|
| 132 | ; | 
|---|
| 133 | ;Broker call returns entries for Procedure reasons linked to EC screen. | 
|---|
| 134 | ;        RPC: EC GETPXREASON | 
|---|
| 135 | ;INPUTS   ECARY  - Contains the following subscripted elements | 
|---|
| 136 | ;          ECSCR - Event code screen ien (file #720.3) | 
|---|
| 137 | ; | 
|---|
| 138 | ;OUTPUTS  RESULTS - Array of procedure reasons for EC screen | 
|---|
| 139 | ;          Procedure reason^procedure reason ien #720.4^Event Code | 
|---|
| 140 | ;          screens/procedure reason link ien #720.5 | 
|---|
| 141 | ; | 
|---|
| 142 | N RSN,IEN,CNT,RIEN | 
|---|
| 143 | S ECSCR=$G(ECARY,"") I ECSCR="" Q | 
|---|
| 144 | D SETENV | 
|---|
| 145 | K ^TMP($J,"ECPXREAS") S (IEN,CNT)=0 | 
|---|
| 146 | F  S IEN=$O(^ECL("AD",ECSCR,IEN)) Q:'IEN  D | 
|---|
| 147 | . S RSN=$G(^ECR(IEN,0)),RIEN=$O(^ECL("AD",ECSCR,IEN,0)) Q:'$P(RSN,U,2) | 
|---|
| 148 | . S CNT=CNT+1,^TMP($J,"ECPXREAS",CNT)=$P(RSN,U)_U_IEN_U_RIEN | 
|---|
| 149 | S RESULTS=$NA(^TMP($J,"ECPXREAS")) | 
|---|
| 150 | Q | 
|---|
| 151 | ; | 
|---|
| 152 | ECNATPX(RESULTS,ECARY) ; | 
|---|
| 153 | ; | 
|---|
| 154 | ;Broker call returns EC national & local  Procedures from file #725. | 
|---|
| 155 | ;        RPC: EC GETNATPX | 
|---|
| 156 | ;INPUTS   ECARY  - Contains the following subscripted elements | 
|---|
| 157 | ;          ECPX - Procedures to output, L- local, N- National, B- Both | 
|---|
| 158 | ;          STAT - Active or inactive EC Nat Codes | 
|---|
| 159 | ;                 A-ctive (default), I-nactive, B-oth | 
|---|
| 160 | ; | 
|---|
| 161 | ;OUTPUTS  RESULTS - Array of EC local procedures | 
|---|
| 162 | ;          ien #725^Procedure name^national number^inactive date^ | 
|---|
| 163 | ;          synonym^CPT ien^CPT code^CPT Short Name | 
|---|
| 164 | ; | 
|---|
| 165 | N STAT,IEN,STR,CNT,ACT,CPT,CPTDAT,ECPX | 
|---|
| 166 | D SETENV | 
|---|
| 167 | S ECPX=$P(ECARY,U),STAT=$P(ECARY,U,2) | 
|---|
| 168 | S:ECPX="" ECPX="L" S:STAT="" STAT="A" | 
|---|
| 169 | K ^TMP($J,"ECLOCPX") | 
|---|
| 170 | S IEN=$S(ECPX="L":90000,1:0),CNT=0 | 
|---|
| 171 | F  S IEN=$O(^EC(725,IEN)) Q:'IEN!((ECPX="N")&(IEN>90000))  D | 
|---|
| 172 | . S STR=$G(^EC(725,IEN,0)) I STR="" Q | 
|---|
| 173 | . S ACT=$P(STR,U,3),CPT=$P(STR,U,5) | 
|---|
| 174 | . I $S(STAT="A"&(ACT'=""):1,STAT="I"&(ACT=""):1,1:0) Q | 
|---|
| 175 | . S CPTDAT=$S(CPT="":"",1:$$CPT^ICPTCOD(CPT)) | 
|---|
| 176 | . S CNT=CNT+1,^TMP($J,"ECLOCPX",CNT)=IEN_U_STR_U_$P(CPTDAT,U,2,3) | 
|---|
| 177 | S RESULTS=$NA(^TMP($J,"ECLOCPX")) | 
|---|
| 178 | Q | 
|---|
| 179 | SETENV ;set environment variables for RPC broker | 
|---|
| 180 | I '$G(DUZ) D | 
|---|
| 181 | . S DUZ=.5,DUZ(0)="@",U="^",DTIME=300 | 
|---|
| 182 | . D NOW^%DTC S DT=X | 
|---|
| 183 | Q | 
|---|