OHDSI Home | Forums | Wiki | Github

OHDSI Study #1: Treatment Pathways in Chronic Disease

I would like to also participate in the 12 month study as a test of the value of the nursing home dataset we have assembled using drug dispensing and the Medicare Minimum Dataset (MDS). The will be a first test of seeking a general IRB protocol for this dataset. Will start on that and provide edits to the protocol before the end of the year. Should be able to run the query by early January.

kind regards,
-Rich

Great Rich. I am just doing some protocol amending and will post a formal proposal announcement in the next week (via a new Forum thread)

My 2 cents re the potential differences between observed and unobserved treatment and why it matters.

To me it seems likely that systematic patient differences affect both whether they are observed for three years and their treatment pattern. For example, at Kaiser, duration of observation for a given patient is a function of plan membership. Membership churn fluctuates over time and across Kaiser regions but was often around 20% for some years/regions.

In general, four things determined whether a patient stayed with Kaiser year-to-year and hence whether they met a multi-year observation inclusion criterion: 1) Individual’s loss of employment; 2) Employer’s contractual choice - whether they offered Kaiser as an option that year; 3) Individual’s change of employer or relocation; 4) mortality.

All four could cause systematic differences in both who was observed in the EHR over some multi-year interval and how their condition was treated.

Loss of employment affects the affordability of available care options. Change in care provider due to employer offering or change in job/location affects the character of care - e.g. Kaiser has a fairly systematic medical group-led approach to disseminating, monitoring, and supporting adherence to clinical practice guidelines for major chronic conditions. So the unobserved care that patients received after leaving Kaiser was likely to differ in character and, as a group, be more varied than the care observed in patients captured in the Kaiser EHR. To the extent that patients die prior to a minimum duration inclusion criterion because of how they are treated, important differences in care patterns are excluded.

Whether the reasons that patients with chronic conditions go unobserved for similar reasons in OHDSI data sources and in Kaiser’s EHR, I think the potential-for-bias question is the same: Are there things that affect both: A) whether patients are observed for a given duration and B) how they are treated when they are not observed?

My hunch is that the answer to that questions is probably Yes for all OHDSI data source types. But whether my hunch is correct or not, it is a suspicion many will harbor, especially when analyzing care for a chronic condition where treatment length is expected to exceed the duration criterion. So, in my opinion, the arguments for defending a proposed lack of bias are worth sharpening. Ideally a clever analytic strategy that accurately estimates the bias would be even better. I’m not sure that sensitivity analyses without a source of ground truth do that very well.

Though it may be a difficult problem, I think the soundness of OHDSI-based science will be greater the more able we are to characterize factors that affect the completeness of samples and their potential to distort our inferences whether the analytic aims are descriptive or hypothesis tests. The potential for bias to have important effects on the accuracy of how we characterize care or the validity of statistical hypothesis tests seems very real to me. I think this is an issue that goes to the heart of questions about the research value of observational data sources in general, not just OHDSI. Developing best practices for addressing it as rigorously as possible would be an important contribution.

Here is our results.
We are now preparing the IRB exemption process. However, as the entire analysis process does not involve any of ethical problem, we just release our tentative results here for further discussion.
The analysis code use clinical drug (RxNorm concept level 1) rather than ingredient of drug (RxNorm concept level 2) and minimum number of patient (small cell count) is 6. Thus if a patient use a same drug (ingredient) but different dose, than the treatments are regarded as different ones, and if the small cell count is less than 6, then the pathway is removed from the results. Thus very small pathways are survived at the end of analyses. To increase the number of pathways, what if sum up the RxNorm concept level 1 (clinical drug) into level 2 (ingredient level)?


[num_person > 5]

HTN_source_name_person_count
2023

HTN_source_name_person_count_year
index_year num_persons
1996 41
1997 81
1998 84
1999 103
2000 82
2001 136
2002 138
2003 158
2004 219
2005 217
2006 184
2007 165
2008 162
2009 144
2010 109

HTN_source_name_seq_count
d1_concept_id d1_concept_name num_persons
1308851 valsartan 80 MG Oral Tablet 9
1332419 Amlodipine 5 MG Oral Tablet 26
19028935 telmisartan 40 MG Oral Tablet 12

