/* This is stata code for defining Hepatic Decompensation using administrative data for use in the algorithm for Cirrhosis The algorithm is published in Tonelli et al BMC Med Inform Dec Making 2015;15:31 and based on the work in Goldberg et al Pharmacoepidemiol Drug Saf 2012;21:765-769 1) Specify the file name for the hospitalization data Define the variable names for the ICD-9 codes as hosp_icd9_codeX (X indicating the diagnosis code position) Define the maximum number of ICD-9 diagnosis code position as num_hosp_icd9 Define the variable name for ICD-10 codes as hosp_icd10_codeX (X indicating the diagnosis code position) Define the maximum number of ICD-10 diagnosis code position as num_hosp_icd10 Define the variable name of the hospitalization start date as hosp_start_date Define the variable names of the types of hospitalization as type 2) Specify the file name for the physician claims data Define the variable names for the ICD-9 codes as claim_icd9_codeX (X indicating the diagnosis code position) Define the maximum number of ICD-9 diagnosis code position as num_claim_icd9 Define the variable name of the physician claims date as claim_start_date 3) Specify the file name for the ACCS data Define the variable names for the ICD-9 codes as accs_icd9_codeX (X indicating the diagnosis code position) Define the maximum number of ICD-9 diagnosis code position as num_accs_icd9 Define the variable names for ICD-10 codes as accs_icd10_codeX (X indicating the diagnosis code position) Define the maximum number of ICD-10 diagnosis code position as num_accs_icd10 Define the variable name of the ACCS start date as accs_start_date 4) Specify the directory of the output dataset 5) Create study cohort which includes the unique patient identifier, the study start and end dates (e.g., when a patient turns 18 until they die or out-migrate) */ * File name and variable names for the hospitalizations dataset global data_hosp = "G:\Open Data\ICDC 2013\ICDC Source\Constant files\hosp94_2013.dta" global hosp_icd9_code = "hosp_icd9dx_code" global num_hosp_icd9 = 16 global hosp_icd10_code = "hosp_icd10dx_code" global num_hosp_icd10 = 25 global hosp_start_date = "start_date" global type = "diag_type" * File name and variable names for the physician claims dataset global data_claim = "G:\Open Data\ICDC 2013\ICDC Source\claims_94_13.dta" global claim_icd9_code = "hlth_dx_icd9x_code_" global num_claim_icd9 = 3 global claim_start_date = "start_date" * File name and variable names for the ACCS dataset global data_accs = "G:\Open Data\ICDC 2013\ICDC Source\Constant files\accs97_2013.dta" global accs_icd9_code = "accs_icd9dx_code" global num_accs_icd9 = 6 global accs_icd10_code = "accs_icd10dx_code" global num_accs_icd10 = 10 global accs_start_date = "start_date" * Output dataset directory global out_source = "G:\Projects\Phoebe\MM30codes\kidtran" /* Sample program call ICDmm30_hepatic cohort akdnid study_start_date study_end_date 'cohort' is the file name of the study cohort 'id' is the unique patient identifier 'study_start_date' is the study start date 'study_end_date' is the study end date */ version 13.1 capture program drop ICDmm30_hepatic program ICDmm30_hepatic set more off gettoken cohort 0:0 gettoken id 0:0 gettoken study_start_date 0:0 gettoken study_end_date 0:0 use `cohort', clear duplicates drop sort `id', stable save cohort_hepatic, replace * Cirrhosis and hepatic local ICD9_hepatic_in 4560 4561 4562 5670 56722 56723 56721 56729 5678 5679 5722 5724 7895 local ICD9_hepatic_ex 56781 56782 78951 local ICD10_hepatic I850 I859 I982 I983 K650 K658 K659 K670 K671 K672 K673 K678 K767 K930 R18 * One hospitalization use "${data_hosp}", clear keep `id' ${hosp_start_date} ${hosp_icd9_code}1-${hosp_icd9_code}${num_hosp_icd9} ${hosp_icd10_code}1-${hosp_icd10_code}${num_hosp_icd10} /// ${type}1- ${type}16 ${type}17- ${type}${num_hosp_icd10} recast long ${hosp_start_date}, force sort `id', stable merge n:1 `id' using cohort_hepatic keep if _merge==3 drop _merge keep if ${hosp_start_date}>=`study_start_date' & ${hosp_start_date}<=`study_end_date' local n=${num_hosp_icd9} forvalues nhos9=1(1)`n' { capture replace ${hosp_icd9_code}`nhos9'= subinstr(${hosp_icd9_code}`nhos9', ".", "",.) } local m=${num_hosp_icd10} forvalues nhos10=1(1)`m' { capture replace ${hosp_icd10_code}`nhos10'= subinstr(${hosp_icd10_code}`nhos10', ".", "",.) } gen type="" gen code="" gen code_ex="" local n=${num_hosp_icd9} local m=${num_hosp_icd10} foreach i in `ICD9_hepatic_in' { local len=strlen("`i'") forvalues dx=`n'(-1)1 { capture replace code="`i'" if substr(${hosp_icd9_code}`dx',1,`len') =="`i'" capture replace type=${type}`dx' if substr(${hosp_icd9_code}`dx',1,`len') =="`i'" } } foreach i in `ICD9_hepatic_ex' { local len=strlen("`i'") forvalues dx=`n'(-1)1 { capture replace code_ex="`i'" if substr(${hosp_icd9_code}`dx',1,`len') =="`i'" } } foreach j in `ICD10_hepatic' { local len=strlen("`j'") forvalues dx=`m'(-1)1 { capture replace code = "`j'" if substr(${hosp_icd10_code}`dx',1,`len') == "`j'" capture replace type=${type}`dx' if substr(${hosp_icd10_code}`dx',1,`len')== "`j'" } } keep if code!="" drop if code_ex!="" keep `id' ${hosp_start_date} type code gen source="hosp" keep `id' ${hosp_start_date} type code source rename ${hosp_start_date} hepatic_date sort `id' hepatic_date, stable bysort `id': keep if _n==1 save "${out_source}\ICD_hepatic.dta", replace * One claim use "${data_claim}",clear keep `id' ${claim_start_date} ${claim_icd9_code}1-${claim_icd9_code}${num_claim_icd9} recast long ${claim_start_date}, force sort `id', stable merge n:1 `id' using cohort_hepatic keep if _merge==3 drop _merge keep if ${claim_start_date}>=`study_start_date' & ${claim_start_date}<=`study_end_date' local n=${num_claim_icd9} forvalues nclaim9=1(1)`n' { capture replace ${claim_icd9_code}`nclaim9'= subinstr(${claim_icd9_code}`nclaim9', ".", "",.) } local n=${num_claim_icd9} foreach k in in ex { gen code_`k'="" foreach i in `ICD9_hepatic_`k'' { local len=strlen("`i'") forvalues dx=`n'(-1)1 { capture replace code_`k'="`i'" if substr(${claim_icd9_code}`dx',1,`len') =="`i'" } } } keep if code_in!="" drop if code_ex!="" rename code_in code sort `id' ${claim_start_date}, stable gen source="claim" keep `id' ${claim_start_date} code source rename ${claim_start_date} hepatic_date * Append hospitalizations with claims append using "${out_source}\ICD_hepatic.dta" sort `id' hepatic_date, stable save "${out_source}\ICD_hepatic.dta", replace * One accs use "${data_accs}",clear keep `id' ${accs_start_date} ${accs_icd9_code}1-${accs_icd9_code}${num_accs_icd9} ${accs_icd10_code}1-${accs_icd10_code}${num_accs_icd10} recast long ${accs_start_date}, force sort `id', stable merge n:1 `id' using cohort keep if _merge==3 drop _merge keep if ${accs_start_date}>=`study_start_date' & ${accs_start_date}<=`study_end_date' local n=${num_accs_icd9} forvalues naccs9=1(1)`n' { capture replace ${accs_icd9_code}`nclaim9'= subinstr(${accs_icd9_code}`nclaim9', ".", "",.) } local m=${num_accs_icd10} forvalues naccs10=1(1)`m' { capture replace ${accs_icd10_code}`nclaim10'= subinstr(${accs_icd10_code}`naccs10', ".", "",.) } gen code="" gen code_ex="" local n=${num_accs_icd9} local m=${num_accs_icd10} foreach i in `ICD9_hepatic_in' { local len=strlen("`i'") forvalues dx=`n'(-1)1 { capture replace code="`i'" if substr(${accs_icd9_code}`dx',1,`len') =="`i'" } } foreach i in `ICD9_hepatic_ex' { local len=strlen("`i'") forvalues dx=`n'(-1)1 { capture replace code_ex="`i'" if substr(${accs_icd9_code}`dx',1,`len') =="`i'" } } foreach i in `ICD10_hepatic' { local len=strlen("`i'") forvalues dx=`m'(-1)1 { capture replace code="`i'" if substr(${accs_icd10_code}`dx',1,`len') =="`i'" } } keep if code!="" drop if code_ex!="" sort `id' ${accs_start_date}, stable gen source="accs" keep `id' ${accs_start_date} code source bysort `id': keep if _n==1 rename ${accs_start_date} hepatic_date * Append hospitalizations and claims with accs append using "${out_source}\ICD_hepatic.dta" sort `id' hepatic_date, stable bysort `id': keep if _n==1 gen hepatic=1 keep `id' hepatic_date hepatic sort `id' hepatic_date save "${out_source}\ICD_hepatic.dta", replace erase cohort_hepatic.dta end