AIDAVA-DEV / AIDAVA-Reference-Ontology

AIDAVA Reference Ontology
1 stars 0 forks source link

boolean problemConditions #106

Open SarehAghaei opened 5 months ago

SarehAghaei commented 5 months ago

As I mentioned several times in previous meetings, we have boolean columns, such as problemCondition, in a table.

If we use hasCode to specify the corresponding SNOMED CT code that problemCondition refers to, then how can we assign/specify the boolean value (coming from a value set including True and False) when the cardinality of hasCode is 0...1?

This issue is very important as we have this situation in one of the main tables in BC (TUBOARD_ANMELDUNG). If the plan is to have a pretty comprehensive mapping in G1 (discussed in the site architect meeting on the 6th of June ), how we can proceed the mapping for TUBOARD_ANMELDUNG table?

rcelebi commented 5 months ago

Hi Sarah, I think you are missing a step which use OpenRefine transformations. You have to transform every value in the column to proper Snomed-CT code, in your case you should write the following Python code. if value == 1: return "SNOMED-CT CODE for this condition" else: return None

Please refer to our Onboarding Tools Tutorial

KateSerafimova commented 5 months ago

In this case we haven't made changes in the ontology to allow to list conditions and their presence or absence, but an option would be to map the condition to the snomed code and (use hasCode for the condition itself) and use hasStatusCode to map to a SNOMED code that will show the status based on the annotation guidiline: ClinicalStatus:

Active | x | 394774009 |Active problem (qualifier value)| Inactive |   | 394775005 |Inactive problem (qualifier value)| Resolved |   | 410513005 |In the past (qualifier value)| Recurrence |   | 255227004 |Recurrent (qualifier value)| Remission |   | 277022003 |Remission phase (qualifier value)| Relapse |   | 263855007 |Relapse phase (qualifier value)|

So here the possible values would be:

However, this is not precise. It would be better to have the verificationStatus in that case, which is available for Allergies, but not for Problem condition. So it is to be added to the ontology.

VerificatinStatus Unconfirmed |   | 410590009 |Known possible (qualifier value)| 415684004 |Suspected (qualifier value)| Provisional |   | 410592001|Probably present (qualifier value)| Confirmed | x | 410605003 |Confirmed present (qualifier value)| Refuted |   | (410594000 |Definitely NOT present (qualifier value)|)410516002 |Known absent (qualifier value)| Entered-in-error |   | 723510000 |Entered in error (qualifier value)| Unknown |   | 261665006 |Unknown (qualifier value)|

SarehAghaei commented 5 months ago

Hi Remzi and Katerina, Thanks for your comments. I do not think it can be fixed with OpenRefine but Katerina's solution seems to be correct. Then, considering what is available, I use hasStatusCode with Confirmed present or Not present (410605003 |Confirmed present (qualifier value)| 410594000 |Definitely NOT present (qualifier value)|)- however this may trigger some shacl rules later.

SarehAghaei commented 5 months ago

Moreover, we have a similar situation with bodySites. It means there are several boolean columns referring to specific body structures. e.g., 19100000 |Structure of lower inner quadrant of breast (body structure)| 33564002 |Structure of lower outer quadrant of breast (body structure)| 49058007 |Structure of central portion of breast (body structure)| 77831004 |Structure of upper inner quadrant of breast (body structure)| 76365002 |Structure of upper outer quadrant of breast (body structure)|

Looking forward to the solution in the next step.