OHDSI Home | Forums | Wiki | Github

(THEMIS 2) How do you handle missing visit end dates?

Yes, agreed. That is now the stated convention. The above quoted post is from last year before the convention was formalized

FWIW, option 1 seems to make the most sense to me. Right now, we have discharge_to_concept_id NULL until a patient is actually discharged to somewhere, so that might also be an easy way to identify ongoing visits without assigning a value to this field.

With all respect, I do not agree with this assertion: if Iā€™m in the hospital for 7 days and Iā€™m still in the hospital, my total hospital time is 7 days ā€¦ and if I hand over my patient level data to someone for analysis as of that day, they should know that i was in the hospital for 7 days regardless if the analysis was performed a week later of a month later.

If we want to know that the patient is ā€˜still in hospital settingā€™, iā€™d recommend some sort of visit_status (like we have with condition-status) to indicate that. Or an observation if we feel that for the most part, visit_status will always be ā€˜dischargedā€™.

Iā€™m not clear on the use case where we need to know that the visit is completed and only completed visits are valid? A person who is in the hospital for 90 days doesnā€™t count for anything until they discharge?

yes, but ongoing as of when? See prior points: I run the query to get the total time person is in hospital, using get_date() on a null column to ā€˜fill it inā€™ gives me different duration based on the day I run the queryā€¦If I want to know how much time people are spending in the hospital, is your argument that people currently in the hospital donā€™t count?

Maybe the answer is to not populate the CDM with incomplete visitsā€¦(your Option 3). Not a fan of that choice tho, I donā€™t like ignoring dataā€¦

Why? Iā€™m not trying to be obtuse, I am generally interested in knowing this reason because thereā€™s some gap in my analytical thinking that this is an important point that I donā€™t understand.

Sorry, I looked up that ID, and itā€™s from the UB04 Pt dis status vocabularyID, I donā€™t see how that indicates ā€˜still patientā€™. I think that if we have a discharge_* column on the visit, any visit with a NULL discharge value could be interpreted as ā€˜not dischargedā€™ but for ETLā€™ers who arenā€™t populating that column, everyone would appear ā€˜not dischargedā€™ but I think this is where the value of NULL (or lack of a value) would make logical sense. (like @bailey described)

I think this is the source of confusion, @Chris_Knoll. The reason is simple: The length of a visit is a typical use case for outcome of a disease (the longer, the more severe the condition, or the higher the healthcare utilization). While a patient is still in the hospital we donā€™t know how long that is going to be case, so having the NULL value kick out those cases is exactly what we need. So, the length is not from beginning to some arbitrary ā€œnowā€, but from beginning to the actual discharge.

The discharge_to_concept_id is not meant to indicate whether or not a patient is discharged. Thatā€™s what the visit_end_date should do. The discharge* field indicates whether or not (NULL in this case) the patient maintains engagement with the healthcare system. If the patient goes home, or bolts against medical advice to go home, by definition there is no healthcare. Otherwise, if the patient goes to a rehab, or hospice, or some kind of home service the concept from the Visit domain will indicate so.

2 Likes

Still not clear why you require a discharge to know that a person has been in the hospital at least X days in order to certify a certain level of healthcare utilization. In the prior example, I was in the hospital for 7 days, at which point I developed a AE of a GI bleed, and weā€™re going to say ā€˜must have at least 3 days of healthcare utilizationā€™. Wouldnā€™t I qualify? (rhetorical) I feel like looking for the end date in the future of some outcome leads to a certain type of biasā€¦

Another way of saying: I donā€™t think the only use case of visits is ā€˜until they dischargeā€™. You could start a study (and I have) looking for VTE/DVT events after completion of a surgery (TKA). If the context of this was prospective capture of the data, people go from ER to a hospital bed in the same week, which I want to study. But I canā€™t because they havenā€™t been discharged yet. Iā€™m baffled, but I donā€™t want to beat a dead horseā€¦if the model doesnā€™t support the use case, thatā€™s fine, just need to be aware of it.

@Chris_Knoll:

If the use case is about things happening during a Visit or after admission than itā€™s fully supported. You wouldnā€™t look for the end date. Youā€™d take all the Procedures/Measurements/Conditions affiliated with the Visit. If the cross-link isnā€™t there, like in some data assets, you can still use the open-ended visit, because no end_date means the Visit was still going on at observation_period_end_date. Donā€™t see an issue.

ā€˜Total visit timeā€™ = Admission to discharge.

Your use case for an ongoing visit is valid and analysis can be completed on the unfinished Visit.

My use cases: length of stay, healthcare utilization, disease outcome, further utilization of healthcare services with a discharge to SNF or rehab, etc. Who leaves the hospital to go home and who goes to the morgue? These canā€™t be determined until the Visit ends.

concept_id = 32220 has concept_name = ā€˜Still patientā€™ with domain_id = ā€˜Visitā€™ and per conventions we are to use standard concepts with domain_id = ā€˜Visitā€™. Obviously, the ā€˜standardā€™ part is an issue since the concept is non-standard, but Iā€™d like to fix this :slight_smile:

According to Christian, discharge to a non-healthcare institution will not be represented in this field because it is assumed the Person went home. Also, this is NOT a required field and not all collaborators have this data.