HTN_source_name_seq_count_year
index_year d1_concept_id d1_concept_name num_persons
2010 19028935 telmisartan 40 MG Oral Tablet 6


[num_person > 1]

T2DM_source_name_person_count
2023

T2DM_source_name_person_count_year
index_year num_persons
1996 41
1997 81
1998 84
1999 103
2000 82
2001 136
2002 138
2003 158
2004 219
2005 217
2006 184
2007 165
2008 162
2009 144
2010 109

T2DM_source_name_seq_count
d1_concept_id d2_concept_id d3_concept_id d1_concept_name d2_concept_name d3_concept_name num_persons
974473 NULL NULL Hydrochlorothiazide 12.5 MG / telmisartan 40 MG Oral Tablet NULL NULL 2
974473 19028935 NULL Hydrochlorothiazide 12.5 MG / telmisartan 40 MG Oral Tablet telmisartan 40 MG Oral Tablet NULL 3
974702 NULL NULL candesartan cilexetil 16 MG / Hydrochlorothiazide 12.5 MG Oral Tablet NULL NULL 3
1308851 NULL NULL valsartan 80 MG Oral Tablet NULL NULL 9
1308851 19096678 NULL valsartan 80 MG Oral Tablet valsartan 160 MG Oral Tablet NULL 3
1308851 19137056 NULL valsartan 80 MG Oral Tablet Theobromine NULL 2
1314008 NULL NULL Atenolol 50 MG Oral Tablet NULL NULL 2
1314008 1332419 NULL Atenolol 50 MG Oral Tablet Amlodipine 5 MG Oral Tablet NULL 2
1332419 NULL NULL Amlodipine 5 MG Oral Tablet NULL NULL 26
1332419 1332497 NULL Amlodipine 5 MG Oral Tablet Amlodipine 5 MG / atorvastatin 10 MG Oral Tablet NULL 3
1332419 1351586 NULL Amlodipine 5 MG Oral Tablet candesartan cilexetil 8 MG Oral Tablet [Atacand] NULL 2
1332419 19017656 NULL Amlodipine 5 MG Oral Tablet lercanidipine 10 MG Oral Tablet NULL 2
1332419 19022948 NULL Amlodipine 5 MG Oral Tablet irbesartan 150 MG Oral Tablet NULL 4
1332419 19023453 NULL Amlodipine 5 MG Oral Tablet Hydrochlorothiazide 12.5 MG / valsartan 80 MG Oral Tablet NULL 2
1332419 19134566 NULL Amlodipine 5 MG Oral Tablet Nifedipine 40 MG Extended Release Tablet NULL 2
1332419 19137056 NULL Amlodipine 5 MG Oral Tablet Theobromine NULL 2
1332419 21601587 NULL Amlodipine 5 MG Oral Tablet OTHER PERIPHERAL VASODILATORS NULL 5
1332419 21601747 NULL Amlodipine 5 MG Oral Tablet AMLODIPINE NULL 2
1332419 40163271 NULL Amlodipine 5 MG Oral Tablet Perindopril Erbumine 4 MG Oral Tablet NULL 2
1332419 40185304 NULL Amlodipine 5 MG Oral Tablet Losartan Potassium 50 MG Oral Tablet NULL 2
1332497 NULL NULL Amlodipine 5 MG / atorvastatin 10 MG Oral Tablet NULL NULL 2
1332497 1332419 NULL Amlodipine 5 MG / atorvastatin 10 MG Oral Tablet Amlodipine 5 MG Oral Tablet NULL 2
1334461 1334492 1353818 Ramipril 2.5 MG Oral Tablet Ramipril 5 MG Oral Tablet Felodipine 5 MG Extended Release Tablet 2
1334461 1353818 NULL Ramipril 2.5 MG Oral Tablet Felodipine 5 MG Extended Release Tablet NULL 2
1334492 NULL NULL Ramipril 5 MG Oral Tablet NULL NULL 4
1351586 NULL NULL candesartan cilexetil 8 MG Oral Tablet [Atacand] NULL NULL 2
1351586 1332419 NULL candesartan cilexetil 8 MG Oral Tablet [Atacand] Amlodipine 5 MG Oral Tablet NULL 2
1353818 NULL NULL Felodipine 5 MG Extended Release Tablet NULL NULL 2
1363086 NULL NULL Doxazosin 4 MG Extended Release Tablet NULL NULL 2
19017656 NULL NULL lercanidipine 10 MG Oral Tablet NULL NULL 4
19017656 19028936 19028935 lercanidipine 10 MG Oral Tablet telmisartan 80 MG Oral Tablet telmisartan 40 MG Oral Tablet 2
19017656 21601587 NULL lercanidipine 10 MG Oral Tablet OTHER PERIPHERAL VASODILATORS NULL 2
19022242 NULL NULL Cilazapril 2.5 MG Oral Tablet NULL NULL 4
19022948 NULL NULL irbesartan 150 MG Oral Tablet NULL NULL 5
19022948 19078080 NULL irbesartan 150 MG Oral Tablet Hydrochlorothiazide 12.5 MG / irbesartan 150 MG Oral Tablet NULL 2
19023453 19023454 NULL Hydrochlorothiazide 12.5 MG / valsartan 80 MG Oral Tablet Hydrochlorothiazide 12.5 MG / valsartan 160 MG Oral Tablet NULL 2
19028935 NULL NULL telmisartan 40 MG Oral Tablet NULL NULL 12
19028936 NULL NULL telmisartan 80 MG Oral Tablet NULL NULL 3
19028936 1363086 NULL telmisartan 80 MG Oral Tablet Doxazosin 4 MG Extended Release Tablet NULL 2
19076924 NULL NULL eprosartan 600 MG Oral Tablet NULL NULL 3
19096678 19023454 NULL valsartan 160 MG Oral Tablet Hydrochlorothiazide 12.5 MG / valsartan 160 MG Oral Tablet NULL 4
19096740 NULL NULL Olmesartan medoxomil 20 MG Oral Tablet NULL NULL 2
19101807 1332419 NULL Nifedipine 30 MG Oral Tablet Amlodipine 5 MG Oral Tablet NULL 2
19106593 NULL NULL manidipine 10 MG Oral Tablet NULL NULL 2
19133612 NULL NULL Diltiazem Hydrochloride 90 MG Extended Release Tablet NULL NULL 2
19134566 NULL NULL Nifedipine 40 MG Extended Release Tablet NULL NULL 2
19137056 NULL NULL Theobromine NULL NULL 2
21601747 NULL NULL AMLODIPINE NULL NULL 3
40163271 NULL NULL Perindopril Erbumine 4 MG Oral Tablet NULL NULL 2
40184187 NULL NULL Hydrochlorothiazide 12.5 MG / Losartan Potassium 50 MG Oral Tablet NULL NULL 5
40184187 1332419 NULL Hydrochlorothiazide 12.5 MG / Losartan Potassium 50 MG Oral Tablet Amlodipine 5 MG Oral Tablet NULL 2
40184187 40184217 1332419 Hydrochlorothiazide 12.5 MG / Losartan Potassium 50 MG Oral Tablet Hydrochlorothiazide 25 MG / Losartan Potassium 100 MG Oral Tablet Amlodipine 5 MG Oral Tablet 2
40184187 40185304 NULL Hydrochlorothiazide 12.5 MG / Losartan Potassium 50 MG Oral Tablet Losartan Potassium 50 MG Oral Tablet NULL 2
40185304 NULL NULL Losartan Potassium 50 MG Oral Tablet NULL NULL 2

