OHDSI Home | Forums | Wiki | Github

Tying Concepts Together


I’ve run into a bit of an issue when trying to code certain tests using the OMOP framework. I am working on creating a Data Commons for Food Allergies and have encountered the following issue.

There are three types of tests that are done to confirm food allergy. Skin Prick, RAST blood test, and Oral food challenge. All three of which have codes within the Common Vocabulary. However, I need to know what particular food is being tested for in relation to the test.

As far as I can find, no concept code exists for a skin prick test for a particular food, though I do, in most cases, have concept codes for the skin prick test, the food, and even the particular food allergen being used in the skin prick test. Ideally there would be a modifier concept field in the MEASUREMENT table to create a gestalt “skin prick test” for “wheat allergen”, however, none exists.

Does anyone have any suggestions on how to implement this particular scenario?

Thank you for your help,

Probably this is a case where we should have the pre-coordinated concepts for all possible test-allergen combinations.

Instead of the fact of testing you can probably record a fact of allergic disposition’s presence/absence. Not the most elegant solution in order to use the analytical tools, but still:

To store the positive test result use:

  1. 4188027 Allergy to food
    any of the descendant specific concepts.
  2. If there is no specific concept, map allergen to value_as_concept_id.
  3. Use qualifier_concept_id to specify the confirmation method.

To store the negative test result use:

  1. 4181022 No known food allergy
  2. Map allergen to value_as_concept_id.
  3. Use qualifier_concept_id to specify the confirmation method.

The list of possible qualifier_concept_ids:
37209215 Skin prick
37398194 RAST test
4091609 Oral provocation test

Thanks for the help. As you said, not the most elegant solution, but it should be workable.

I thought the convention in the cdm is to not capture negative observations? If you did, then everyone needs to have all their negative findings recorded, and I don’t think that’s feasible?

In this particular case it’s a negative result of the lab/clinical test what normally should be captured, I think. But we lack of proper concepts for them, so turning it into clinical observations is just a possible solution.

Also, some negative observations might be valuable. The things like absence of family history/allergy/certain diseases. Not all of them for sure.

I think I’d record that the alergy test was performed in procedure (ie: not the results of the test, but the procedure to apply the test happened’ and then look for observations (or diagnoses) of any descendant of ‘Food Alergy’ (if i wanted to know those people who were tested and had a finding of an alergy’. I think if you don’t see an observation of some codition in the cdm, you should assume that they don’t have something…capturing ‘No food alergy’ for only a select few people raises doubts that every other person in your may have a food allergy, where it’s likely the case that they do not, even if you didn’t specify it.

Just my 2 cents, but I firmly believe everyone leveraging the CDM should have the same expectation of the data

I also worry about things that are ‘in this particular case’ because then you have a system of exceptions and not rules.


Of course negative information has value. The question is if and how to record it. Here is the conundrum: If we start recording negative values we will need to do that consistently. In other words, the patient didn’t have a heart attack today, didn’t have one yesterday, didn’t have one the day before, etc. You would have to list everything that didn’t happen. Or define eras of things that didn’t happen. The size of your data store would quickly be measured in petabytes. There is a reason we don’t do it that way: Most things don’t happen (thank God).

What you perhaps meant to say is that negative information makes sense for permanent types of information, like the allergies and family history. So, you’d only record that once, correct? Except these things tend to also change, allergies can be developed, and your parent might fall ill with a new disease.

The next idea people have is to record a negative fact when the positive facts are not reliably determined or captured. So, the explicit information “no lymph nodes affected” in a cancer is a different information than if nobody looked. And often this is the case.

The problem is nothing is ever 100% captured. No concept has a 100% sensitivity. But we are relying on it anyway for observational research: to calculate rates and relative risks of things. With the exception of the MEASUREMENT table we assume:

Axiom 1: If there is a record it happened
Axiom 2: If there is no record it didn’t happen

Axiom 2 is where we routinely get in trouble. What we really need is a systematic way to determine sensitivity and specificity of every concept, and then bake these into our statistics.

Adding negative records will throw is into an abyss: All methods and all cohort definition practices would have to change. We would always have to do both: “Give me all patients who had an heart attack” and also “Exclude all patients that have an explicit record that they didn’t have an heart attack”. Setting the right timing of the latter alone would drive us crazy. And we would for sure get a huge number of contradictions.

Let’s not go there.

Wrt to the above allergies, @Alexdavv. They should be Measurements, not Observations. And the qualifier is not for shoving in additional information. Looks like we need to revise it:

We have two options:

  1. We combine the methods, like your above skin prick, RAST test and provocation test, with all the allergens to create LOINC-like rich Measurement concept. The value_as_concept_id would contain positive, negative or null. However, that would require (and later maintain) a derived vocabulary. We should ask LOINC what their plans are.

  2. We create two Measurement records:
    a) One method record
    b) Many allergen - positive/negative combo records

The latter would need a FACT_REALTIONSHIP link between a) and b).

Let’s put on the list of things to do.