Option #2 should satisfy all use cases. Itā€™s just against the rules right now. And I would like the rule to be changed to allow NULL Visit end_dates ONLY when a Visit is ongoing. If the Visit is not ongoing, then an end_date needs to be populated. Populating the date of ETL as the Visit end_date for an ongoing Visit is not necessary and will affect analysis

Whew :slight_smile: Iā€™m glad that weā€™re on the same page that this is indeed a valid use case.

yes, of course, if your analysis depends on the visit ending, then of course the visit must end, but the primary point of this thread is leaving visit_end_date null, and for your study those records wouldnā€™t have an impact. I would prefer that you could use discharge status to determineā€¦discharge status, and I appreciate the logical attraction to ā€˜visits that didnā€™t end donā€™t have an end dateā€™, but I need some help resolving the following:

Iā€™m calculating an incidence rate where Iā€™m going to calculate the number of cases / total follow up time. Weā€™re only going to use visits for total knee replacement, and weā€™re looking for an outcome of deep vein thrombosis.

In this data cut, I have people that are discharged and people who are ongoing recovery. For one person, they stayed in the hospital for 7 days without DVT issues, so they contribute 7 days of follow up. For another person, they developed DVT on day 4 of their visit, and left on day 8. This person contributes 4 days of follow up, and is a case.

But, I find a person who started their visit, and developed DVT on day 3ā€¦this person hasnā€™t been discharged, so I am able to find their follow up time (3 days) and put them into the denominator of my IR calculation. However, there is another person who started their visit, did not develop a DVTā€¦and there is no visit end date. I donā€™t think I can just ignore the person, as to not include their follow up time will bias my IR calculation. But they are contributing time without a DVTā€¦How many days should they contribute to my IR calculation?

Ok, so taking this direction, we would take the observation_period_end_date as the visit_end_date if visit_end_date is null. If we want to make this a rule, we should make sure that our tools apply this logic.

Iā€™ve been following this issue, but have refrained from commenting so far because, as an ETL developer, Iā€™m more interested in getting data in than getting data out. Our standard is not to put any hospital visit into OMOP until it is completed (discharged).

I have a background in Quality Improvement, and we did the same thing there. Our model was to use Statistical Process Control charts to track retrospective trends in data to avoid special cause variation. We required between 18-24 data points (usually monthly), so patients currently in the hospital were statistically insignificant.

It seems to me, research is much the same. Itā€™s looking at data statistically; not so much individually. Christian has often said that OMOP is observational data for research, not to run your hospital or insurance company. Is it also fair to say itā€™s not for near-term clinical decision making?

Now, if youā€™re using an OMOP database as a reporting database, then you certainly have a use case for including patient who are not yet discharged. You can use it however you like, but I donā€™t think that should influence the standard.

Sorry to be re-opening this topic after more than 3 years but it seems (as far as I can google) that it is still unresolved. Concept 32220 is still not standard and NULLs are still not permitted according to the 5.4 documentation. I think the consensus is that for many use cases (albeit not all) is to allow ongoing visits.

There seem to be a variety of use cases for the data but we are looking for one rule for ETL so can I suggest option #6:

NULLs are allowed for visit_end_dates only for ongoing visits (similar to several previous suggestions but without making any other change to ETL)

This means that discharge_to_concept_id is not used to indicate the visit status so we donā€™t need to worry about 32220.

Because the researcher is the only one that knows their own use cases, it is their responsiblity to decide what to do with such visits. If they want to exclude them, then thatā€™s easy to do. If they want to include count the LoS from admission date to the ETL date then they can coalesce with the ETL date from the METADATA table.

2 Likes

I would use the CDM_Source tableā€™s source_release_date column since it is a required table that all implementations should include vs the MetaData table that may or may not be utilized by everyone.

Although I understand that the Discharge To Concept ID is not meant to hold a patientā€™s actual status, it seems as if this column would more accurately describe the patientā€™s status than the Visit Type Concept ID.

If we were to make the Discharge To Concept ID column required (0 if unknown) and then have a standard concept for ā€œstill patientā€ it would enable us to write a data quality check that requires the Visit End Date to be populated unless itā€™s an ongoing visit.

Good point. I donā€™t know how many collaborators use the Metadata table.

Correct, the visit_type_concept_id, and all type concept_ids, hold the provenance of the record. Where did the record originate? This field is not about the person or their status.

The CDM only requires fields necessary for analytics: start dates for all clinical events, length of exposure to a drug, person_id in all clinical event tables, length of stay, etc. Where a person goes after a visit isnā€™t necessary for the majority of use cases and many data sources donā€™t have this information. We could make ā€œstill patientā€ a standard concept_id and allow the visit_end_date to be NULL. Or we could make ā€œstill patientā€ a standard concept_id and still require the visit_end_date to be populated. Or we could come up with another solution. The one thing we as a community need to do is decide on a solution which satisfies the use cases, doesnā€™t break any OHDSI tools and doesnā€™t break any studies. Or if something must be broken, then we must give it very thoughtful consideration from a wide audience to ensure it is absolutely necessary.

@KSimon, Thank you for your input! This has been an ongoing issue for quite some time. Letā€™s continue the discussion on this CDM GitHub issue.

t