T2DM_source_name_seq_count_year
index_year d1_concept_id d2_concept_id d1_concept_name d2_concept_name num_persons
1998 1332419 NULL Amlodipine 5 MG Oral Tablet NULL 2
1996 1332419 NULL Amlodipine 5 MG Oral Tablet NULL 2
2006 19028935 NULL telmisartan 40 MG Oral Tablet NULL 2
2007 19096678 19023454 valsartan 160 MG Oral Tablet Hydrochlorothiazide 12.5 MG / valsartan 160 MG Oral Tablet 3
2008 40163271 NULL Perindopril Erbumine 4 MG Oral Tablet NULL 2
2010 974473 19028935 Hydrochlorothiazide 12.5 MG / telmisartan 40 MG Oral Tablet telmisartan 40 MG Oral Tablet 2
2005 1332419 40163271 Amlodipine 5 MG Oral Tablet Perindopril Erbumine 4 MG Oral Tablet 2
2005 40184187 NULL Hydrochlorothiazide 12.5 MG / Losartan Potassium 50 MG Oral Tablet NULL 2
2005 1308851 19096678 valsartan 80 MG Oral Tablet valsartan 160 MG Oral Tablet 2
1999 1332419 NULL Amlodipine 5 MG Oral Tablet NULL 2
2003 40184187 1332419 Hydrochlorothiazide 12.5 MG / Losartan Potassium 50 MG Oral Tablet Amlodipine 5 MG Oral Tablet 2
2005 1308851 NULL valsartan 80 MG Oral Tablet NULL 2
2008 1332419 21601587 Amlodipine 5 MG Oral Tablet OTHER PERIPHERAL VASODILATORS 2
2004 1308851 NULL valsartan 80 MG Oral Tablet NULL 2
2006 19106593 NULL manidipine 10 MG Oral Tablet NULL 2
2008 19028935 NULL telmisartan 40 MG Oral Tablet NULL 2
2003 1332419 NULL Amlodipine 5 MG Oral Tablet NULL 2
2005 1332419 NULL Amlodipine 5 MG Oral Tablet NULL 5
2008 1332419 NULL Amlodipine 5 MG Oral Tablet NULL 2
2004 1332419 NULL Amlodipine 5 MG Oral Tablet NULL 3
2010 19028935 NULL telmisartan 40 MG Oral Tablet NULL 6
2010 19101807 1332419 Nifedipine 30 MG Oral Tablet Amlodipine 5 MG Oral Tablet 2
2006 1332419 NULL Amlodipine 5 MG Oral Tablet NULL 3
2005 19133612 NULL Diltiazem Hydrochloride 90 MG Extended Release Tablet NULL 2
2010 19137056 NULL Theobromine NULL 2
2007 1308851 NULL valsartan 80 MG Oral Tablet NULL 3
2007 21601747 NULL AMLODIPINE NULL 2

