FHIR Chat · How to represent Exon & MSI marker data · genomics

Stream: genomics

Topic: How to represent Exon & MSI marker data


view this post on Zulip SangHo Kim (Feb 11 2022 at 00:46):

Hi,
The lab I am working with would like to store Exon # in FHIR (Variant Resource) but I can't seem to find any components relating to Exon data?
Regardless of whether this data is included/not included in current IG, is there any alternate ways to represent and store this specific Exon# data?
Below is an image of the report (NF1).
image.png

Also, the lab would also want to store marker results to represent MSI results.
Current MSI profile is only able to represent Stable, HIGH, LOW and I don't think you can store Marker Results within the same Observation Profile. Do you need to have them stored in a separate Variant Profile? If so how would you store Marker Data like below in a Variant Profile?
For example, the lab would result in MSI-HIGH if certain number of tested markers results return true.

Thank you!

view this post on Zulip Patrick Werner (Feb 11 2022 at 09:20):

Hi,
for MSI: you can derviceFrom the MSI Observation from the individual marker results. Each Marker as its own Observation.

view this post on Zulip Patrick Werner (Feb 11 2022 at 09:21):

Exon Number can be put into: http://build.fhir.org/ig/HL7/genomics-reporting/StructureDefinition-variant-definitions.html#Observation.component:cytogenetic-location

view this post on Zulip Bret H (Feb 11 2022 at 20:50):

Don't forget to use a reference accession id with the Exon number. Otherwise it's pretty useless and requires inference for a computer to use. If the lab expects this to be used for display only there is a .text section of the observation that could be used. OR they can send a rendered report with the Diagnostic Report....depends on what is trying to be accomplished. Patrick's pointed you to the element for providing cytogenic coordinates.

view this post on Zulip Bret H (Feb 11 2022 at 21:06):

Look to the other components for handing 'deletion' or the HGVS. Your HGVS should have a reference in it to be complete.

view this post on Zulip Kevin Power (Feb 11 2022 at 22:28):

If you use the component Patrick mentioned, you should be aware that other implementers might have chromosome/arm/band data in that component (like 1q21.1). Another possible option to capture the Exon # is to take advantage of the open slicing of Observation.component[], and use this LOINC code:

https://loinc.org/47999-8 (DNA region name [Identifier])

A human readable name for the region of interest. Typically Exon #, Intron # or other. NOTE: This is not standardized and is mainly for convenience and display purposes.

You could use that code, and then use 'valueString' to deliver the the result of "Exon 49" or something.

view this post on Zulip Bret H (Feb 12 2022 at 05:43):

using an extension:exon number is also an option but extensions can be ignored

view this post on Zulip Patrick Werner (Feb 13 2022 at 12:40):

Bret H said:

using an extension:exon number is also an option but extensions can be ignored

everything without a MS flag can be ignored ;-)

view this post on Zulip Patrick Werner (Feb 13 2022 at 12:41):

Kevin Power said:

If you use the component Patrick mentioned, you should be aware that other implementers might have chromosome/arm/band data in that component (like 1q21.1). Another possible option to capture the Exon # is to take advantage of the open slicing of Observation.component[], and use this LOINC code:

https://loinc.org/47999-8 (DNA region name [Identifier])

A human readable name for the region of interest. Typically Exon #, Intron # or other. NOTE: This is not standardized and is mainly for convenience and display purposes.

You could use that code, and then use 'valueString' to deliver the the result of "Exon 49" or something.

this answer is better than mine. Thanks Kevin

view this post on Zulip Lloyd McKenzie (Feb 13 2022 at 15:51):

And extensions with a MS flag can't be ignored - at least not if you claim conformance to the profile that declares the MS...

view this post on Zulip SangHo Kim (Feb 14 2022 at 00:21):

Bret H said:

Don't forget to use a reference accession id with the Exon number. Otherwise it's pretty useless and requires inference for a computer to use. If the lab expects this to be used for display only there is a .text section of the observation that could be used. OR they can send a rendered report with the Diagnostic Report....depends on what is trying to be accomplished. Patrick's pointed you to the element for providing cytogenic coordinates.

Thanks for all the response eveyone.

