FHIR Chat · HGNC gene symbol · genomics

Stream: genomics

Topic: HGNC gene symbol


view this post on Zulip Patrick Werner (Nov 25 2019 at 18:50):

During the DevDays i was asked what implementers should do if they don't know the HGNC Gene ID, german labs are only reporting the approved names and are afraid of lookups.
Do you think it would be a good idea to create a HGNC approved symbols VS (BRCA2, EGFR, ...) and a component to put this into?

view this post on Zulip Jamie Jones (Nov 25 2019 at 19:02):

Tough to support both id and name in my opinion, voted specifically to support the IDs over the names.

Multiple lookups are needed in the domain, how did they get the HGNC names themselves if not from a lookup? It seems that's the service they should look at upgrading to ease compliance :)

view this post on Zulip Patrick Werner (Nov 25 2019 at 20:40):

Thats why i'm thinking of a new component, coded to represent HGNC approved Symbols.
This use case was brought to me by labs, and lately by the "german medical IT initiative" a quite big funding for german university hospitals to exchange data. If they have structured variant data, the genes are represented as symbols. I personally would implement a lookup into my solution, but there are implementers which will stuck to the symbol.

view this post on Zulip Patrick Werner (Nov 25 2019 at 20:42):

Instead of not supporting this use case and telling them to implement lookups, i'd rather show them a component.

view this post on Zulip Jamie Jones (Nov 25 2019 at 20:45):

What about groups "locked" into using Entrez IDs? We have to make a cut-off at some point but I agree the symbols are common currency.

Open slicing can currently allow them to send it instead with a different code, and it may be a good idea to get it on the list. It would probably be a re-vote ruling though (since our current guidance specifically states the name should be coded as display).

view this post on Zulip Jamie Jones (Nov 25 2019 at 21:30):

Are we sure there's no way to leverage the other discussion re: identifiers.org here? Since HGNC exposes multiple code systems:
hgnc
hgnc.symbol
hgnc.family
hgnc.genefamily
could have the slicing on the component.value.Coding require either hgnc [id] or hgnc.symbol per that system (or something else that gets the job done).

view this post on Zulip Kevin Power (Nov 25 2019 at 22:25):

Whether we use identifiers.org or just do our own 'HGNC Symbol' code system doesn't matter (to me) - I think we need to decide if we are comfortable enough with having the option to send the symbol. I was betting this would be some feedback we would get (and quickly) from the implementer community.

view this post on Zulip Kevin Power (Nov 25 2019 at 22:41):

And FWIW - I happen to be OK allowing the symbol only. I am fairly certain I supported the ID only approach, and still do on principled grounds. But getting closer to implementation makes me OK reconsidering.

view this post on Zulip Bret H (Nov 26 2019 at 15:59):

@Kevin Power @Patrick Werner @Jamie Jones It is dangerous to use only HGNC gene symbols, the synonyms and symbols change. The HGNC identifier does not. You have a risk of reporting on the wrong gene if you rely on symbols. USE THE DISPLAY part of the Codeable concept to send the symbol.

view this post on Zulip Bret H (Nov 26 2019 at 16:00):

the HGNC code goes into the code portion

view this post on Zulip Patrick Werner (Nov 26 2019 at 16:05):

i agree, i'm just talking about real-life. Our Reports are containing GENE Symbols only.

view this post on Zulip Bret H (Nov 26 2019 at 16:16):

Ya. That means there is a risk to patient care

view this post on Zulip Bret H (Nov 26 2019 at 16:16):

in real life

view this post on Zulip Bret H (Nov 26 2019 at 16:17):

I'm pretty flexible with most of the standard, but bad practices. HGNC ids versus symbols is one area I am less flexible due to the risk in patient care

view this post on Zulip Patrick Werner (Nov 26 2019 at 16:18):

If you look at reports like Foundation One or the lab we are working with

view this post on Zulip Bret H (Nov 26 2019 at 16:19):

