Hello- We are try to map the ‘standard’ SOGI questionnaire to OMOP CDM/Concepts and wondering if any site has already started this and would be willing to share. Epic has a standard flowsheet, so at least any Epic user, would be starting with same set of data collection points (variables) and possible responses (values) @MPhilofsky- if you know anything other work at CU on this. THanks
Hello @schillil,
We’ve got this same task on our roadmap. We’re planning to tackle it over the next 6-8 weeks, so I would be happy to compare notes.
We’ve designed a custom table in Epic Caboodle into which we’ll load the records from Clarity’s social_hx
and social_hx_alc_use
tables. Then we’ll load our OMOP observation
table from there.
Did this a few years ago, may work as a starting point
4.9.3 OBSERVATION FROM SOCIAL HISTORY
Social histories, social_hx, cover life style questions about a person’s smoking, drinking, drug use and sexual behavior. Most questions result in a YES or NO answer, a few questions result in a number, such as drinks per day, and type of contraceptive use will be recorded as value as string. The following table shows the concept identifiers to use. Note: for some Y/N questions the table reports both Y and N values, for others, only add a record if the response is Y (yes). When the value_as_string is Yes or No, also define the value_as_concept_id as 4188539 (Yes) or 4188540 (No). Do NOT create a record when the SOCIAL_HX column resolves to NOT ASKED.
4.9.3.1 Tobacco Use
Tobacco related patient observations should have the Observation.observation_concept_id set to 4041306 (Tobacco use and exposure). The concept describing the observations will be in the value_as_concept_id column. The existence of a record, assumes that the answer to the question is Yes.
Observation | Social_hx Column | Possible Response | Value as Concept Id | Notes |
---|---|---|---|---|
Tobacco Use | tobacco_user_c | 1-Yes | 4298794 (Smoker) | Need to validate against ZC_TOBACCO_USER |
2-Never | 4144272 (Never smoked tobacco) | |||
3-Not Asked | Do not create a record | |||
4-Quit | 4310250 (Ex-smoker) | |||
5-Passive | 4009853 (Second hand cigarette smoke) | |||
Packs Per Day | tobacco_pak_per_dy | If < 0.5 then | 4052029 (Light cigarette smoker (1-9 cigs/day)) | The value is text. The answers assume the text can be parsed into a number. |
>= 0.5 and < 1 | 4052030 (Moderate cigarette smoker (10-19 cigs/day)) | |||
>= 1 | 4052947 (Heavy cigarette smoker (20-39 cigs/day)) | |||
Tobacco use years | tobacco_used_years | Numeric 4151768 (Pack years) | The value is text. The answers assume the text can be parsed into a number. Multiple Tobacco Use Years times Packs Per Day. If Packs Per Day not defined or cannot be parsed use 1. The result will go in value as number. | |
Cigarettes Use | cigarettes_yn | Y-Yes | 4276526 (Cigarette smoker) | |
N-No | Do not create a record | |||
Pipe Use | pipes_yn | Y-Yes | 4218917 (Pipe smoker) | |
N-No | Do not create a record | |||
Cigar Use | cigars_yn | Y-Yes | 4246415 (Cigar smoker) | |
N-No | Do not create a record | |||
Snuff Use | snuff_yn | Y-Yes | 4043053 (Snuff user) | |
N-No | Do not create a record | |||
Chewing Use | chew_yn | Y-Yes | 4218741 (Chews tobacco) | |
N-No | Do not create a record | |||
Smoking Start Date | smoking_start_date | Date | 4141787 (Smoking started) | |
Smoking Quit Date | smoking_quit_date | Date | Set to zero No matching concept |
Observation field mapping for Social History, Tobacco Use:
Destination Field | Source Field | Applied Rule | Comment |
---|---|---|---|
OBSERVATION_ID | Observation sequence | ||
PERSON_ID | Social_hx.pat_id | Look up OMOP person id using the Clarity pat_id. | |
OBSERVATION_CONCEPT_ID | 4041306 (Tobacco use and exposure) | ||
OBSERVATION_DATE | Social_hx.contact_date | ||
OBSERVATION_DATETIME | Social_hx.contact_date | Same as observation date. | If date portion is not available default to 00.00.00 |
OBSERVATION_TYPE_CONCEPT_ID | 38000280 | ‘Observation recorded from EHR’ concept_id 38000280 | |
VALUE_AS_NUMBER | tobacco_pak_per_daytobacco_used_years | See description in above table | |
VALUE_AS_STRING | tobacco_user_c, cigarettes_yn, pipes_yn, cigars_yn, snuff_yn, chew_yn, smoking_start_date , smoking_quit_date | Set to the value for the Social History columns in the above table | |
VALUE_AS_CONCEPT_ID | Set to the value as concept_id in the table above | ||
QUALIFIER_CONCEPT_ID | Set to zero | ||
UNIT_CONCEPT_ID | Set to zero | ||
PROVIDER_ID | NULL | Foreign key into provider | |
VISIT_OCCURRENCE_ID | Social_hx.pat_enc_csn_id | Look up visit_occurence_id from visit_occurrence using pat_enc_csn_id | |
OBSERVATION_SOURCE_VALUE | tobacco_user_c, cigarettes_yn, pipes_yn, cigars_yn, snuff_yn, ,chew_yn, ,smoking_start_date, ,smoking_quit_date | Set to the values in the Observation column from the table above. | |
OBSERVATION_SOURCE_CONCEPT_ID | Set to zero | A foreign key to a concept that refers to the code used in the source. | |
UNIT_SOURCE_VALUE | Set to ‘packs per day’ for tobacco_pak_per_day and ‘years’ for tobacco_used_years | ||
QUALIFIER_SOURCE_VALUE | Set to NULL |
4.9.3.2 Lifestyle
Lifestyle questions are also contained in the Pat Encounter (pat_enc) file. They will be mapped OMOP fields using the following table. Do not include entries if empty in the source data.
Observation | Social_hx Column | Observation Concept Id | Concept Name | Units | Notes |
---|---|---|---|---|---|
Alcohol User | alcohol_use_c | 4226563 | Risk control behavior: alcohol use | none | 1-YES 2-NO 3-NOT ASKED |
Alcohol Oz per week | alcohol_oz_per_wk | 4052351 | AI - Alcohol intake | oz per week | No matching concept. Concatinate the number of ounces with ‘oz. per week’ and put in value as string. |
IV Drug User | iv_drug_user_yn | 4038710 | Drug injection behavior | none | Y-YES N-NO |
Sexually Active | sexually_active_c | no matching concept still fill in observation source value “sexually active”, value as string Y-YES N-NO | |||
Female Partner | female_partner_yn | 4283657 | Sexual orientation | none | If ‘Y’ value as string = ‘female’ |
Male Partner | male_partner_yn | 4283657 | Sexual orientation | none If ‘Y’ value as string = ‘male’ | |
Condom use | condom_yn | 4314454 | Contraceptive use behaviour | none If ‘Y’ value as string =“condom” | |
Pill Use | pill_yn | 4314454 | Contraceptive use behaviour | none | If ‘Y’ value as string = “pill” |
Diaphram use | diaphragm_yn | 4314454 | Contraceptive use behavior | none | If ‘Y’ value as string = “diaphram” |
IUD use | iud_yn | 4314454 | Contraceptive use behaviour | none | If ‘Y’ value as string = “iud” |
Surgical use | surgical_yn | 4314454 | Contraceptive use behaviour | none | If ‘Y’ value as string = “surgical” |
spermicide use | spermicide_yn | 4314454 | Contraceptive use behaviour | none | If ‘Y’ value as string = “spermicide” |
Implant use | implant_yn | 4314454 | Contraceptive use behaviour | none | If ‘Y’ value as string = “implant” |
Rhythm use | rhythm_yn | 4314454 | Contraceptive use behaviour | none | If ‘Y’ value as string = “rhythm” |
Injection use | injection_yn | 4314454 | Contraceptive use behaviour | none | If ‘Y’ value as string = “injection” |
Sponge use | sponge_yn | 4314454 | Contraceptive use behaviour | none | If ‘Y’ value as string = “sponge” |
Inserts use | inserts_yn | 4314454 | Contraceptive use behaviour | none | If ‘Y’ value as string = “insert” |
Abstinence | abstinence_yn | 4314454 | Contraceptive use behaviour | none | If ‘Y’ value as string = “abstinence” |
I’d love to participate. We use the full SOGI on Epic and have a fair amount of data to test against. Nothing, I think, is mapped yet.
Colorado hasn’t mapped the SOGI questionnaire to standard concepts. I haven’t analyzed these source data, but most questionnaires will map to the v6 Survey table. The Survey table is under active discussion in regards to UKB project and CDM v6 adoption. I thought there was a Survey WG, but I didn’t find info on the OHDSI wiki page.
@MPhilofsky @David_Dorr @DTorok @quinnt
Thank you all for the speedy reply. We are outlining all the elements/questions in the SOGI and the acceptable values as a first step. If anyone has done this already please share. If not, we’ll share what we do as soon as we finish. I can also start an OHDSI team site, where we could share this stuff. @quinnt (@David_Dorr) I’d be interested in the Caboodle structure you set up-- b/c Epic is proprietary we cannot post that somewhere available to all- so might share by email. Im at lisa.schilling@cuanschutz.edu. I’ll follow up in a bit but wanted to reply asap. THANKS!!
@MPhilofsky @David_Dorr @DTorok @quinnt
Update- We have taken the Epic Foundation SOGI form (which should be standard, as SOGI is ‘standard’) and aligned all the questions-response pairs in an xls to support OMOP mapping. I tell you that so you don’t repeat this effort- what you may all need to do is add additional responses that your organization may have allowed, which we did not.
Next steps-
- Where is the best place to post this xls so we can use it collaboratively? We’ve got some EpicIDs in the xls, which I might remove, but I could send that xls version via email, if you wanted.
- We will need to make a decision regarding which OMOP table- Survey or Observation (for the most part). I need to use this work before my institution rolls out V6 (we are V5.3.1). I’m not sure what the deciding features are for surveys- but SOGI is now considered part of our clinical exam, much like a past medical or surgical history, so I’d advocate for Observation, but I say that without understanding the philosophy/intent of the Survey table.
2a. We should present to the CDM WG regarding our intent and may sure we’re aligned with the community. - SOGI specific meeting- we should meet to kick this off-- will you all email me at lisa.schilling@cuanschutz.edu with subject OMOP SOGI, and I’ll work on setting something up.
Thanks!
@DTorok @quinnt @David_Dorr @MPhilofsky @marypmancuso
Update- I’m presenting the SOGI mapping to the CDM WG on 2/16 at 1 pm ET, 11 am MT with the goal of covering the below: (same as #2 above)- I hope you can join
We will need to make a decision regarding which OMOP table- Survey or Observation (for the most part). I need to use this work before my institution rolls out V6 (we are V5.3.1). I’m not sure what the deciding features are for surveys- but SOGI is now considered part of our clinical exam, much like a past medical or surgical history, so I’d advocate for Observation, but I say that without understanding the philosophy/intent of the Survey table.
2a. make sure we’re aligned with the community.
Please forward to me. Thanks!
@quinnt Hi Tim. Will you be attending the CDM meeting on 2/16? Would you email me at lisa.schilling@cuanschutz.edu, so I can send you info outside the forum. Lisa
The content is in OBSERVATION, @schillil. SURVEY contains metadata about conducting a survey.
Did you end up putting the spreadsheet anywhere to take a look?
What are we saying are the “standard” SOGI questions and responses that we are looking to have OMOP concepts for? Can we confirm that these are agreeably standard by sources in addition to the Epic Foundations system?