Mapping Drugs With Their Corresponding Actions And Treatments

Description

This pretrained model maps drugs with their corresponding action and treatment. action refers to the function of the drug in various body systems, treatment refers to which disease the drug is used to treat

Predicted Entities

action, treatment

Copy S3 URI

How to use

document_assembler = DocumentAssembler()\
.setInputCol('text')\
.setOutputCol('document')

sentence_detector = SentenceDetector()\
.setInputCols(["document"])\
.setOutputCol("sentence")

tokenizer = Tokenizer()\
.setInputCols("sentence")\
.setOutputCol("token")

ner =  MedicalBertForTokenClassifier.pretrained("bert_token_classifier_drug_development_trials", "en", "clinical/models")\
.setInputCols("token","sentence")\
.setOutputCol("ner")

nerconverter = NerConverterInternal()\
.setInputCols("sentence", "token", "ner")\
.setOutputCol("drug")

chunkerMapper = ChunkMapperModel.pretrained("drug_action_treatment_mapper", "en", "clinical/models") \
.setInputCols("drug")\
.setOutputCol("relations")\
.setRel("treatment") #or action

pipeline = Pipeline().setStages([document_assembler,
sentence_detector,
tokenizer,
ner,
nerconverter,
chunkerMapper])

text = ["""
The patient is a 71-year-old female patient of Dr. X. and she was given Aklis and Dermovate.
Cureent Medications: Diprivan, Proventil
"""]

test_data = spark.createDataFrame([text]).toDF("text")

res = pipeline.fit(test_data).transform(test_data)
val document_assembler = DocumentAssembler()
.setInputCol("text")
.setOutputCol("document")

val sentence_detector = SentenceDetector()
.setInputCols(Array("document"))
.setOutputCol("sentence")

val tokenizer = Tokenizer()
.setInputCols("sentence")
.setOutputCol("token")

val ner =  MedicalBertForTokenClassifier.pretrained("bert_token_classifier_drug_development_trials", "en", "clinical/models")
.setInputCols("token","sentence")
.setOutputCol("ner")

val nerconverter = NerConverterInternal()
.setInputCols(Array("sentence", "token", "ner"))
.setOutputCol("drug")

val chunkerMapper = ChunkMapperModel.pretrained("drug_action_treatment_mapper", "en", "clinical/models")
.setInputCols("drug")
.setOutputCol("relations")
.setRel("treatment")

val pipeline =  new Pipeline().setStages(Array(document_assembler, sentence_detector, tokenizer, ner, nerconverter, chunkerMapper ))


val test_data = Seq("The patient is a 71-year-old female patient of Dr. X. and she was given Aklis and Dermovate.
Cureent Medications: Diprivan, Proventil").toDF("text")


val res = pipeline.fit(test_data).transform(test_data)
import nlu
nlu.load("en.map_entity.drug_to_action_treatment").predict("""
The patient is a 71-year-old female patient of Dr. X. and she was given Aklis and Dermovate.
Cureent Medications: Diprivan, Proventil
""")

Results

+---------+------------------+--------------------------------------------------------------+
|Drug     |Treats            |Pharmaceutical Action                                         |
+---------+------------------+--------------------------------------------------------------+
|Aklis    |Hyperlipidemia    |Hypertension:::Diabetic Kidney Disease:::Cerebrovascular...   |
|Dermovate|Lupus             |Discoid Lupus Erythematosus:::Empeines:::Psoriasis:::Eczema...|
|Diprivan |Infection         |Laryngitis:::Pneumonia:::Pharyngitis                          |
|Proventil|Addison's Disease |Allergic Conjunctivitis:::Anemia:::Ankylosing Spondylitis     |
+---------+------------------+--------------------------------------------------------------+

Model Information

Model Name: drug_action_treatment_mapper
Compatibility: Healthcare NLP 3.5.0+
License: Licensed
Edition: Official
Input Labels: [ner_chunk]
Output Labels: [mappings]
Language: en
Size: 8.7 MB