Team:

After successfully getting results to our first study from @Vojtech_Huser, @jon_duke, @nigam, @rwpark, we have seen some very interesting and exciting patterns that are truly revealing about patient heterogeneity in treatment sequence that manifest in all 3 of our diseases of interest: hypertension, type 2 diabetes, and depression. In fact, the heterogeniety was so striking that something I had essentially dismissed as unimportant (how to handle sequences with small cell count) has proven to be extremely important, because in most of the databases we’ve tested, a pretty large fraction of patients have ‘unique’ treatment sequences that we were missing for those who ran the first iteration of the program in its default form. To address this issue, I’ve made a couple slight modifications to the analysis code : 1) I changed the default to produce all treatment sequences without removing sequences with counts < minCellCount, 2) I modified how the minCellCount is handled, so now we preserve the treatment sequences as much as possible, but aggregate the sequence to the latest point where the minCellCount is established. Also, for convenience, 3) I changed the output format so now only 2 files have to be shared, rather than the original 4 (I have embedded the overall statistics in the ‘by year’ file by assigning them a year = 9999). I have pushed these changed to the GitHub repository where the StudyProtocol code is found (https://github.com/OHDSI/StudyProtocols).

So, for those who are interested in participating in this study, I ask you to please run the analysis again using the new code. I would recommend using the R version, because you’ll be able to run all 3 diseases within one script, just change the connection parameters, hit ‘run’ and it’ll take care of exporting the files for you to share with me. But, if you’d prefer to run the SQL instead, I’ve included updated code for that, but remember, you’ll have to do find/replace on the cdmSchema, resultsSchema, minCellCount (two variants are available, minCellCount = 1 includes all sequences, minCellCount=2 has an additional query that aggregates the sequences if the count = 1).

Thanks again to @Vojtech_Huser, @jon_duke, @nigam, @rwpark, @Frank, @schuemie for being the initial collaborators on our first OHDSI study. If others would like to join in, we’d love to have you. After looking at the first batch of results, I’m quite confident we’re going to have some extremely compelling clinical findings to share with the clinical and research communities shortly. Another important milestone to our journey towards reliable medical evidence…

Happy New Years!

Cheers,

Patrick

Another quick update: @jon_duke suggested that we add a small attrition table that gives the # of persons in the database, # with at least one drug, # with a drug and the required observation period, and then the # of person that meet all criteria which are used for the final analysis. I think this is a good idea, so I added this simple query into the script. So now, there’s 3 tables to export and send to me, the additional file is called ‘population summary’. Happy New Years! Cheers, Patrick

I like very much the added summary file.

I was able to run the new code on two datasets in IMEDS lab. I found a small bug in the parametized SQL file - two missing semicolons . The two queries without the closure semicolone are after the string “–0.” (in the code for the new population summary).

It makes the redshift SQL file fail if they are not added. I did not look at other dialects (although for those using MS SQL - that file is probably OK even without the semicolons).

Which minCellCount threshold will you use for your final extract?

The massive group by query for
{minCellCount !=1} ? {this one} was not very much liked by the redshift db engine.

Raising the issue of table names in Oracle:

I have used the sourceName “INPC” and my Depression script fails due to the table name Depression_INPC_population_summary, which is 34 characters, exceeding Oracle’s 30 character limit.

Patrick and I have chatted about table lengths before, and the initial recommendation was that it is up to the implementer to set a sourceName that works. But even if my CDM name were zero characters, the table name Depression__population_summary would be 30 characters, so even a single character sourceName would break the provided R scripts for those running Oracle.

I would suggest that we have a convention of maximum parameterized table names of 24 characters before addition of the sourceName, and that the ReadMe include a note that sourceName cannot exceed 6 characters for those on Oracle. I agree with all Oracle critics that It is absurd that this limitation exists. That being said, I don’t think most folks will know how to (or should be required to) edit their SQL scripts manually to resolve.

If no one else is running Oracle for this study, we can just address next time.

Yeah, sorry about that, we do need to figure out some convention to follow,
and it’ll be really useful when we have a place to test on the different
platforms. I suppose for this time around, we can revise that new table to
remove the word ‘population’.

@jon_duke: I pushed an update to the code, reducing the name to
@studyName_@sourceName_summary (removing the word population ) so you
should be good to go in your Oracle-character-constrained environment:)