To clarify my understanding of the answers I have received...
@Bret H you are saying "depending on the use of the fhir resource, whether it be for system to system communication (like messaging) or for display purpose only (like SMART on FHIR) or big data use, you can utilize the value.text or observation.text element?"
So it's perfectly fine to store data as text? but if you store just as text it's hard to query the values right? (from what I know, HAPI FHIR servers or Azure FHIR API or FHIR itself has query-able elements and I believe just text can't be queried)

There isn't a strict rule for implementers to use CodeableConcept over regular text as values?
Thanks

view this post on Zulip SangHo Kim (Feb 14 2022 at 00:25):

Patrick Werner said:

Kevin Power said:

If you use the component Patrick mentioned, you should be aware that other implementers might have chromosome/arm/band data in that component (like 1q21.1). Another possible option to capture the Exon # is to take advantage of the open slicing of Observation.component[], and use this LOINC code:

https://loinc.org/47999-8 (DNA region name [Identifier])

A human readable name for the region of interest. Typically Exon #, Intron # or other. NOTE: This is not standardized and is mainly for convenience and display purposes.

You could use that code, and then use 'valueString' to deliver the the result of "Exon 49" or something.

this answer is better than mine. Thanks Kevin

This really helps me clear out and understand better in how to implement!
I personally concur with @Patrick Werner and @Kevin Power .
LOINC 47999-8 as a component of the observation (where cytogenomics guide isn't available) is more direct for me (as a non-expert).
So from my understanding, using the above code, I can just store Exon 49 (the number 49 as shown in above image)?

Is there a difference between Component and Extensions?

Thanks!

view this post on Zulip SangHo Kim (Feb 14 2022 at 00:28):

Patrick Werner said:

Hi,
for MSI: you can derviceFrom the MSI Observation from the individual marker results. Each Marker as its own Observation.

@Patrick Werner thanks for the response!

Questions on the MSI.
Would the individual Marker be observation variant profile?
If so where would you place the marker? would it be the gene studied component? (sorry for the lack of knowledge :( and thanks for all the help!)

view this post on Zulip Kevin Power (Feb 14 2022 at 15:14):

SangHo Kim said:

So from my understanding, using the above code, I can just store Exon 49 (the number 49 as shown in above image)?
Is there a difference between Component and Extensions?
Thanks!

To your first question, yes. The Observation.component[].value[x] is a polymorphic element, so there is a choice of data types. You can see them here:
http://hl7.org/fhir/R4/observation-definitions.html#Observation.component.value_x_

To your second question, 'component' is a generic array of name/value pairs that can be delivered as part of a single observation, and should be used for any supporting result that cannot reasonably be interpreted and used outside the scope of the Observation it is a component of. In the case of our genomics reporting implementation guide, we use components to deliver 'annotations' about the concepts represented in our IG (review the Variant profile to see more). For additional background, I would recommend reading up on the entire Observation resource, then closely review 'component' and the section about grouping of observations:
http://hl7.org/fhir/R4/observation.html
http://hl7.org/fhir/R4/observation-definitions.html#Observation.component
http://hl7.org/fhir/R4/observation.html#obsgrouping

Regarding extensions, it is a core FHIR topic that you will certainly want to read more about - this is the place to go:
http://hl7.org/fhir/R4/extensibility.html

To compare the two, component is a 'built in' way to deliver supporting results that are specific to the Observation resource. By contrast, extensions can be made to almost anything in FHIR as needed by certain use cases. In either case, it is vital to understand the underlying principles first, then closely review how implementation guides (like Genomics Reporting) use those principles to make more standardized implementations possible.

view this post on Zulip SangHo Kim (Feb 22 2022 at 09:13):

@Kevin Power
Thanks for your response!
As a non-expert it is very interesting learning FHIR and how to express Genomic data in FHIR.
But it is extremely hard too :p

view this post on Zulip Kevin Power (Feb 22 2022 at 14:11):

SangHo Kim said:

Kevin Power
Thanks for your response!
As a non-expert it is very interesting learning FHIR and how to express Genomic data in FHIR.
But it is extremely hard too :stuck_out_tongue:

One of my favorite old sayings applies here - "If it were easy, everyone would do it" :smile:

Joking aside, you are asking a lot of great questions, and we really do appreciate you bringing your use cases and your questions. They will make our IG better in the future.

view this post on Zulip SangHo Kim (Feb 22 2022 at 16:05):

I am receiving a lot of great and warm help here. I should be the one thanking!
Thought, it's great that the discussions and use case is of help! :blush:


Last updated: Apr 12 2022 at 19:14 UTC