Tuesday, June 18, 2019

The Trouble with ICD-10 CM on UMLS

The UMLS metathesaurus is a convenient downloadable database of commonly used medical terminology systems.  It includes SNOMED CT, RxNorm, LOINC, among many others.  The ICD-10 CM representation is not that great, however.  This is mostly due to its inability to adequately represent ICD-10 CM's attributes.

For example, this is a diagnosis from the ICD-10 CM tabular file:
<diag>
          <name>C41.0</name>
          <desc>Malignant neoplasm of bones of skull and face</desc>
          <inclusionTerm>
            <note>Malignant neoplasm of maxilla (superior)</note>
            <note>Malignant neoplasm of orbital bone</note>
          </inclusionTerm>
          <excludes2>
            <note>carcinoma, any type except intraosseous or odontogenic of:</note>
            <note>maxillary sinus (C31.0)</note>
            <note>upper jaw (C03.0)</note>
            <note>malignant neoplasm of jaw bone (lower) (C41.1)</note>
          </excludes2>
      </diag>
(From 2019 ICD-10 CM tabular data)

Note the 'excludes2' elements. These are considered 'attributes' of the code.  Pay attention to the line:
 carcinoma, any type except intraosseous or odontogenic of:
This is the first line in 'excludes2', and it modifies the interpretation of all the subsequent lines.  (I have to admit that I'm not completely sure how to interpret this 'excludes2' statement, but I feel it means that ALL carcinomas are excluded unless it is a carcinoma relating to one of the specified codes, and even then, only if the tumor is intraosseous or odontogenic.)


Now let's look at the UMLS representation of ICD-10 CM via an SQL query:

Query:
SELECT s.ATV from mrsat s WHERE (s.SAB='ICD10CM') AND (s.ATN='excludes2') AND (s.CODE='C41.0');

Results:
  • maxillary sinus (C31.0)
  • carcinoma, any type except intraosseous or odontogenic of:
  • malignant neoplasm of jaw bone (lower) (C41.1)
  • upper jaw (C03.0)
What we get is a list of lines from the original ICD-10 tabular XML.  Note that, however, the ORDER of the lines is not preserved.  Each line is a different database attribute, and there is no way to record the order of attributes in UMLS.   The 'excludes2' statement from the ICD-10 CM specification really only makes sense if taken as a whole (in the correct order), as the first line says to exclude all carcinomas EXCEPT for the things that follow.

If you were to use the UMLS version of ICD-10 CM for this, you might reach the conclusion that a diagnosis from the "upper jaw" code (C03.0) is excluded when in fact it may be exactly the opposite.

The UMLS solution would be for the entire 'excludes2' to be taken as a single string, and added to the the UMLS database as a single attribute (ie a single database row).  This would need to be done for 'excludes1' as well.  In terms of string length, it would seem that UMLS specifies the ATV column as a TEXT type in the generated MySQL scripts (meaning it can handle longer strings).  In their documentation, they note that "a few" attribute values are over 1,000 characters.  This suggests that the other relational databases would also use types representing long strings.

An even better solution would be for ICD-10 CM to represent its data in a more machine-friendly manner that is not dependent on the first line of the attribute section for interpretation.  See earlier post.


No comments:

Post a Comment