OHDSI Home | Forums | Wiki | Github

Dilemma of presenting surgery non-standard data to OMOP model


(Guy Livne) #1

Hi All,

I’m new in OMOP solution, and as the first use case to implement into the OMOP model I use surgery data.

As far as I learned, I use the Procedure_Occurrence for surgery start and end time, type and other information.

There is additional information that I thought of representing in an external table, like: Time of anesthesia, time of first cut, type of anesthesia, also information during plan phase of the surgery like surgery type, planned date and time, etc.

The general question is if it recommended using external ‘subject dedicate tables’ and if those tables can be representing in ATHNA and ATLAS applications?

Thanks in advance,


(Christian Reich) #2


Well, right now there is no end datetime. If you have that kind of granularity you should submit an issue so we can consider adding it.

Currently, that is it’s own procedure record. Assuming there is only one surgery per day no special linkage between anesthesia and surgery is needed. If you think this is too much of a simplification let us know in the same issue.


We don’t have that. If you have detailed information like this also bring it up.

We generally don’t store plans, only actions. Again, if you have a use case bring it up and we should think how to support it.

(Antoine Lamer) #3

Hi @guy_livne, Hi @Christian_Reich

I face the same difficulties with integrating anesthesia procedure:
An anesthesia procedure is a procedure itself, linked to one or more surgical procedures.
In one day there may have one or more anesthesia procedure (as a patient may be re-operated).

During the anesthesia procedure, some events occurred : incision, induction, end of surgery, end of anesthesia, intubation, extubation, liver clamping … all these events occured around the anesthesia/surgical procedure, and their timings is important in the way they impact analyses of measurements.

@guy_livne perhaps we could continue to explore other aspects of operative events not taken into account for now ?

(Michael Gurley) #4

@AntoineLamer @guy_livne

Hello, in the OMOP Oncology Extension (which is still in the DEV branch validation phase), we have introduced the idea that an Oncology Diagnosis (CONDITION_OCCURRENCE or EPISODE) or an Oncology Treatment (PROCEDURE_OCCURRENCE or EPISODE) can be "modified’ with characteristics within the MEASUREMENT table via the addition of two new fields:


See data model here

Sounds like these kinds of properties you want to analyze about surgeries could unambiguously be related to entries in the PROCEDURE_OCCURRENCE table via the new fields in the MEASUREMENT table.

As far as associating two or more surgical procedures together to address “your
anesthesia procedure is a procedure itself, linked to one or more surgical procedures.”, I would suggest we add a procedure_occurrence_parent_id field to PROCEDURE_OCCURRENCE table that would allow for the main surgical procedure be the parent of its child surgical procedures.

Most EHR surgical scheduling data models that I have worked with have the concept of a “primary” surgical procedure that can be linked to one or more subsidiary non-primary surgical procedures. This is often done with a 'Surgical Case" construct.

To me this is an example of where OMOP’s distaste for representing “connections” between clinical events gets in the way of many common sense use cases. If these connections live in the real world data, I don’t know why we torture ourselves by dropping the connections when we import the atomic clinical events into a Common Data Model. Forcing us to rely on dubious “on the same date” logic.

(Antoine Lamer) #5

Hi Michael,

I am very interested in your proposition. We could model episode of surgery, anesthesia, but also the episode between the induction of anesthesia and the start of surgery which is use to study hypotension (following the administration of hypnotics).
Moreover, episode and episode event could also by used to modelize episode of adverse events based on measurement.
Example : episode of hypotension detected with arterial pressure measurement.hypotension

(Rimma Belenkaya) #6

Episode table is intended to store meaningful aggregate of multiple events representing disease or treatment episodes. For example, you may store a surgery (surgical case) in the Episode table while storing individual procedures, including anesthesia, related to this surgery in Procedure_Occurrence. Links between individual procedures and the episode of surgery would be stored in Episode_Event.

However, I don’t think we should be using Episode module for storing timed components of surgery or other procedures. I don’t think that in the CDM now, there is an appropriate construct for representing procedure components. If there is a use case that requires analysis of procedure components, I suggest creating a table similar to Visit_Detail.

(Antoine Lamer) #7

Hi Rimma,

Thank you for these clarifications. Indeed, a table similar to visit_detail could be useful.

In the case of the surgery in the episode table, you mean not only the surgical act (stored in procedure_occurrence) but also the whole stay ? or recovery period ?

(Antoine Lamer) #8

I tried to summarize on this figure the different events that can be used to calculate time ranges:

From a clinical point of view, the anesthesia and surgery are not only acts linked to each other (as it may be for billing purpose). They’re more like a succession of events (entry to the operating room, start of monitoring, anesthesia induction, airway mangement, etc …) which can be used in a second step to compute durations.
All the duration (induction, maintenance, emergence, recovery room, anesthesia) may be used in analytics, mainly as adjustment factor or for detecting adverse events (as hypotension).

Here are two examples:

Hypotension may be detected between anesthetic induction and surgical incision or between induction and extubation, depending on the question being addressed.


We may want to explore the evolution of heart rate around the administration of atropine (in the operation theatre), with sliding window around the administration date.


To address these issues, proposition of @mgurley is interesting if episode_start_date and episode_end_date may store all the events detailed in the first figure.

(Qi Yang) #9

@guy_livne @AntoineLamer

Surgery and anesthesia time information are stored in Observation table. Each time point is one record. Some of the concept_ids are:

40483133 Start time of procedure
40482217 Completion time of procedure
4171540 Anesthesia preparation time
4161949 Anesthesia start time
4160029 Anesthesia finish time
40480482 Time of induction of anesthesia
40483093 Time of establishment of adequate anesthesia
40483530 Time of discharge from post anesthesia care unit
40481318 Time of patient arrival to location for anesthesia
40482694 Time of patient arrival in post anesthesia care location
40483565 Time ready for discharge from post anesthesia care unit
40483182 Time of arrival of anesthesia care provider to anesthetizing location

After putting these information in Observation table, they will be linked up with the actual surgery in Procedure table via Fact_Relationship table. I have provided an example in here.

(Antoine Lamer) #10


Thank you again for your help @QI_omop. Indeed, these concepts correspond to what I need. Moreover, concept 38000280 Observation recorded from EHR match with observation_type_concept_id.

In a second step, if we detected hypotension based measurements and period (in Observation), could we store the result in Episode table ? For example, in my first figure, the episode 1 between T1 and T2.

One last question, do we prefer LOINC or SNOMED concepts ? as many are similar.

(Qi Yang) #11

Sorry for a delayed response.

In a second step, if we detected hypotension based measurements and period (in Observation), could we store the result in Episode table ? For example, in my first figure, the episode 1 between T1 and T2.

There is CDM Working Group discussing question like this. If you think you have a strong case of using Episode table, you may want to propose it in the working group meeting.

One last question, do we prefer LOINC or SNOMED concepts ? as many are similar.

For condition, SNOMED is preferred and is the standard. For lab test, LOINC is used as standard in most cases.