How to model lab/test results in CIEL

All of the groups I have worked with in the past have done the simple thing, e.g. if you’re recording a hemoglobin you just record that as a single obs, like:

  • obs.concept = hemoglobin
  • obs.valueNumeric = result
  • obs.obsDatetime = specimen collection date if known, else date recorded
  • obs.order = order this is in response to (not used if this is entered from paper)

I had always assumed that @akanter suggested that a better model would be to suppose we use a standard concept set for all the (optional) surrounding data, e.g. specimen collection date, result date, specimen ID. E.g. something like this HIV Test Result construct from CIEL, but generic.

I would suggest that for (a) compatibility with the easy/common way of doing things, with (b) support for a more sophisticated model, we try to define a standard construct for lab results that includes all the supporting information as additional observations, but stores the actual test result as the value of the test. (Not like in the HIV test construct I linked to above.)

E.g. you’d have:

  • Lab Test Construct
  • (Test and result, e.g. hemoglobin in my example, not explicitly in the concept set)
    • this is where we’d store the test result
    • obsDatetime of this obs should be the best possible approximation of the relevant clinical date
  • Date test ordered (162078)
  • Specimen collection date (159951)
  • Date test resulted (162079)
  • HIV test result received date (160082) => actually replace with a non-HIV-specific concept
  • Test context status (162084)
  • Specimen number (162086)

This representation is also easier for simple analyses, because you can just query for an obs of “hemoglobin > 5” instead of having to query for an obs group with an obs with “test = hemoglobin” and “numeric test result > 5”.