Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multilingual support for SNOMED CT and ICD-10 mappings #632

Open
LizaKing0 opened this issue Oct 29, 2024 · 7 comments
Open

Multilingual support for SNOMED CT and ICD-10 mappings #632

LizaKing0 opened this issue Oct 29, 2024 · 7 comments
Assignees

Comments

@LizaKing0
Copy link

Hi, I'm hoping you can help me identify why multilingual functionality breaks only when using the FHIR api to get English ICD-10 display strings.

What works:

  • I have successfully imported the SNOMED CT release for NL, which includes the International edition.
  • Switching between English and Dutch via the Snowstorm native API has worked as specified in your docs.
  • After uploading the Dutch ICD-10 translations I receive the correct response to base_url_here/fhir/ConceptMap/$translate?code=38341003&system=http://snomed.info/sct&targetsystem=http://hl7.org/fhir/sid/icd-10

image

Where things go wrong:

  • The translate query did not return a display value when English was specified, so I uploaded the international version CLAML file the same way as I did the Dutch (thanks for the file btw!)
  • Running the same query, specifying English, resulted in the same no display string outcome, and then the Dutch version also stopped working.
  • Reuploading the Dutch ICD-10 fixed the display issue (but of course only for Dutch)

Should I be further specifying anything in the HAPI-FHIR command when uploading the ICD-10 CLAML files? Or is there something missing from the translate request? I noticed that the fullUrl for both ICD-10 code systems were the same after upload ("base_url_here/fhir/CodeSystem/hl7.org-fhir-sid-icd-10"), whereas different SNOMED CT versions include the version number in their fullUrl - could that be the cause?

@kaicode kaicode self-assigned this Oct 29, 2024
@kaicode
Copy link
Member

kaicode commented Oct 29, 2024

We have not attempted multi-language support for CodeSystems other than SNOMED CT within Snowstorm. It's quite interesting to hear that you are trying this.

I'm not even sure what Snowstorm will do when you import two versions of ICD-10 with different languages. I expect that the second version uploaded would completely replace the first version, as long as the same system url and version have been used.

Could you check if multiple designations have been stored using a lookup: /CodeSystem/$lookup?system=http://hl7.org/fhir/sid/icd-10&code=I10&includeDesignations=true.
I expect only one display term has been stored?

@LizaKing0
Copy link
Author

Yes, correct!

{
    "resourceType": "Parameters",
    "parameter": [
        {
            "name": "name",
            "valueString": "ICD-1O-2014v12v-O3-C-nl"
        },
        {
            "name": "system",
            "valueString": "http://hl7.org/fhir/sid/icd-10"
        },
        {
            "name": "version",
            "valueString": "4.015.012.001"
        },
        {
            "name": "display",
            "valueString": "Essentiële (primaire) hypertensie"
        },
        {
            "name": "property",
            "part": [
                {
                    "name": "code",
                    "valueCode": "relatedTerm"
                },
                {
                    "name": "value",
                    "valueString": "Hoge bloeddruk"
                }
            ]
        },
        {
            "name": "property",
            "part": [
                {
                    "name": "code",
                    "valueCode": "relatedTerm"
                },
                {
                    "name": "value",
                    "valueString": "Hypertensie (arterieel)(benigne)(essentieel)(maligne)(primair)(systemisch)"
                }
            ]
        },
        {
            "name": "property",
            "part": [
                {
                    "name": "code",
                    "valueCode": "parent"
                },
                {
                    "name": "value",
                    "valueCoding": {
                        "system": "http://hl7.org/fhir/sid/icd-10",
                        "code": "I10-I15",
                        "display": "Hypertensieve ziekten"
                    }
                }
            ]
        },
        {
            "name": "property",
            "part": [
                {
                    "name": "code",
                    "valueCode": "exclusion"
                },
                {
                    "name": "value",
                    "valueString": "met aandoening van bloedvaten van hersenen (I60-I69)"
                }
            ]
        },
        {
            "name": "property",
            "part": [
                {
                    "name": "code",
                    "valueCode": "exclusion"
                },
                {
                    "name": "value",
                    "valueString": "met aandoening van bloedvaten van oog (H35.0)"
                }
            ]
        }
    ]
}

What's interesting though is the International and Dutch versions of ICD-10 are different

@kaicode
Copy link
Member

kaicode commented Oct 29, 2024

The International and Dutch versions of ICD-10 may have different content but if they are using the same system URI Snowstorm will not be able to tell the difference.
The SNOMED CT to ICD-10 map is to the International ICD-10 CodeSystem.. does the Dutch version have any additional codes? I guess they won't be covered by the International map?

@LizaKing0
Copy link
Author

I don't think the Dutch version has additional codes, but I found that (at least according to HL7 docs) the URI could be http://hl7.org/fhir/sid/icd-10-nl . However, if I add that as the URI when uploading I get the following error
image

I assume the CLI assumes a different input format if the URL isn't exactly http://hl7.org/fhir/sid/icd-10

@kaicode
Copy link
Member

kaicode commented Oct 30, 2024

Does the Dutch version contain the English terms as well or only the Dutch terms?

@kaicode
Copy link
Member

kaicode commented Oct 30, 2024

For Snowstorm to be able to select the language for the display term during $translate (for a non-SNOMED CT code system) the following must be true:

  • The code system concepts in the store must contain each required language
  • Snowstorm would need a minor change to the translate operation

The current CLAML file loader, which is part of the HAPI FHIR project does not expect more than one display term in the CLAML file and does not record the language.

An alternative method to load ICD-10 is to first transform the CLAML file to a FHIR CodeSystem resource using a transformer. The Australian e-Health Research Centre have published such a transformer: https://github.com/aehrc/fhir-claml which produces a JSON file. It's not clear if the transformer can pick up multiple languages. I have never tried this method. In theory the CodeSystem file could be put into a FHIR package and loaded using this method.

In short Snowstorm does support selecting the display term language in the translate operation but currently only when the target code system is SNOMED CT. I've given a long answer in case you are super determined for this to work.

@LizaKing0
Copy link
Author

Thanks for the thorough answer; it has been really informative. The Dutch version doesn't have English display terms so I would need to do some transformations as you suggest.
Thanks again!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants