| 1 | ECXADM ;ALB/JAP,BIR/DMA,CML,PTD-Admissions Extract ; 10/15/07 12:14pm | 
|---|
| 2 | ;;3.0;DSS EXTRACTS;**1,4,11,8,13,24,33,39,46,71,84,92,107,105**;Dec 22, 1997;Build 70 | 
|---|
| 3 | BEG ;entry point from option | 
|---|
| 4 | D SETUP I ECFILE="" Q | 
|---|
| 5 | D ^ECXTRAC,^ECXKILL | 
|---|
| 6 | Q | 
|---|
| 7 | ; | 
|---|
| 8 | START ; start package specific extract | 
|---|
| 9 | S QFLG=0 | 
|---|
| 10 | S ECED=ECED+.3,ECD=ECSD1 | 
|---|
| 11 | F  S ECD=$O(^DGPM("ATT1",ECD)),ECDA=0 Q:('ECD)!(ECD>ECED)  D | 
|---|
| 12 | .F  S ECDA=$O(^DGPM("ATT1",ECD,ECDA)) Q:ECDA=""  D | 
|---|
| 13 | ..I $D(^DGPM(ECDA,0)) D | 
|---|
| 14 | ...S EC=^DGPM(ECDA,0),ECXDFN=$P(EC,U,3) D GET | 
|---|
| 15 | Q | 
|---|
| 16 | ; | 
|---|
| 17 | GET ;gather extract data | 
|---|
| 18 | N ADM,W,X,ECXNPRFI,ECXATTPC,ECXPRVPC,ECXEST | 
|---|
| 19 | ;patient demographics | 
|---|
| 20 | S ECXERR=0 D PAT(ECXDFN,ECD,.ECXERR) | 
|---|
| 21 | Q:ECXERR | 
|---|
| 22 | I $$ENROLLM^ECXUTL2(ECXDFN) | 
|---|
| 23 | S ECXFAC=$P($G(^DIC(42,+$P(EC,U,6),0)),U,11) | 
|---|
| 24 | S ECXPDIV=$$GETDIV^ECXDEPT(ECXFAC)  ;Get production division | 
|---|
| 25 | ;admission data | 
|---|
| 26 | S ELGA=$P($G(^DIC(8,+$P(EC,U,20),0)),U,9) | 
|---|
| 27 | I ELGA S ELGA=$$ELIG^ECXUTL3(ELGA,ECXSVC) | 
|---|
| 28 | S (ECDRG,ECDIA,ECXSADM)="",ECPTF=+$P(EC,U,16) I ECPTF,$D(^DGPT(ECPTF,"M")) D PTF | 
|---|
| 29 | ;get encounter classification | 
|---|
| 30 | S (ECXAO,ECXECE,ECXIR,ECXMIL,ECXHNC)="",ECXVISIT=$P(EC,U,27) | 
|---|
| 31 | I ECXVISIT'="" D | 
|---|
| 32 | .D VISIT^ECXSCX1(ECXDFN,ECXVISIT,.ECXVIST,.ECXERR) I ECXERR K ECXERR Q | 
|---|
| 33 | .S ECXAO=$G(ECXVIST("AO")),ECXIR=$G(ECXVIST("IR")) | 
|---|
| 34 | .S ECXMIL=$G(ECXVIST("MST")),ECXHNC=$G(ECXVIST("HNC")) | 
|---|
| 35 | .S ECXECE=$G(ECXVIST("PGE")) | 
|---|
| 36 | ;use movement record date & time | 
|---|
| 37 | S ADM=$$INP^ECXUTL2(ECXDFN,ECD) | 
|---|
| 38 | S ECXA=$P(ADM,U),ECXMN=$P(ADM,U,2),ECXSPC=$P(ADM,U,3) | 
|---|
| 39 | S (ECXADMDT,ECXDATE)=$P(ADM,U,4) | 
|---|
| 40 | ;if movement# doesn't match cross-ref ien, then quit | 
|---|
| 41 | Q:ECXMN'=ECDA | 
|---|
| 42 | S ECTM=$$ECXTIME^ECXUTL(ECXDATE) | 
|---|
| 43 | S ECXDATE=$$ECXDATE^ECXUTL(ECXDATE,ECXYM) | 
|---|
| 44 | S W=$P(ADM,U,9) | 
|---|
| 45 | S ECXWRD=$P(W,";",1),ECXFAC=$P(W,";",2),ECXDSSD=$P(W,";",3) | 
|---|
| 46 | S ECXPRV=$P(ADM,U,7),ECXPRNPI="",ECXATT=$P(ADM,U,8),ECXATNPI="" | 
|---|
| 47 | S ECXDOM=$P(ADM,U,10),ECXATTPC=$P(ADM,U,12),ECXPRVPC=$P(ADM,U,11) | 
|---|
| 48 | N ECXUSRTN | 
|---|
| 49 | S ECXUSRTN=$$NPI^XUSNPI("Individual_ID",$E(ECXATT,2,$L(ECXATT)),ECD) | 
|---|
| 50 | S:+ECXUSRTN'>0 ECXUSRTN="" | 
|---|
| 51 | S ECATTNPI=$P(ECXUSRTN,U) | 
|---|
| 52 | S ECXUSRTN=$$NPI^XUSNPI("Individual_ID",$E(ECXPRV,2,$L(ECXPRV)),ECD) | 
|---|
| 53 | S:+ECXUSRTN'>0 ECXUSRTN="" | 
|---|
| 54 | S ECPWNPI=$P(ECXUSRTN,U) | 
|---|
| 55 | ; | 
|---|
| 56 | ;- Observation patient indicator (YES/NO) | 
|---|
| 57 | S ECXOBS=$$OBSPAT^ECXUTL4(ECXA,ECXSPC) | 
|---|
| 58 | ; | 
|---|
| 59 | ;- Patient Type | 
|---|
| 60 | S ECXPTYPE=$$TYPE^ECXUTL5(ECXDFN) | 
|---|
| 61 | ; | 
|---|
| 62 | ;- If null encounter number, don't file record | 
|---|
| 63 | S ECXENC=$$ENCNUM^ECXUTL4(ECXA,ECXSSN,ECXADMDT,,ECXSPC,ECXOBS,ECHEAD,,) | 
|---|
| 64 | D:ECXENC'="" FILE | 
|---|
| 65 | Q | 
|---|
| 66 | ; | 
|---|
| 67 | PAT(ECXDFN,ECXDATE,ECXERR) ;get patient demographic data | 
|---|
| 68 | N OK,X | 
|---|
| 69 | K ECXPAT | 
|---|
| 70 | S ECXDATE=$P(ECXDATE,".") | 
|---|
| 71 | S OK=$$PAT^ECXUTL3(ECXDFN,ECXDATE,"1;2;3;4;5",.ECXPAT) | 
|---|
| 72 | I 'OK S ECXERR=1 K ECXPAT Q | 
|---|
| 73 | S ECXSSN=ECXPAT("SSN") | 
|---|
| 74 | S ECXPNM=ECXPAT("NAME") | 
|---|
| 75 | S ECXMPI=ECXPAT("MPI") | 
|---|
| 76 | S ECXSEX=ECXPAT("SEX") | 
|---|
| 77 | S ECXDOB=ECXPAT("DOB") | 
|---|
| 78 | S ECXELIG=ECXPAT("ELIG") | 
|---|
| 79 | S ECXVET=ECXPAT("VET") | 
|---|
| 80 | S ECXVNS=ECXPAT("VIETNAM") | 
|---|
| 81 | S ECXPOS=ECXPAT("POS") | 
|---|
| 82 | S ECXMNS=ECXPAT("MEANS") | 
|---|
| 83 | S ECXRACE=ECXPAT("RACE") | 
|---|
| 84 | S ECXRELG=ECXPAT("RELIGION") | 
|---|
| 85 | S ECXEMP=ECXPAT("EMPLOY") | 
|---|
| 86 | S ECXMAR=ECXPAT("MARITAL") | 
|---|
| 87 | S ECXPST=ECXPAT("POW STAT") | 
|---|
| 88 | S ECXPLOC=ECXPAT("POW LOC") | 
|---|
| 89 | S ECXRST=ECXPAT("IR STAT") | 
|---|
| 90 | S ECXAST=ECXPAT("AO STAT") | 
|---|
| 91 | S ECXMST=ECXPAT("MST STAT") | 
|---|
| 92 | S ECXSTATE=ECXPAT("STATE") | 
|---|
| 93 | S ECXCNTY=ECXPAT("COUNTY") | 
|---|
| 94 | S ECXZIP=ECXPAT("ZIP") | 
|---|
| 95 | S ECXENRL=ECXPAT("ENROLL LOC") | 
|---|
| 96 | S ECXSVC=ECXPAT("SC%") | 
|---|
| 97 | S ECXPHI=ECXPAT("PHI") | 
|---|
| 98 | S ECXHI=+$$INSUR^IBBAPI(ECXDFN,ECXDATE) | 
|---|
| 99 | S ECXEST=ECXPAT("EC STAT") | 
|---|
| 100 | ; | 
|---|
| 101 | ;-OEF/OIF Data | 
|---|
| 102 | S ECXOEF=ECXPAT("ECXOEF") | 
|---|
| 103 | S ECXOEFDT=ECXPAT("ECXOEFDT") | 
|---|
| 104 | ; | 
|---|
| 105 | ;- Agent Orange location | 
|---|
| 106 | S ECXAOL=ECXPAT("AOL") | 
|---|
| 107 | ; | 
|---|
| 108 | ; - Head and Neck Cancer Indicator | 
|---|
| 109 | S ECXHNCI=$$HNCI^ECXUTL4(ECXDFN) | 
|---|
| 110 | ; - Race and Ethnicity | 
|---|
| 111 | S ECXETH=ECXPAT("ETHNIC") | 
|---|
| 112 | S ECXRC1=ECXPAT("RACE1") | 
|---|
| 113 | ; | 
|---|
| 114 | ;get primary care data | 
|---|
| 115 | S X=$$PRIMARY^ECXUTL2(ECXDFN,ECXDATE) | 
|---|
| 116 | S ECPTTM=$P(X,U),ECPTPR=$P(X,U,2),ECCLAS=$P(X,U,3),ECPTNPI=$P(X,U,4) | 
|---|
| 117 | S ECASPR=$P(X,U,5),ECCLAS2=$P(X,U,6),ECASNPI=$P(X,U,7) | 
|---|
| 118 | ;get combat veteran data | 
|---|
| 119 | I $$CVEDT^ECXUTL5(ECXDFN,ECD) | 
|---|
| 120 | ;get national patient record flag if exist | 
|---|
| 121 | D NPRF^ECXUTL5 | 
|---|
| 122 | ;get emergency response indicator (FEMA) | 
|---|
| 123 | S ECXERI=ECXPAT("ERI") | 
|---|
| 124 | Q | 
|---|
| 125 | ; | 
|---|
| 126 | PTF ; get admitting DRG, diagnosis, source of admission from PTF | 
|---|
| 127 | ;use number for DRG and .01 for diagnosis | 
|---|
| 128 | N EC,EC1,ECX | 
|---|
| 129 | S EC=1 I $D(^DGPT(ECPTF,"M",2,0)) S EC=2 | 
|---|
| 130 | S EC1=+$P(^DGPT(ECPTF,"M",EC,0),U,5) | 
|---|
| 131 | S ECDRG=$P($G(^DGPT(ECPTF,"M",EC,"P")),U) | 
|---|
| 132 | S ECDIA=$P($G(^ICD9(EC1,0)),U) | 
|---|
| 133 | S ECX=+$P($G(^DGPT(ECPTF,101)),U),ECXSADM=$P($G(^DIC(45.1,ECX,0)),U,11) | 
|---|
| 134 | Q | 
|---|
| 135 | ; | 
|---|
| 136 | FILE ;file the extract record | 
|---|
| 137 | ;node0 | 
|---|
| 138 | ;facility^dfn^ssn^name^in/out^day^primary care team^sex^dob^ | 
|---|
| 139 | ;religion^employment status^health ins^state^county^zip^ | 
|---|
| 140 | ;eligibility^vet^vietnam^agent orange^radiation^pow^ | 
|---|
| 141 | ;period of service^means test^marital status^ | 
|---|
| 142 | ;ward^treating specialty^attending physician^mov #^DRG^diagnosis^ | 
|---|
| 143 | ;time^primary care provider^race^primary ward provider | 
|---|
| 144 | ;node1 | 
|---|
| 145 | ;mpi^dss dept^attending npi^pc provider npi^ward provider npi^ | 
|---|
| 146 | ;admission elig^mst status^^sharing payor^ | 
|---|
| 147 | ;sharing insurance^enrollment location^ | 
|---|
| 148 | ;pc prov person class^assoc pc provider^assoc pc prov person class^ | 
|---|
| 149 | ;assoc pc prov npi^dom^enrollment cat^enrollment stat^enrollment | 
|---|
| 150 | ;priority^purple heart ind.^obs pat ind^encounter num^agent orange | 
|---|
| 151 | ;loc^production div^pow loc^source of admission^head & neck canc. ind | 
|---|
| 152 | ;^ethnicity^race1^enrollment priority_sub group^user enrollee^patient | 
|---|
| 153 | ;type^combat vet elig^combat vet elig end date^enc cv eligible^ | 
|---|
| 154 | ;national patient record flag ECXNPRFI^att phy person class ECXATTPC | 
|---|
| 155 | ;^primary ward provider person class ECXPRVPC^environ contamin ECXEST | 
|---|
| 156 | ;^emergency response indicator(FEMA) ECXERI^agent orange indic ECXAO | 
|---|
| 157 | ;^environ contam ECXECE^encoun head/neck ECXHNC^encoun MST ECXMIL^rad | 
|---|
| 158 | ;encoun ECXIR^ OEF/OIF ECXOEF^ OEF/OIF return date ECXOEFDT | 
|---|
| 159 | ;^associate pc provider npi ECASNPI^attending physician npi ECATNPI^ | 
|---|
| 160 | ;primary care provider npi ECPTNPI^primary ward provider npi ECPWNPI | 
|---|
| 161 | ; | 
|---|
| 162 | ;Convert specialty to PTF Code | 
|---|
| 163 | ; | 
|---|
| 164 | N ECXDATA | 
|---|
| 165 | S ECXDATA=$$TSDATA^DGACT(42.4,+ECXSPC,.ECXDATA) | 
|---|
| 166 | S ECXSPC=$G(ECXDATA(7)) | 
|---|
| 167 | ; | 
|---|
| 168 | N DA,DIK | 
|---|
| 169 | S EC7=$O(^ECX(ECFILE,999999999),-1),EC7=EC7+1 | 
|---|
| 170 | S ECODE=EC7_U_EC23_U_ECXFAC_U_ECXDFN_U_ECXSSN_U_ECXPNM_U_ECXA_U_ECXDATE_U | 
|---|
| 171 | S ECODE=ECODE_ECPTTM_U_ECXSEX_U_ECXDOB_U_ECXRELG_U | 
|---|
| 172 | S ECODE=ECODE_ECXEMP_U_ECXHI_U_ECXSTATE_U_ECXCNTY_U_ECXZIP_U | 
|---|
| 173 | S ECODE=ECODE_ECXELIG_U_ECXVET_U_ECXVNS_U_ECXAST_U_ECXRST_U_ECXPST_U | 
|---|
| 174 | S ECODE=ECODE_ECXPOS_U_ECXMNS_U_ECXMAR_U | 
|---|
| 175 | S ECODE=ECODE_ECXWRD_U_ECXSPC_U_ECXATT_U_ECDA_U_ECDRG_U_ECDIA_U | 
|---|
| 176 | S ECODE=ECODE_ECTM_U_ECPTPR_U_ECXRACE_U_ECXPRV_U | 
|---|
| 177 | S ECODE1=ECXMPI_U_ECXDSSD_U_""_U_""_U_""_U_ELGA_U | 
|---|
| 178 | S ECODE1=ECODE1_ECXMST_U_U_U_U_ECXENRL_U_ECCLAS_U | 
|---|
| 179 | S ECODE1=ECODE1_ECASPR_U_ECCLAS2_U_U_ECXDOM_U_ECXCAT_U | 
|---|
| 180 | S ECODE1=ECODE1_ECXSTAT_U_$S(ECXLOGIC<2005:ECXPRIOR,1:"")_U_ECXPHI_U_ECXOBS_U_ECXENC_U_ECXAOL_U | 
|---|
| 181 | S ECODE1=ECODE1_ECXPDIV_U_ECXPLOC_U_ECXSADM_U_ECXHNCI_U_ECXETH_U | 
|---|
| 182 | S ECODE1=ECODE1_ECXRC1 | 
|---|
| 183 | I ECXLOGIC>2004 S ECODE1=ECODE1_U_ECXPRIOR_ECXSBGRP_U_ECXUESTA_U_ECXPTYPE_U_ECXCVE_U_ECXCVEDT_U_ECXCVENC_U_ECXNPRFI | 
|---|
| 184 | I ECXLOGIC>2005 S ECODE1=ECODE1_U_ECXATTPC_U_ECXPRVPC_U_ECXEST | 
|---|
| 185 | I ECXLOGIC>2006 S ECODE1=ECODE1_U_ECXERI_U_ECXAO_U_ECXECE_U_ECXHNC_U_ECXMIL_U_ECXIR_U | 
|---|
| 186 | I ECXLOGIC>2007 S ECODE2=ECXOEF_U_ECXOEFDT_U_ECASNPI_U_ECATTNPI_U_ECPTNPI_U_ECPWNPI | 
|---|
| 187 | S ^ECX(ECFILE,EC7,0)=ECODE,^ECX(ECFILE,EC7,1)=ECODE1,^ECX(ECFILE,EC7,2)=$G(ECODE2) | 
|---|
| 188 | S ECRN=ECRN+1 | 
|---|
| 189 | S DA=EC7,DIK="^ECX("_ECFILE_"," D IX1^DIK K DIK,DA | 
|---|
| 190 | Q | 
|---|
| 191 | ; | 
|---|
| 192 | SETUP ;Set required input for ECXTRAC. | 
|---|
| 193 | S ECHEAD="ADM" | 
|---|
| 194 | D ECXDEF^ECXUTL2(ECHEAD,.ECPACK,.ECGRP,.ECFILE,.ECRTN,.ECPIECE,.ECVER) | 
|---|
| 195 | Q | 
|---|
| 196 | ; | 
|---|
| 197 | LOCAL ; to extract nightly for local use not to be transmitted to TSI | 
|---|
| 198 | ; should be queued with a 1D frequency | 
|---|
| 199 | D SETUP,^ECXTLOCL,^ECXKILL Q | 
|---|
| 200 | ; | 
|---|
| 201 | QUE ; entry point for the background requeuing handled by ECXTAUTO | 
|---|
| 202 | D SETUP,QUE^ECXTAUTO,^ECXKILL Q | 
|---|
| 203 | ; | 
|---|