Cheers,

Patrick

Thanks Pat!

Pat,

In the latest version of MainAnalysis.R, I think this may have been accidentally left in from your minCellCount experiments:

minCellCount = 2 # the smallest allowable cell count, 1 means all counts are allowed

Pretty sure we were all cool with running minCellCount=1 by default, and it adds quite a lot of time to run at 2. I am switching mine back to 1 to re-run but I’d suggest updating the code on GitHub as well.

Jon

Hmmm, my mistake? Seems to be back to minCellCount 1 :smile:

With huge thanks to @lee_evans for making a testing environment available so that for the first time I could test myself on sql server, oracle, and postgresql, i have revised the txpath code and can now confirm no one should have any issues. it was 3 minor changes: i was missing a couple semicolons, which were needed in postgresql and oracle to parse out the statements, and then i needed to reduce the table names to accommodate oracle’s pesky character limit. but, now with that done, everyone should give it a whirl. thanks for your patience, and again, big thanks to @lee_evans. With this new testing infrastructure in place, I expect we’ll have many fewer annoying issues like this moving forward.

cheers,

patrick

hi Patrick,

Is the visualization tool for the treatment pathway data available to download? It’s cool.

Thanks,
Yonghui

We are finally ready to run the 12 mo treatment pathway study for some of our SAFTINet practices (CDMV4). I need to clarify the following, we don’t run the derived variables unless we need them, so

  1. Condition-era: not sure this variable is necessary - please confirm, and if so, what gap length in days is recommended
  2. Drug-era: required, what gap in days.

We are using SQL, and converted OHDSI sql codes to postgresql, but I want to verify #1 and #2 above, and I could find this information in the protocol or specifically in the wiki/forum information relevant to this study and I want to make sure we follow the same convention as others.
Thansk! Lisa

That’s great to hear @schillil, it’ll be interesting to see how your
results stack up with other sites. You do need the drug era and condition
era table, the default 30d time window is what is implemented in the
generic script,

t