Description
This model maps medical entities to CPT codes using Sentence Bert Embeddings. The corpus of this model has been extented to measurements, and this model is capable of mapping both procedures and measurement concepts/entities to CPT codes. Measurement codes are helpful in codifying medical entities related to tests and their results.
Predicted Entities
CPT codes and their descriptions.
How to use
sbiobertresolve_cpt_procedures_measurements_augmented resolver model must be used with sbiobert_base_cased_mli as embeddings ner_jsl as NER model. Procedure set in .setWhiteList().
sbiobertresolve_cpt_procedures_measurements_augmented resolver model must be used with sbiobert_base_cased_mli as embeddings ner_measurements_clinical as NER model. Measurements set in .setWhiteList().
Merge ner_jsl and ner_measurements_clinical 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")
cpt_resolver = SentenceEntityResolverModel\
.load("sbiobertresolve_cpt_procedures_measurements_augmented") \
.setInputCols(["ner_chunk", "sbert_embeddings"]) \
.setOutputCol("cpt_code")
cpt_pipelineModel = PipelineModel(
stages = [
documentAssembler,
jsl_sbert_embedder,
cpt_resolver])
cpt_lp = LightPipeline(cpt_pipelineModel)
result = cpt_lp.fullAnnotate(['calcium score', 'heart surgery'])
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 cpt_resolver = SentenceEntityResolverModel
.load("sbiobertresolve_cpt_procedures_measurements_augmented")
.setInputCols(Array("ner_chunk", "sbert_embeddings"))
.setOutputCol("cpt_code")
val cpt_pipelineModel= new PipelineModel().setStages(
Array(
document_assembler,
sbert_embedder,
cpt_resolver))
val cpt_lp = LightPipeline(cpt_pipelineModel)
val result = cpt_lp.fullAnnotate(['calcium score', 'heart surgery'])
import nlu
nlu.load("en.resolve.cpt.procedures_measurements").predict("""calcium score""")
Results
| | chunks | code | resolutions |
|---:|:--------------|:----- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 0 | calcium score | 82310 | Calcium measurement [Calcium; total] |
| 1 | heart surgery | 33257 | Cardiac surgery procedure [Operative tissue ablation and reconstruction of atria, performed at the time of other cardiac procedure(s), limited (eg, modified maze procedure) (List separately in addition to code for primary procedure)] |
Model Information
| Model Name: | sbiobertresolve_cpt_procedures_measurements_augmented |
| Compatibility: | Healthcare NLP 3.1.0+ |
| License: | Licensed |
| Edition: | Official |
| Input Labels: | [sbert_embeddings] |
| Output Labels: | [cpt_code] |
| Language: | en |
| Case sensitive: | true |
Data Source
Trained on Current Procedural Terminology dataset with sbiobert_base_cased_mli sentence embeddings.
References
CPT resolver models are removed from the Models Hub due to license restrictions and can only be shared with the users who already have a valid CPT license. If you possess one and wish to use this model, kindly contact us at support@johnsnowlabs.com.