Does not mean it is a safe practice to use only gene symbol.

view this post on Zulip Bret H (Nov 26 2019 at 16:19):

If you want we could just go backward and have one large text field

view this post on Zulip Bret H (Nov 26 2019 at 16:19):

: ^ )

view this post on Zulip Bret H (Nov 26 2019 at 16:20):

There is a cost in adopting FHIR

view this post on Zulip Bret H (Nov 26 2019 at 16:20):

part of that is tooling to handle the terminology pieces better.

view this post on Zulip Jamie Jones (Nov 26 2019 at 16:20):

Just because the reports display only the names shouldn't stop the systems from being strict with the codes

view this post on Zulip Patrick Werner (Nov 26 2019 at 16:21):

No it doesn't. But instead of users only filling out CodeableConcept.text with the Gene Symbol (which then wouldn't be validated) i'd prefer a component specifically for the symbol. Then we can do a validation of this component with an approved symbol ValueSet

view this post on Zulip Bret H (Nov 26 2019 at 16:21):

That's the point. Foundation one is being asked to use HGNC Gene ID to adopt the profiles

view this post on Zulip Bret H (Nov 26 2019 at 16:22):

if we leave it as it currently is

view this post on Zulip Patrick Werner (Nov 26 2019 at 16:22):

Just because the reports display only the names shouldn't stop the systems from being strict with the codes

i agree.
I am only reporting push back i got from implementers.

view this post on Zulip Bret H (Nov 26 2019 at 16:23):

is there enough information for you to push back to them? or are you unconvinced? @Patrick Werner

view this post on Zulip Patrick Werner (Nov 26 2019 at 16:28):

i'm not sure tbh. We will see if i can convince them to use a lookup.

view this post on Zulip Bret H (Nov 26 2019 at 16:29):

"the Hl7 CG WG voted to use HGNC ID due to problem with overlap in gene symbols and the potential for Patient Harm" hope that is useful

view this post on Zulip Kevin Power (Nov 26 2019 at 17:03):

Not to be too snarky here, but a question we will likely get in the real world - are any of these concerns (overlap in gene symbols, symbols that have changed) for genes that labs report on today? I honestly have no idea, and maybe even the possibility of an issue is too much to bear.

view this post on Zulip Bret H (Nov 29 2019 at 15:48):

Yes there are. We'll have to look back through work group calls to find the details. Implementing a mapping between the symbols a lab has and HGNC ids is a small task compared to adopting FHIR - and it decreases a possibility in patient harm.

view this post on Zulip Bob Milius (Mar 19 2020 at 21:08):

What's the current status of this? Should resource instances that use HGNC gene symbol from genenames.org validate without error against the IG?

view this post on Zulip Bob Milius (Mar 19 2020 at 21:41):

I'm getting a warning when I do this, and that's okay, but when I try to validate the same instance to a derived IG and I bind to a valueset that contains a subset of HLA genes, I get errors. Might be an issue with my IG, but not sure. Here's the valueset I bound it to.

{
  "resourceType": "ValueSet",
  "id": "hla-gene-name-value-set",
  "url": "http://example.org/fhir/hla-reporting/ValueSet/hla-gene-name-value-set",
  "version": "0.1.0",
  "name": "HLAGeneName",
  "title": "HLA Gene Name Value Set",
  "status": "active",
  "date": "2020-03-19T15:52:47-05:00",
  "description": "HLA Gene Names",
  "compose": {
    "include": [
      {
        "system": "http://www.genenames.org",
        "concept": [
          {
            "code": "HGNC:4931",
            "display": "HLA-A"
          },
          {
            "code": "HGNC:4932",
            "display": "HLA-B"
          },
          {
            "code": "HGNC:4933",
            "display": "HLA-C"
          }
        ]
      }
    ]
  }
}

view this post on Zulip Patrick Werner (Mar 20 2020 at 07:04):

what errors are you getting?

