Description
This model maps extracted medical (anatomical structures) entities to Snomed codes (body structure version) using sentence embeddings.
Predicted Entities
Snomed Codes and their normalized definition with sbiobert_base_cased_mli
embeddings.
How to use
sbiobertresolve_snomed_bodyStructure
resolver model must be used with sbiobert_base_cased_mli
as embeddings ner_jsl
as NER model. Disease_Syndrome_Disorder,
External_body_part_or_region
set in .setWhiteList()
.
sbiobertresolve_snomed_bodyStructure
resolver model must be used with sbiobert_base_cased_mli
as embeddings ner_jsl
as NER model. No need to set .setWhiteList()
.
Merge ner_jsl and ner_anatomy_coarse model chunks.
documentAssembler = DocumentAssembler()\
.setInputCol("text")\
.setOutputCol("ner_chunk")
jsl_sbert_embedder = BertSentenceEmbeddings\
.pretrained("sbiobert_base_cased_mli","en","clinical/models")\
.setInputCols(["ner_chunk"])\
.setOutputCol("sbert_embeddings")
snomed_resolver = SentenceEntityResolverModel\
.pretrained("sbiobertresolve_snomed_bodyStructure", "en", "clinical/models") \
.setInputCols(["ner_chunk", "sbert_embeddings"]) \
.setOutputCol("snomed_code")
snomed_pipelineModel = PipelineModel(
stages = [
documentAssembler,
jsl_sbert_embedder,
snomed_resolver])
snomed_lp = LightPipeline(snomed_pipelineModel)
result = snomed_lp.fullAnnotate("Amputation stump")
val document_assembler = DocumentAssembler()
.setInputCol("text")
.setOutputCol("ner_chunk")
val sbert_embedder = BertSentenceEmbeddings
.pretrained("sbiobert_base_cased_mli","en","clinical/models")
.setInputCols(Array("ner_chunk"))
.setOutputCol("sbert_embeddings")
val snomed_resolver = SentenceEntityResolverModel
.pretrained("sbiobertresolve_snomed_bodyStructure", "en", "clinical/models")
.setInputCols(Array("ner_chunk", "sbert_embeddings"))
.setOutputCol("snomed_code")
val snomed_pipelineModel= new PipelineModel().setStages(Array(document_assembler, sbert_embedder, snomed_resolver))
val snomed_lp = LightPipeline(snomed_pipelineModel)
val result = snomed_lp.fullAnnotate("Amputation stump")
import nlu
nlu.load("en.resolve.snomed_body_structure").predict("""Amputation stump""")
Results
| | chunks | code | resolutions | all_codes | all_distances |
|---:|:-----------------|:---------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------|
| 0 | amputation stump | 38033009 | [Amputation stump, Amputation stump of upper limb, Amputation stump of left upper limb, Amputation stump of lower limb, Amputation stump of left lower limb, Amputation stump of right upper limb, Amputation stump of right lower limb, ...]| ['38033009', '771359009', '771364008', '771358001', '771367001', '771365009', '771368006', ...] | ['0.0000', '0.0773', '0.0858', '0.0863', '0.0905', '0.0911', '0.0972', ...] |
Model Information
Model Name: | sbiobertresolve_snomed_bodyStructure |
Compatibility: | Healthcare NLP 3.1.0+ |
License: | Licensed |
Edition: | Official |
Input Labels: | [sentence_embeddings] |
Output Labels: | [snomed_code] |
Language: | en |
Case sensitive: | true |
Data Source
https://www.snomed.org/