[623] | 1 | ECXEC ;ALB/JAP,BIR/JLP,PTD-DSS Event Capture Extract [ 02/14/97 2:26 PM ] ; 12/2/04 12:35pm
|
---|
| 2 | ;;3.0;DSS EXTRACTS;**11,8,13,24,27,33,39,46,49,71,89,92**;Dec 22, 1997;Build 30
|
---|
| 3 | BEG ;entry point from option
|
---|
| 4 | I '$D(^ECH) W !,"Event Capture is not initialized",!! Q
|
---|
| 5 | D SETUP I ECFILE="" Q
|
---|
| 6 | D ^ECXTRAC,^ECXKILL
|
---|
| 7 | Q
|
---|
| 8 | START ;begin EC extract
|
---|
| 9 | N X,Y,ECDCM,ECXNPRFI
|
---|
| 10 | S ECED=ECED+.3,ECLL=0
|
---|
| 11 | K ^TMP("EC",$J)
|
---|
| 12 | F S ECLL=$O(^ECH("AC1",ECLL)),ECD=ECSD-.1 Q:'ECLL D
|
---|
| 13 | .F S ECD=$O(^ECH("AC1",ECLL,ECD)),ECDA=0 Q:(ECD>ECED)!('ECD) D
|
---|
| 14 | ..F S ECDA=$O(^ECH("AC1",ECLL,ECD,ECDA)) Q:'ECDA D UPDATE
|
---|
| 15 | Q
|
---|
| 16 | ;
|
---|
| 17 | UPDATE ;sets record and updates counters
|
---|
| 18 | S ECCH=^ECH(ECDA,0),ECL=$P(ECCH,U,4),ECXDFN=$P(ECCH,U,2)
|
---|
| 19 | S ECXPDIV=$$RADDIV^ECXDEPT(ECL) ;Get production division from file 4
|
---|
| 20 | S ECDT=$P(ECCH,U,3),ECM=$P(ECCH,U,6),ECC=$P(ECCH,U,8)
|
---|
| 21 | Q:'$$PATDEM^ECXUTL2(ECXDFN,ECDT,"1;3;5;")
|
---|
| 22 | S ECTM=$$ECXTIME^ECXUTL(ECDT),ECP=$P(ECCH,U,9)
|
---|
| 23 | Q:ECP']""
|
---|
| 24 | S ECO=$P(ECCH,U,12),ECV=$P(ECCH,U,10),ECDU=$P(ECCH,U,7)
|
---|
| 25 | S ECXUNIT=$G(^ECD(ECDU,0)),ECCS=+$P(ECXUNIT,U,4),ECDCM=$P(ECXUNIT,U,5)
|
---|
| 26 | S ECXDSSP="",ECXDSSD=$E(ECDCM,1,10),ECUSTOP=$P(ECXUNIT,U,10),ECUPCE=$P(ECXUNIT,U,14)
|
---|
| 27 | S ICD9=$P($G(^ECH(ECDA,"P")),U,2) S:ICD9="" ICD9=" "
|
---|
| 28 | S ECXICD9=$P($G(^ICD9(ICD9,0)),U)
|
---|
| 29 | F I=1:1:4 S @("ECXICD9"_I)=""
|
---|
| 30 | S (CNT,I)=0
|
---|
| 31 | F S CNT=$O(^ECH(ECDA,"DX",CNT)) Q:'CNT D Q:I>3
|
---|
| 32 | .S ICD9=$P($G(^ECH(ECDA,"DX",CNT,0)),U) D:ICD9'=""
|
---|
| 33 | ..S I=I+1,@("ECXICD9"_I)=$P($G(^ICD9(ICD9,0)),U)
|
---|
| 34 | ;derivation of dss identifier depends on whether dss unit is
|
---|
| 35 | ;set to send data to pce
|
---|
| 36 | S ECAC=$P($G(ECCH),U,19)
|
---|
| 37 | ;if this is a record that 'goes to pce', then get the dss identifier
|
---|
| 38 | ;from the clinic stop codes
|
---|
| 39 | S (ECAC1S,ECAC2S)="000"
|
---|
| 40 | I ECUPCE="A"!(ECUPCE="O"&(ECXA="O")) D
|
---|
| 41 | .D:+ECAC
|
---|
| 42 | ..S ECAC1=$P($G(^SC(+ECAC,0)),U,7),ECAC2=$P($G(^(0)),U,18)
|
---|
| 43 | ..I 'ECAC2 S ECAC2S="000"
|
---|
| 44 | ..I 'ECAC1 S (ECAC1S,ECAC2S)="000" Q
|
---|
| 45 | ..S ECAC1S=$P($G(^DIC(40.7,+ECAC1,0)),U,2)
|
---|
| 46 | ..S ECAC2S=$P($G(^DIC(40.7,+ECAC2,0)),U,2)
|
---|
| 47 | ..S ECAC1S=$$RJ^XLFSTR(ECAC1S,3,0),ECAC2S=$$RJ^XLFSTR(ECAC2S,3,0)
|
---|
| 48 | .S:'ECAC (ECAC1S,ECAC2S)="000"
|
---|
| 49 | ;if this record doesn't go to pce, then get the dss identifier
|
---|
| 50 | ;from the dss unit
|
---|
| 51 | I ECUPCE=""!(ECUPCE="N")!(ECUPCE="O"&(ECXA="I")) D
|
---|
| 52 | .I +ECUSTOP D
|
---|
| 53 | ..S ECAC1S=$P($G(^DIC(40.7,+ECUSTOP,0)),U,2)
|
---|
| 54 | ..S ECAC1S=$$RJ^XLFSTR(ECAC1S,3,0),ECAC2S="000"
|
---|
| 55 | .I 'ECUSTOP D
|
---|
| 56 | ..S (ECAC1S,ECAC2S)="000"
|
---|
| 57 | S ECDSS=ECAC1S_ECAC2S
|
---|
| 58 | I ECXLOGIC>2003 I "^18^23^24^36^41^65^94^"[("^"_ECXTS_"^") S ECDSS=$$TSMAP^ECXUTL4(ECXTS)
|
---|
| 59 | S ECXDIV=""
|
---|
| 60 | ;
|
---|
| 61 | ;- Ord Div, Contrct St/End Dates, Contrct Type placeholders for FY2002
|
---|
| 62 | S (ECXODIV,ECXCSDT,ECXCEDT,ECXCTYP)=""
|
---|
| 63 | ;setup provider(s) as'2'_ien
|
---|
| 64 | S (ECU1A,ECU2A,ECU3A,ECU1NPI,ECU2NPI,ECU3NPI,ECXPPC1,ECXPPC2,ECXPPC3)=""
|
---|
| 65 | S (ECU1,ECU2,ECU3)=""
|
---|
| 66 | K ECXPRV S ECXPROV=$$GETPRV^ECPRVMUT(ECDA,.ECXPRV) I ECXPROV Q
|
---|
| 67 | F I=1:1:3 S Y=$O(ECXPRV("")) I Y'="" S @("ECU"_I)=+ECXPRV(Y) K ECXPRV(Y)
|
---|
| 68 | S:$L(ECU1) ECXPPC1=$$PRVCLASS^ECXUTL(ECU1,ECDT),ECU1A="2"_$P(ECU1,";")
|
---|
| 69 | S:$L(ECU2) ECXPPC2=$$PRVCLASS^ECXUTL(ECU2,ECDT),ECU2A="2"_$P(ECU2,";")
|
---|
| 70 | S:$L(ECU3) ECXPPC3=$$PRVCLASS^ECXUTL(ECU3,ECDT),ECU3A="2"_$P(ECU3,";")
|
---|
| 71 | ;change for version 2 where ECP is a variable pointer and we want to
|
---|
| 72 | ;expand it category = category or null if stored as 0
|
---|
| 73 | D:ECP[";"
|
---|
| 74 | .S ECP=$S(ECP["ICPT":$P(^ICPT(+ECP,0),U)_"01",ECP<90000:$P(^EC(725,+ECP,0),U,2)_"N",1:$P(^EC(725,+ECP,0),U,2)_"L"),ECC=$S(ECC:ECC,1:"")
|
---|
| 75 | ;pick up EC to PCE data from "P" in File 721
|
---|
| 76 | S ECPCE=$G(^ECH(ECDA,"P")),ECPCE1=$P(ECPCE,U),ECPCE2=$P(ECPCE,U,2)
|
---|
| 77 | S ECPCE7=$S($P(ECPCE,U,7)=1:"Y",1:"N")
|
---|
| 78 | S ECXCMOD=""
|
---|
| 79 | I $D(^ECH(ECDA,"MOD")) D
|
---|
| 80 | .S MOD=0,M=""
|
---|
| 81 | .F S MOD=$O(^ECH(ECDA,"MOD",MOD)) Q:'MOD S M=$P(^(MOD,0),U) D
|
---|
| 82 | ..I M S ECXCMOD=ECXCMOD_M_";"
|
---|
| 83 | .K MOD,M
|
---|
| 84 | S:ECP?1.N ECP=$$CPT^ECXUTL3($E(ECP,1,5),"",ECV)
|
---|
| 85 | S ECXCPT=$$CPT^ECXUTL3(ECPCE1,ECXCMOD,ECV)
|
---|
| 86 | ;
|
---|
| 87 | ;- Observation Patient Indicator (YES/NO)
|
---|
| 88 | S ECXOBS=$$OBSPAT^ECXUTL4(ECXA,ECXTS,ECDSS)
|
---|
| 89 | ;
|
---|
| 90 | ;- CNH status (YES/NO)
|
---|
| 91 | S ECXCNH=$$CNHSTAT^ECXUTL4(ECXDFN)
|
---|
| 92 | ;
|
---|
| 93 | ;- encounter classification
|
---|
| 94 | S (ECXAO,ECXECE,ECXHNC,ECXMIL,ECXIR)="",ECXVISIT=$P(ECCH,U,21)
|
---|
| 95 | I ECXVISIT'="" D
|
---|
| 96 | .D VISIT^ECXSCX1(ECXDFN,ECXVISIT,.ECXVIST,.ECXERR) I ECXERR K ECXERR Q
|
---|
| 97 | .S ECXAO=$G(ECXVIST("AO")),ECXECE=$G(ECXVIST("PGE"))
|
---|
| 98 | .S ECXHNC=$G(ECXVIST("HNC")),ECXMIL=$G(ECXVIST("MST")),ECXIR=$G(ECXVIST("IR"))
|
---|
| 99 | ; - Head and Neck Cancer Indicator
|
---|
| 100 | S ECXHNCI=$$HNCI^ECXUTL4(ECXDFN)
|
---|
| 101 | ;
|
---|
| 102 | ; - Get national patient record flag Indicator if exist
|
---|
| 103 | D NPRF^ECXUTL5
|
---|
| 104 | ;
|
---|
| 105 | ; - If no encounter number don't file record
|
---|
| 106 | S ECXENC=$$ENCNUM^ECXUTL4(ECXA,ECXSSN,ECXADMDT,ECDT,ECXTS,ECXOBS,ECHEAD,ECDSS,ECCS)
|
---|
| 107 | D:ECXENC'="" FILE
|
---|
| 108 | Q
|
---|
| 109 | ;
|
---|
| 110 | FILE ;file record in #727.815
|
---|
| 111 | ;node0
|
---|
| 112 | ;ecode=inst ECL^dfn ECXDFN^ssn ECXSSN^name ECXPNM^i/o status ECXA^day^
|
---|
| 113 | ;DSS unit ECDU^category ECC^procedure ECP^volume ECV^
|
---|
| 114 | ;cost center ECCS^ordering sec ECO^section ECM^
|
---|
| 115 | ;provider ECU1A^prov per cls ECXPPC1^prov 2 ECU2A^prov#2 per cls ECXPPC2
|
---|
| 116 | ;^prov 3 ECU3A^prov#3 per cls ECXPPC3^^mov # ECXMN^treat spec ECXTS
|
---|
| 117 | ;^time ECTM^primary care team ECPTTM^primary care provider ECPTPR
|
---|
| 118 | ;^pce cpt code (ECXCPT)^primary icd-9 code ECXICD9^secondary icd-9
|
---|
| 119 | ;ECXICD91^secondary icd-9 ECXICD92^secondary icd-9 ECXICD93^secondary
|
---|
| 120 | ;icd-9 ECXICD94^agent orange ECXAST^radiation exposure ECXRST^
|
---|
| 121 | ;environmental contaminants ECXEST^service connected ECPTPR^sent to pce
|
---|
| 122 | ;ECPCE7^^dss identifier ECDSS^dss dept
|
---|
| 123 | ;node1
|
---|
| 124 | ;mpi ECXMPI^dss dept ECXDSSD^provider npi ECXPRV2^
|
---|
| 125 | ;provider #2 npi ECU2NPI^provider #3 npi ECU3NPI^^
|
---|
| 126 | ;pc provider npi ECPTNPI^pc prov person class ECCLAS^
|
---|
| 127 | ;assoc pc prov ECASPR^assoc pc prov person class ECCLAS2^
|
---|
| 128 | ;assoc pc prov npi ECASNPI^
|
---|
| 129 | ;divison ECXDIV^mst status ECXMST^dom ECXDOM^date of birth ECXDOB^
|
---|
| 130 | ;enrollment category ECXCAT^ enrollment status ECXSTAT^enrollment
|
---|
| 131 | ;priority ECXPRIOR^period of service ECXPOS^purple heart indicator
|
---|
| 132 | ;ECXPHI^observ pat ind ECXOBS^encounter num ECXENC^
|
---|
| 133 | ;ao loc ECXAOL^ord div ECXODIV^contr st dt ECXCSDT^
|
---|
| 134 | ;contr end dt ECXCEDT^contr typ ECXCTYP^CNH stat ECXCNH^
|
---|
| 135 | ;production division ECXPDIV^eligibility ECXELIG^
|
---|
| 136 | ;head & neck cancer ind. ECXHNCI^ethnicity ECXETH^race1 ECXRAC1
|
---|
| 137 | ;enrollment location ECXENRL^^enrollment priority
|
---|
| 138 | ;ECXPRIOR_enrollment subgroup ECXSBGRP^user enrollee ECXUESTA^patient
|
---|
| 139 | ;type ECXPTYPE^combat vet elig ECXCVE^combat vet elig end date
|
---|
| 140 | ;ECXCVEDT^enc cv eligible ECXCVENC^national patient record flag
|
---|
| 141 | ;ECXNPRFI^emerg response indic(FEMA) ECXERI^agent orange indic ECXAO^
|
---|
| 142 | ;environ contam ECXECE^head/neck cancer ECXHNC^encntr mst ECXMIL
|
---|
| 143 | ;^radiation ECXIR
|
---|
| 144 | N DA,DIK
|
---|
| 145 | S EC7=$O(^ECX(ECFILE,999999999),-1),EC7=EC7+1
|
---|
| 146 | S ECODE=EC7_U_EC23_U_ECL_U_ECXDFN_U_ECXSSN_U_ECXPNM_U_ECXA_U
|
---|
| 147 | S ECODE=ECODE_$$ECXDATE^ECXUTL(ECDT,ECXYM)_U_ECDU_U_ECC_U
|
---|
| 148 | S ECODE=ECODE_ECP_U_ECV_U_ECCS_U_ECO_U_ECM_U_ECU1A_U_ECXPPC1_U
|
---|
| 149 | S ECODE=ECODE_ECU2A_U_ECXPPC2_U_ECU3A_U_ECXPPC3_U_U_ECXMN_U
|
---|
| 150 | S ECODE=ECODE_ECXTS_U_ECTM_U
|
---|
| 151 | S ECODE=ECODE_ECPTTM_U_ECPTPR_U_ECXCPT_U_ECXICD9_U
|
---|
| 152 | S ECODE=ECODE_ECXICD91_U_ECXICD92_U_ECXICD93_U
|
---|
| 153 | S ECODE=ECODE_ECXICD94_U_ECXAST_U_ECXRST_U_ECXEST_U
|
---|
| 154 | S ECODE=ECODE_ECSC_U_ECPCE7_U_U_ECDSS_U_U
|
---|
| 155 | S ECODE1=ECXMPI_U_ECXDSSD_U_ECU1NPI_U_ECU2NPI_U_ECU3NPI_U_ECCLAS_U
|
---|
| 156 | S ECODE1=ECODE1_ECPTNPI_U_ECASPR_U_ECCLAS2_U_ECASNPI_U_ECXDIV_U
|
---|
| 157 | S ECODE1=ECODE1_ECXMST_U_ECXDOM_U_ECXDOB_U_ECXCAT_U_ECXSTAT_U
|
---|
| 158 | S ECODE1=ECODE1_$S(ECXLOGIC<2005:ECXPRIOR,1:"")_U_ECXPOS_U_ECXPHI_U_ECXOBS_U_ECXENC_U_ECXAOL_U
|
---|
| 159 | S ECODE1=ECODE1_ECXODIV_U_ECXCSDT_U_ECXCEDT_U_ECXCTYP_U_ECXCNH_U_ECXPDIV_U
|
---|
| 160 | S ECODE1=ECODE1_ECXELIG_U_ECXHNCI_U_ECXETH_U_ECXRC1
|
---|
| 161 | I ECXLOGIC>2003 S ECODE1=ECODE1_U_ECXENRL_U
|
---|
| 162 | I ECXLOGIC>2004 S ECODE1=ECODE1_U_ECXPRIOR_ECXSBGRP_U_ECXUESTA_U_ECXPTYPE_U_ECXCVE_U
|
---|
| 163 | I ECXLOGIC>2004 S ECODE2=ECXCVEDT_U_ECXCVENC_U_ECXNPRFI
|
---|
| 164 | I ECXLOGIC>2006 S ECODE2=ECODE2_U_ECXERI_U_ECXAO_U_ECXECE_U_ECXHNC_U_ECXMIL_U_ECXIR_U
|
---|
| 165 | S ^ECX(ECFILE,EC7,0)=ECODE,^ECX(ECFILE,EC7,1)=ECODE1,^ECX(ECFILE,EC7,2)=$G(ECODE2),ECRN=ECRN+1
|
---|
| 166 | S DA=EC7,DIK="^ECX("_ECFILE_"," D IX1^DIK K DIK,DA
|
---|
| 167 | I $D(ZTQUEUED),$$S^%ZTLOAD
|
---|
| 168 | Q
|
---|
| 169 | ;
|
---|
| 170 | SETUP ;Set required input for ECXTRAC
|
---|
| 171 | S ECHEAD="ECS"
|
---|
| 172 | D ECXDEF^ECXUTL2(ECHEAD,.ECPACK,.ECGRP,.ECFILE,.ECRTN,.ECPIECE,.ECVER)
|
---|
| 173 | Q
|
---|
| 174 | ;
|
---|
| 175 | QUE ; entry point for the background requeuing handled by ECXTAUTO
|
---|
| 176 | D SETUP,QUE^ECXTAUTO,^ECXKILL Q
|
---|