view this post on Zulip Kevin Power (Mar 20 2020 at 14:27):

And can you share the instance you are trying to validate?

You have probably seen in the Genomics Reporting IG, but here is the HGNC value set:
http://build.fhir.org/ig/HL7/genomics-reporting/valueset-hgnc.html

During validation, we do see errors like this from the validator (you can see them in http://build.fhir.org/ig/HL7/genomics-reporting/qa.html):

Path    Severity    Message
Observation/SNVexample: Observation.component[0].value.ofType(CodeableConcept).coding[0]    information Code System URI "http://www.genenames.org/geneId" is unknown so the code cannot be validated

view this post on Zulip Patrick Werner (Mar 20 2020 at 14:54):

that would be expected, and is a info/warning so no error. If you really get an error something went wrong

view this post on Zulip Bob Milius (Mar 20 2020 at 16:00):

The error I get is when I try to validate against my constrained profile where it I have a binding of the gene-studied component value to the valueset I have above, and I'm requiring gene-studied to be present. It might be the tooling I'm using (shorthand).

Here's the warning when I validate against the Genomics Reporting IG:

$ java -jar ~/.local/bin/org.hl7.fhir.validator.jar cg_genotype_1.json -version 4.0.1 -ig "http://hl7.org/fhir/uv/genomics-reporting/STU1"
FHIR Validation tool Version 4.2.9-SNAPSHOT (Git# 849b65417a9c). Built 2020-03-17T15:22:07.704+11:00 (3 days old)
Detected Java version: 1.8.0_172 from /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre on x86_64 (64bit). 3641MB available
Arguments: cg_genotype_1.json -version 4.0.1 -ig http://hl7.org/fhir/uv/genomics-reporting/STU1
Directories: Current = /Users/bmilius/Documents/src/fsh/tests, Package Cache = /Users/bmilius/.fhir/packages
  .. FHIR Version 4.0, definitions from hl7.fhir.r4.core#4.0.1
  .. connect to tx server @ http://tx.fhir.org
    (v4.0.1)
+  .. load IG from http://hl7.org/fhir/uv/genomics-reporting/STU1
  .. validate [cg_genotype_1.json]
Terminology server: Check for supported code systems for http://loinc.org
Success...validating cg_genotype_1.json:  error:0 warn:1 info:3
  Information @ Observation.value.ofType(CodeableConcept) (line 33, col16) : Binding for path Observation.value.ofType(CodeableConcept) has no source, so can't be checked
  Information @ Observation.value.ofType(CodeableConcept).coding[0] (line 34, col8) : Code System URI "https://glstring.org" is unknown so the code cannot be validated
  Information @ Observation.component[0].value.ofType(CodeableConcept).coding[0] (line 52, col12) : Code System URI "http://www.genenames.org" is unknown so the code cannot be validated
  Warning @ Observation.component[0].value.ofType(CodeableConcept) (line 51, col20) : None of the codes provided are in the value set http://hl7.org/fhir/uv/genomics-reporting/ValueSet/hgnc (http://hl7.org/fhir/uv/genomics-reporting/ValueSet/hgnc, and a code should come from this value set unless it has no suitable code) (codes = http://www.genenames.org#HGNC:4931)

and here it is when I validate against my IG that is constraining the Genomics Reporting IG

$ fv hla_genotype_1.json -version 4.0.1 -ig "http://localhost:8000/ig/hla-reporting"
FHIR Validation tool Version 4.2.9-SNAPSHOT (Git# 849b65417a9c). Built 2020-03-17T15:22:07.704+11:00 (3 days old)
Detected Java version: 1.8.0_172 from /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre on x86_64 (64bit). 3641MB available
Arguments: hla_genotype_1.json -version 4.0.1 -ig http://localhost:8000/ig/hla-reporting
Directories: Current = /Users/bmilius/Documents/src/fsh/tests, Package Cache = /Users/bmilius/.fhir/packages
  .. FHIR Version 4.0, definitions from hl7.fhir.r4.core#4.0.1
  .. connect to tx server @ http://tx.fhir.org
    (v4.0.1)
+  .. load IG from http://localhost:8000/ig/hla-reporting
+  .. load IG from hl7.fhir.uv.genomics-reporting#1.0.0
  .. validate [hla_genotype_1.json]
Terminology server: Check for supported code systems for http://loinc.org
*FAILURE* validating hla_genotype_1.json:  error:1 warn:1 info:3
  Error @ Observation.component[0].value.ofType(CodeableConcept) (line 51, col20) : None of the codes provided are in the value set http://example.org/fhir/hla-reporting/ValueSet/hla-gene-name-value-set (http://example.org/fhir/hla-reporting/ValueSet/hla-gene-name-value-set, and a code from this value set is required) (codes = http://www.genenames.org#HGNC:4931)
  Information @ Observation.value.ofType(CodeableConcept) (line 33, col16) : Binding for path Observation.value.ofType(CodeableConcept) has no source, so can't be checked
  Information @ Observation.value.ofType(CodeableConcept).coding[0] (line 34, col8) : Code System URI "https://glstring.org" is unknown so the code cannot be validated
  Information @ Observation.component[0].value.ofType(CodeableConcept).coding[0] (line 52, col12) : Code System URI "http://www.genenames.org" is unknown so the code cannot be validated
  Warning @ Observation.value.ofType(CodeableConcept).coding[0].code (line 37, col37) : GLSC: Use GL String Code to report HLA genotype [matches('^hla#')]

and here's my instance (note that the meta profile changes depending on which IG I'm validating against)

{
  "resourceType": "Observation",
  "id": "HLA-A-GenotypeExample1",
  "meta": {
    "profile": [
      "http://example.org/fhir/hla-reporting/StructureDefinition/hla-genotype"
    ]
  },
  "text": {
    "status": "generated",
    "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p><b>Generated Narrative with Details</b></p><p><b>id</b>: HLA-A-GenotypeExample1</p><p><b>meta</b>: </p><p><b>status</b>: final</p><p><b>category</b>: Laboratory <span style=\"background: LightGoldenRodYellow\">(Details : {http://terminology.hl7.org/CodeSystem/observation-category code 'laboratory' = 'Laboratory)</span></p><p><b>code</b>: Genotype display name <span style=\"background: LightGoldenRodYellow\">(Details : {LOINC code '84413-4' = 'Genotype display name)</span></p><p><b>value</b>: hla#3.25.0#HLA-A*01:01:01:01/HLA-A*01:02+HLA-A*24:02:01:01 <span style=\"background: LightGoldenRodYellow\">(Details : {https://glstring.org code 'hla#3.25.0#HLA-A*01:01:01:01/HLA-A*01:02+HLA-A*24:02:01:01' = 'hla#3.25.0#HLA-A*01:01:01:01/HLA-A*01:02+HLA-A*24:02:01:01)</span></p><h3>Components</h3><table class=\"grid\"><tr><td>-</td><td><b>Code</b></td><td><b>Value[x]</b></td></tr><tr><td>*</td><td>Gene studied [ID] <span style=\"background: LightGoldenRodYellow\">(Details : {LOINC code '48018-6' = 'Gene studied [ID])</span></td><td>HGNC:4931 <span style=\"background: LightGoldenRodYellow\">(Details : {http://www.genenames.org/geneId code 'HGNC:4931' = 'HGNC:4931)</span></td></tr></table></div>"
  },
  "status": "final",
  "category": [
    {
      "coding": [
        {
          "system": "http://terminology.hl7.org/CodeSystem/observation-category",
          "code": "laboratory"
        }
      ]
    }
  ],
  "code": {
    "coding": [
      {
        "system": "http://loinc.org",
        "code": "84413-4"
      }
    ]
  },
  "valueCodeableConcept": {
    "coding": [
      {
        "system": "https://glstring.org",
        "code": "hla#3.25.0#HLA-A*01:01:01:01/HLA-A*01:02+HLA-A*24:02:01:01"
      }
    ]
  },
  "component": [
    {
      "code": {
        "coding": [
          {
            "system": "http://loinc.org",
            "code": "48018-6"
          }
        ]
      },
      "valueCodeableConcept": {
        "coding": [
          {
            "system": "http://www.genenames.org",
            "code": "HGNC:4931"
          }
        ]
      }
    }
  ]
}

Here's the snippet in the structure definition that I'm using to constrain genotype (created using shorthand/sushi)

      {
        "id": "Observation.component:gene-studied.value[x]",
        "path": "Observation.component.value[x]",
        "short": "If no HGNC code issued for this gene yet, NCBI gene IDs SHALL  be used.",
        "definition": "The information determined as a result of making the observation, if the information has a simple value.",
        "comment": "Used when observation has a set of component observations. An observation may have both a value (e.g. an  Apgar score)  and component observations (the observations from which the Apgar score was derived). If a value is present, the datatype for this element
should be determined by Observation.code. A CodeableConcept with just a text would be used instead of a string if the field was usually coded, or if the type associated with the Observation.code defines a coded value.  For additional guidance, see the [Notes section](https://hl7
.org/fhir/observation.html#notes) below.",
        "requirements": "An observation exists to have a value, though it might not if it is in error, or if it represents a group of observations.",
        "min": 0,
        "max": "1",
        "base": {
          "path": "Observation.component.value[x]",
          "min": 0,
          "max": "1"
        },
        "type": [
          {
            "code": "CodeableConcept"
          }
        ],
        "constraint": [
          {
            "key": "ele-1",
            "severity": "error",
            "human": "All FHIR elements must have a @value or children",
            "expression": "hasValue() or (children().count() > id.count())",
            "xpath": "@value|f:*|h:div",
            "source": "http://hl7.org/fhir/StructureDefinition/Element"
          }
        ],
        "mustSupport": false,
        "isModifier": false,
        "isSummary": true,
        "binding": {
          "strength": "required",
          "valueSet": "http://example.org/fhir/hla-reporting/ValueSet/hla-gene-name-value-set"
        },

view this post on Zulip Kevin Power (Mar 21 2020 at 16:21):

I am not seeing anything that might cause those, but very possible I am missing it. I am assuming you don't get any build errors/warnings on your IG? Any chance you have your IG published somewhere?

view this post on Zulip Patrick Werner (Mar 22 2020 at 12:11):

hi @ Bob Milius the correct uri of a gene id instance would be:

  "valueCodeableConcept": {
        "coding": [
          {
            "system": "http://www.genenames.org/geneId",
            "code": "HGNC:4931"
          }

view this post on Zulip Kevin Power (Mar 22 2020 at 21:06):

Would that have caused the error @Patrick Werner ?

view this post on Zulip Patrick Werner (Mar 22 2020 at 22:03):

possibly. @ Bob Milius your ValueSet also has to include via http://www.genenames.org/geneId (for geneIds)
I provided a full HGNC CodeSystem and ValueSet to test in the other thread about the HGNC ValueSet

view this post on Zulip Bob Milius (Mar 23 2020 at 14:36):

Thanks @Patrick Werner ! I just looked at your files. Does your codesystem for HGNC include all of the geneIds? Is it part of your IG? I'm wondering if I need to include the entire HGNC codesystem in my IG, and then include only the HLA genes in my valueset?

view this post on Zulip Patrick Werner (Mar 23 2020 at 14:40):

Yes our CS contains all geneIds, and yes you could include the whole CS into your IG, and only define the ones you are using in a VS.
You also could create a sub-set of the geneIds into a CS, same url "http://www.genenames.org/geneId"and set content to fragment, and create a VS to include the codes you are using.


Last updated: Apr 12 2022 at 19:14 UTC