Sorry, why wouldn’t the administration of the test be a procedure? Performing the test itself is not a measurement…the finding of the allergy is the measurement (if you accept that the measurement is 'Allergy to Food" measurement_value: positive). So couldn’t we just leave those LOINC concepts alone (indicating the allergy test) like RAST Test (which, is in obseration but not procedure?) and just store the finding of the allergy in the measurement table (as in an alergy was measured positively)?

My concern about combining these 2 ideas (the test procedure and the finding result measurement) seems like we’d have a explosion of concepts to record every possible test-type with outcome finding (which get’s worse if we actually measure the reaction (mild, medium, severe, catastrophic) as the actual measurement, leading to concepts like:

Mild allergic rhinitis via Skin prick Test
Medium allergic rhinitis via Skin Prick Test
Severe allergic rhinitis via Skin Prick Test
Mild allergic rhinitis via Oral Provocation test

Also strange that the Oral Provocation test has a concept class of ‘Procedure’ but has a target domain of Measurement…I’d think the Oral Provocation is what’s being done to the patient, and the various allergic findings would be measured as a result.

Yes, it needs cleaning up.

True. We always have the situation that you need a Procedure to get a Measurement. In the simplest case it’s a venipuncture (blood draw). And we are not recording these. We assume these as default.

You are correct, here it is not useful to do that. In fact, the prick test and the oral provocation are truly Procedures. RAST is not, it’s a lab procedure to measure IgE, and thus part of a Measurement.

None of this should be an Observation. These are actions to determine certain quantities = Measurements.

And yes, pre-coordinating everything could result in an gigantic carthesian product, which we don’t want. On the other hand, the logic of a Measurement is asking one question and getting one answer. So, testing for one allergen should be one Measurement.

Let’s do a little research and get back to here.

Thanks, @Christian_Reich, very thoughtful, as usual.

Only thing I think we will continue to disagree with is the following:

IMO: The RAST is the procedure (recorded in Procedure) , and lgE is measured (so recorded in Measurement).

Your venipuncture is a good example of ‘an action performed on a patient’ but it’s a bit of a red herring: a venipuncture is something that can be used in a myriad of procedures, while RAST or Skin Prick or Oral Provocation are very specific instances of ‘actions on patients’ which has some meaningful context. venipuncture is akin to held patients left hand or reclined patient in chair which is not really descriptive of a procedure being performed. I think there is a line to be drawn about how much detail we need to capture. venipuncture is a good example of something we wouldn’t capture. However: we would capture that blood was drawn as a procedure, yes? Or is blood draw also something that is too nebulous to a record in the CDM?

Since it sounds like there is interest in knowing what procedures yielded which measurements (ie: if you had a panel, you may get several measurements from that single panel procedure). Maybe a reasonable extension to the CDM is to add a column to MEASUREMENT that references back to a procedure_occurrence_id so that procedure-to-measurement associations can be made. Again IMO, this would be preferable to fact_relationship.

Thanks, @Chris_Knoll. And likewise. Usually, responses from you need no further refinement.

Hm. Rast, or Radioallergosorbent testing, is something that you do on a blood sample, just like Glucose levels. It measures the levels of IgE antibodies to certain antigens by adding the antigen and then radioactively labeled anti-IgE antibodies. So, it’s a typical lab procedure, and the human body is untouched (except the venipuncture), which by our standard is not a procedure, but a Measurement.

We absolutely need that. And are working on it. And talking to LOINC and SNOMED. There is a LOINC meeting coming up, where @Polina_Talapova is going to present on LOINC-SNOMED mapping.

Understood, and I hope we can change this standard in the future. To do propose a metaphor: I feel like the way we describe measurements today would be the same as describing a ruler as a ‘measurement’ instead of thinking ‘measure (verb) a patients arm with a ruler’ as the procedure and ‘the measure(noun) was 6 inches’ as the measurement.

:slight_smile: Good metaphor. The problem is this: There are diagnostic procedures, whose point is to measure something “with a ruler”. But there are also many therapeutic procedures with no “result” (use the ruler to fix a broken bone). But even the diagnostic procedures: What is the result of a, say, diagnostic laparoscopy?

While what they do in the clinical lab to measure the glucose level, using biochemical or spectroscopical methods - irrelevant to the patient and clinical practice.

Not easy. It’s like a short blanket: You pull it to one side and it is missing on the other.

(End of metaphors).

The finding of:

  • An abdominal mass or tumor
  • fluid in the abdominal cavity
  • liver disease
  • the effectiveness of certain treatments
  • the degree to which a particular cancer has progressed

I can think of numerous studies where the method of detection of a disorder is evaluated for efficacy for interception in future complications. This is precisely relevant to the patient and clinical practice.

Was the original question about pre-coordination ever fully answered? How do you record a test for a particular antigen when the standard concepts only include the test type and antigens separately? The ultimate implication for the patient is that they have an allergy to a particular thing, but the fact that I did a skin test for animal dander and it was positive. I am not sure why the outcomes got pre-coordinated with the specific form of test. Is there a wiki page for best practices for this that I can review? I didn’t obviously see this in the book of OHDSI, but I might have missed it.


The pre vs post-coordination: No, we haven’t. We need to. We need to define whether we allow positive tests as a pre-coordinated thing. We have that with the Corona test very acutely. The problem if we say yes is that we need to pre-coordinate a large amount of combinations, leading to permutational explosion. If we decide the other way we have to split up concepts like that. Which is work. So, so far we have done very little. But it is about time.

Your situation is actually worse. Because it is a triple: allergy test - positive - dander. Same is with microbiology: organism - antibiotic susceptibility - positive.

How do you handle this?