I'm looking for advice structuring extensive medical histories for predicting future outcomes, specifically hospital admissions.

Let's say I want to predict the whether or not someone will be admitted to the hospital in the next 60 days from today and for each person I have medical histories with tons of data like blood pressure readings, weight, hospital admissions, illnesses, etc. going back 5 years. Of course, stats like blood pressure readings and weight and other stats are are not all happening on the same day, which is where I think I'm getting tripped up.

I'm thinking of this following scenario -- Let's say blood pressure is a good predictor of having a future hospital admission.

  • Patient One had blood pressure readings that were rising 5 years ago and then had a hospital admission 14 days later.
  • Patient Two had blood pressure readings that were rising 3 years ago and then had a hospital admission 11 days later.
  • Patient Four had blood pressure readings that were rising 2.5 years ago and then had a hospital admission 17 days later, but in the last year there were many instances of rising blood pressure that did not lead to hospital admission.
  • Patient Four has shown rising blood pressure measurements in the past but has never been admitted to the hospital.

How could I structure this data so that if all patients were having rising blood pressure readings now, it might lead to a prediction that

  • Patients One and Two might have a hospital admission in the next 60 days
  • Patient Three and Four would likely not be predicted to have a hospital admission in the next 60 days.

I guess I'm having difficulty wrapping my heard around how to use extensive past histories that do not line up for any given patients, with respect to time and data availability (For example, I might not ever have blood pressure readings for a given patient, but because they do not know how to navigate the medical system so they take the ambulance to the ER every single month, therefore, they would likely be predicted to have a hospital admission in the next 90 days on any given day), while also taking into account recency.

I was initially thinking of having a row for every day for every patient, but this does not let me fully utilize a patients entire history which I think will be very important. Here is another question I've been asking myself... let's say every row is a patient and i have a column called blood_pressure_reading. Is there a way to represent all of a patients blood pressure readings over the last 5 years inside one cell? Could I put an array of NULLs and actual readings going back the last 5 years here?


There are many options and many different problems here, I think you should start simple and then try to improve on it.

Imho the most basic option is to restructure the dataset so that there's one instance for every patient at any given time $t$, for instance every month. The binary label represents whether the patient was admitted to hospital in the period $t$ to $t$+60 days. The features should represent whatever relevant indicators can help the model based on past data (before $t$), for instance mean/standard deviation of the blood pressure in the past N months, possibly with various values of $N$ and/or a sliding window. This way both short-term and long-term information can be integrated. Occasionally you might have missing values, it's important to take this into account.

In this design there will be several instances for every patient, and this could cause a bias in the evaluation. There are two options: either there is one independent model for every patient, but this is probably too complex. Or the datasets is made of all the patients, and in this case it's important to avoid having the same patient in the training set and test set.

The problem of patients who would take an ambulance to the ER on a regular basis is a preprocessing problem: if possible, these instances should either be discarded or re-labelled as if it was a regular consultation, for example.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.