Guest User

Untitled

a guest
Oct 4th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.56 KB | None | 0 0
  1. import sys
  2. from datetime import datetime
  3. from conf.celery import CELERY
  4. from elasticsearch import Elasticsearch
  5. from pymongo import MongoClient
  6.  
  7. LOGGING_LOCATION = 'logs/python_service'
  8.  
  9. # ************** ES QUERY GEN CONFIG START ************************
  10.  
  11. START_YEAR = 1800
  12. END_YEAR = datetime.now().year
  13. SYNONYMS_ES_INDEX = 'synonyms_master'
  14.  
  15. # SYNONYMS_MONGO_IP = '10.240.0.42'
  16. # SYNONYMS_MONGO_IP = '104.196.144.163'
  17. # SYNONYMS_MONGO_PORT = 27017
  18. # SYNONYMS_MONGO_DB = 'jan21_disjoint_sets_uniqueid'
  19. # SYNONYMS_MONGO_COLLECTIONS = {'disease': 'disease_v2',
  20. # 'gene': 'gene_v2',
  21. # 'protein': 'protein_v2',
  22. # 'drug': 'drug',
  23. # 'others': 'others_v2'}
  24.  
  25. forword_data_sets = {
  26. "clinicaltrials": {
  27. "forward_index": "ct_new",
  28. "forward_doc_type": "sample_data"
  29. },
  30. "aggregatedtrials": {
  31. "forward_index": "ct_aggregated",
  32. "forward_doc_type": "sample_data"
  33. },
  34. "congresses": {
  35. "forward_index": "congresses_new",
  36. "forward_doc_type": "sample_data"
  37. },
  38. "publications": {
  39. "forward_index": "pubmed_new",
  40. "forward_doc_type": "sample_data"
  41. },
  42. "thesis": {
  43. "forward_index": "thesis_new",
  44. "forward_doc_type": "sample_data"
  45. },
  46. "author": {
  47. "forward_index": "author_data",
  48. "forward_doc_type": "sample_data"
  49. },
  50. "patent": {
  51. "forward_index": "patents",
  52. "forward_doc_type": "sample_data"
  53. },
  54. "recent_events": {
  55. "forward_index": "pharma_blog",
  56. "forward_doc_type": "sample_data"
  57. },
  58. "grants": {
  59. "forward_index": "grants",
  60. "forward_doc_type": "sample_data"
  61. },
  62. "guidelines": {
  63. "forward_index": "guidelines",
  64. "forward_doc_type": "sample_data"
  65. }
  66. }
  67.  
  68. gene_type_query = {
  69. "index": "gene_view_test",
  70. "type": "sample_data",
  71. "body": {
  72. "query": {
  73. "term": {
  74. "unique_id": ""
  75. }
  76. }
  77. },
  78. "_source": [
  79. "type_of_gene"
  80. ]
  81. }
  82.  
  83.  
  84. DATA_SET_FIELDS = {
  85. "clinicaltrials": [
  86. "overall_status",
  87. "public_title",
  88. "scientific_title",
  89. "official_title",
  90. "clinical_id",
  91. "condition",
  92. "intervention.intervention_name",
  93. "keyword",
  94. "condition_mesh_terms",
  95. "tagger_terms.Pharmacological_substance",
  96. "tagger_terms.Disease",
  97. "tagger_terms.Gene",
  98. "tagger_terms.Protein",
  99. "required_header.url",
  100. "study_results"
  101. ],
  102. "aggregatedtrials": [
  103. "aggregated_data.recruitment_status",
  104. "also_published_as_mapping",
  105. "public_title",
  106. "scientific_title",
  107. "official_title",
  108. "clinical_id",
  109. "also_published_as",
  110. "condition",
  111. "intervention.intervention_name",
  112. "keyword",
  113. "condition_mesh_terms",
  114. "tagger_terms.Pharmacological_substance",
  115. "tagger_terms.Disease",
  116. "tagger_terms.Gene",
  117. "tagger_terms.Protein",
  118. "required_header.url",
  119. "update_label_ts",
  120. "study_results"
  121. ],
  122. "congresses": [
  123. "congress_id",
  124. "congress_name",
  125. "year",
  126. "title",
  127. "author_names",
  128. "tagger_terms.Pharmacological_substance",
  129. "tagger_terms.Disease",
  130. "tagger_terms.Gene",
  131. "tagger_terms.Protein",
  132. "link",
  133. "update_label_ts"
  134. ],
  135. "publications": [
  136. "journal_title",
  137. "article_title",
  138. "author_names",
  139. "tagger_terms.Pharmacological_substance",
  140. "tagger_terms.Disease",
  141. "tagger_terms.Gene",
  142. "tagger_terms.Protein",
  143. "pub_date",
  144. "year_str",
  145. "pmid",
  146. "update_label_ts",
  147. "created_at",
  148. "required_header.url",
  149. "source"
  150. ],
  151. "thesis": [
  152. "tid",
  153. "url",
  154. "data.title",
  155. "data.publisher",
  156. "data.abstract",
  157. "data.author",
  158. "data.date",
  159. "data.source",
  160. "data.committee",
  161. "data.type",
  162. "tagger_terms.Pharmacological_substance",
  163. "tagger_terms.Disease",
  164. "tagger_terms.Gene",
  165. "tagger_terms.Protein",
  166. "update_label_ts"
  167. ],
  168. "patent": [
  169. "patent_id",
  170. "title",
  171. "abstract",
  172. "claims",
  173. "standard_assignee",
  174. "priority_date",
  175. "feeStatus",
  176. "country",
  177. "update_label_ts"
  178. ],
  179. "recent_events": [
  180. "author",
  181. "title",
  182. "link",
  183. "date",
  184. "source",
  185. "unique_id",
  186. "created_at"
  187. ],
  188. "grants": [
  189. "grant_id",
  190. "title",
  191. "url",
  192. "institution",
  193. "amount",
  194. "grant_type",
  195. "startyear",
  196. "endyear",
  197. "pi",
  198. "year",
  199. "created_at"
  200. ],
  201. "guidelines": [
  202. "authors",
  203. "title",
  204. "link",
  205. "url",
  206. "date",
  207. "affiliation",
  208. "uuid",
  209. "created_at"
  210. ]
  211. }
  212.  
  213.  
  214. SEARCH_FIELDS = {
  215. "clinicaltrials": [
  216. "all_fields",
  217. "detailed_description",
  218. "public_title",
  219. "official_title",
  220. "keyword",
  221. "condition",
  222. "scientific_title",
  223. "intervention.description",
  224. "intervention.intervention_name",
  225. "authors.author_id"
  226.  
  227. ],
  228. "aggregatedtrials": [
  229. "all_fields",
  230. "detailed_description",
  231. "public_title",
  232. "official_title",
  233. "keyword",
  234. "condition",
  235. "scientific_title",
  236. "intervention.description",
  237. "intervention.intervention_name",
  238. "authors.author_id"
  239.  
  240. ],
  241. "congresses": [
  242. "all_fields",
  243. "abstract",
  244. "title",
  245. "authors.author_id"
  246. ],
  247. "publications": [
  248. "all_fields",
  249. "abstract",
  250. "article_title",
  251. "keywords",
  252. "authors.author_id"
  253. ],
  254. "thesis": [
  255. "all_fields",
  256. "data.abstract",
  257. "data.title",
  258. "authors.author_id"
  259. ],
  260. "patent": [
  261. "all_fields",
  262. "abstract",
  263. "title",
  264. "claims",
  265. ""
  266. ],
  267. "recent_events": [
  268. "all_fields",
  269. "desc",
  270. "title",
  271. ""
  272. ],
  273. "grants": [
  274. "all_fields",
  275. "abstract",
  276. "title",
  277. ""
  278. ],
  279. "guidelines": [
  280. "all_fields",
  281. "abstract",
  282. "title",
  283. ""
  284. ]
  285. }
  286.  
  287.  
  288. AGGREGATION_QUERY_FIELDS = {
  289. "protein": {
  290. "include": "PROT_.*"
  291. },
  292. "gene": {
  293. "include": "GENE_.*"
  294.  
  295. },
  296. "indication": {
  297. "include": "DISE_.*"
  298. },
  299. "intervention": {
  300. "include": "DRUG_.*"
  301. },
  302. "technology_ivf": {
  303. "include": "TECHIVF_.*",
  304. "exclude": (".*49|.*623|.*441|.*367|.*222|.*566|.*482|.*650|.*314|"
  305. ".*556|.*19|.*613|.*134|.*242|.*651|.*521|.*548|.*459|"
  306. ".*243|.*476|.*387|.*596|.*505|.*203|.*588|.*506|.*370")
  307. },
  308. "product_ivf": {
  309. "include": "PRODIVF_.*"
  310. },
  311. "sponsor": {
  312. "field": "sponsors.lead_sponsor.agency"
  313. }
  314. }
  315.  
  316. FUNCTION_QUERY_FIELDS = {
  317. "clinicaltrials": "start_year",
  318. "aggregatedtrials": "start_year",
  319. "congresses": "year",
  320. "publications": "year_str",
  321. "thesis": "year",
  322. "patent": "year_str",
  323. "recent_events": "year",
  324. "grants": "year",
  325. "guidelines": "year"
  326. }
  327.  
  328. HIGHLIGHT_FIELDS = ['Gene', 'Drug', 'Protein', 'Disease']
  329.  
  330. HIGHLIGHT_DATA_FIELDS = {'publications': ['abstract', 'article_title'],
  331. 'clinicaltrials': ['public_title'],
  332. 'aggregatedtrials': ['public_title'],
  333. 'congresses': ['abstract', 'title'],
  334. 'thesis': ['data.abstract', 'data.title'],
  335. 'patent': ['abstract', 'title', 'claims'],
  336. 'recent_events': ['title'],
  337. 'grants': ['title', 'abstract'],
  338. 'guidelines': ['title', 'abstract']
  339. }
  340.  
  341. # ************** ES QUERY GEN CONFIG END ************************
  342.  
  343.  
  344. # ******** Workspace Setting **********
  345. TASK_EXEC_DAY = 'Sunday'
  346. # UTC time (9:00AM)IST -- (4:30AM)CET -- (3:30AM) UTC
  347. TASK_EXEC_TIME = {"hour": 3, "minute": 30}
  348. # UTC time (11:0OPM)IST -- (6:30PM)CET -- (5:30PM) UTC
  349. CLUSTER_EXEC_TIME = {"hour": 6, "minute": 52}
  350. WORKSPACE_URL = '/#!/workspace/glance'
  351. WORKSPACE_CLUSTER_URL = '/#!/workspace/monitorclusters/{cluster_name}/{cluster_query}/{cluster_id}/publications/latest/0,0/all/1'
  352.  
  353. # SES config for email
  354. MAIL_SERVER = "us-east-1"
  355. MAIL_PORT = 587
  356. MAIL_USE_TLS = True
  357. MAIL_USERNAME = "AKIAIB6BUWAPXCQAP6EA"
  358. MAIL_PASSWORD = "1ZAZdjx6/RRVeJBp/bAh2yvovUnQ/EtXrRuNo1pU"
  359. MAIL_DEFAULT_SENDER = "iPlexus <noreply@appsupport.innoplexus.de>"
  360.  
  361.  
  362. def set_python_paths(paths):
  363. paths = paths if isinstance(paths, list) else [paths]
  364. sys.path.extend(paths)
  365.  
  366.  
  367. def get_es_cluster_instance(es_ips):
  368. es_ips = es_ips if isinstance(es_ips, list) else [es_ips]
  369. return Elasticsearch(es_ips)
  370.  
  371.  
  372. def get_mongo_instance(MONGO_URL, m_db):
  373. mongo_cli = MongoClient(MONGO_URL)
  374. mongo_cli = mongo_cli[m_db]
  375. return mongo_cli
  376.  
  377.  
  378. def get_workspace_url(base_url):
  379. return '%s%s' % (base_url, WORKSPACE_URL)
  380.  
  381.  
  382. def get_workspace_cluster_url(base_url):
  383. return '%s%s' % (base_url, WORKSPACE_CLUSTER_URL)
  384.  
  385.  
  386. # ******** Bplexus configuration **********
  387.  
  388. DATASET_FIELDS = {
  389. 'drugs': {
  390. 'id': 'name_id',
  391. 'name': 'name',
  392. 'synonym_name': 'synonyms',
  393. 'unique_id': 'unique_id',
  394. 'target_name': 'target_synonyms',
  395. 'active_ingredient': 'active_ingredient',
  396. 'source': 'regulatory_body',
  397. 'status': 'status',
  398. 'type': 'type',
  399. 'innoplexus_id': 'innoplexus_id'
  400. },
  401. 'alerts': {
  402. 'title': 'title',
  403. 'date': 'timestamp',
  404. 'link': 'link',
  405. 'source': 'source',
  406. 'innoplexus_id': 'innoplexus_id'
  407. },
  408. 'press_releases': {
  409. 'title': 'title',
  410. 'date': 'created_at',
  411. 'link': 'source_url',
  412. 'source': 'source'
  413. }
  414. }
  415.  
  416. DAC_REPORTS_MAPPINGS = {
  417. 'multiple sclerosis': 'Peripheral and Central Nervous System',
  418. 'alzheimer disease': 'Peripheral and Central Nervous System',
  419. 'epilepsy': 'Peripheral and Central Nervous System',
  420. 'parkinson disease': 'Peripheral and Central Nervous System',
  421. 'stroke': 'Peripheral and Central Nervous System',
  422. 'breast cancer': 'Oncologic Drugs Advisory Committee',
  423. 'acute lymphoblastic leukemia': 'Oncologic Drugs Advisory Committee',
  424. 'ovarian diseases': 'ovarian',
  425. 'male infertility': 'male infertility',
  426. 'female infertility': 'female infertility',
  427. 'diabetes': 'Endocrinologic and Metabolic',
  428. 'obesity': 'Endocrinologic and Metabolic',
  429. 'thyroid disorders': 'Endocrinologic and Metabolic',
  430. }
  431.  
  432. PRESS_RELEASES_SOURCES = {
  433. 'fda': ['FDA', 'FDA Voice', 'FDA Feeds'],
  434. 'ema': ['EMA'],
  435. 'canada': ['canada', 'health_canada'],
  436. 'health canada': ['canada', 'health_canada'],
  437. 'jpa': ['jpa'],
  438. 'others': [
  439. "FiercePharma", "PR Newswire", "pharmamanufacturing", "GEN News", "FierceBiotech",
  440. "Merck Newsroom", "Pfizer", "drugstorenews", "PharmaIQ", "news_medical_net", "prlogHealth",
  441. "pharmacyToday", "worldpharma", "pharmabiz.com", "drugtopics", "outsourcing-pharma",
  442. "PharmaTimes", "prlogMedical", "biopharma-reporter", "prlog", "dddmag", "contractpharma",
  443. "pharmacytimes", "uspharmacist", "PharmaVOICE.com", "businesswireScience", "prlogScience",
  444. "ipprolifesciences", "globenewswire.com"],
  445. 'all': None,
  446. 'anmat': ['ANMAT'],
  447. 'anvisa': ['ANVISA'],
  448. 'chile' : ['Instituto de Salud Publica de Chile']
  449. }
  450.  
  451. # TRIAL_STATUS_MAPPINGS = {
  452. # 'In Progress': ["Approved for marketing", "Authorised", "Available", "Enrolling by invitation",
  453. # "Recruiting", "Registered", "Recruiting complete, follow-up continuing",
  454. # "Recruiting ongoing", "open: patient inclusion", "Ongoing",
  455. # "Recruiting complete, follow-up complete", "Open public recruiting", "Pending",
  456. # "Closed to Recruitment of Participants", "Restarted", "No longer recruiting",
  457. # "Preinitiation", "recruitement status not public", "Other"],
  458. # 'Not Active': ["No longer available", "Stopped", "Stopped early", "Suspended",
  459. # "Temporarily not available", "Terminated", "Unknown status", "Withdrawn", "Withheld",
  460. # "Temporarily Closed", "Suspended by CA", "Prematurely Ended", "Other (Terminated)",
  461. # "Recruiting withdrawn before recruiting started", "Temporarily Halted", "Suspending",
  462. # "Recruiting suspended on temporary hold", "Not Applicable", "Not Authorised",
  463. # "Not Available", "Recruiting stopped after recruiting started", "Prohibited by CA"],
  464. # 'Completed': ["Closed: follow-up complete", "Closed: follow-up continuing", "Completed",
  465. # "Complete", "stopped: trial finished", "Main results already published"],
  466. # 'New Trials': ["planned", "Not yet recruiting", "Active, not recruiting", "Not Recruiting",
  467. # "Not recruiting", "Open to Recruitment", "Not Yet Recruiting",
  468. # "Recruiting planned"]
  469. # }
  470.  
  471. TRIAL_STATUS_MAPPINGS = {
  472. 'New Trials': [
  473. 'planned', 'Not yet recruiting', 'Open to Recruitment', 'Reclutando',
  474. 'Not Yet Recruiting', 'Recruiting planned', 'Recruiting',
  475. ],
  476. 'In Progress': [
  477. 'Authorised', 'Available', 'Enrolling by invitation', 'Registered',
  478. 'Recruiting complete', 'follow-up continuing', 'Recruiting ongoing',
  479. 'open: patient inclusion', 'Ongoing', 'Recruiting complete',
  480. 'follow-up complete', 'Open public recruiting',
  481. 'Closed to Recruitment of Participants', 'Restarted',
  482. 'No longer recruiting', 'Preinitiation', 'recruitement status not public',
  483. 'Active, not recruiting', 'Not Recruiting', 'Not recruiting',
  484. ],
  485. 'Not Active': [
  486. 'Pending', 'Other', 'No longer available', 'Stopped', 'Stopped early',
  487. 'Suspended', 'Temporarily not available', 'Terminated', 'Unknown status',
  488. 'Withdrawn', 'Withheld', 'Temporarily Closed', 'Suspended by CA', 'Otro',
  489. 'Prematurely Ended', 'Other (Terminated)', 'Prohibited by CA', 'Suspendido',
  490. 'Recruiting withdrawn before recruiting started', 'Temporarily Halted',
  491. 'Suspending', 'Recruiting suspended on temporary hold', 'Not Applicable',
  492. 'Not Available', 'Recruiting stopped after recruiting started',
  493. ],
  494. 'Completed': [
  495. 'Closed: follow-up complete', 'Closed: follow-up continuing', 'Completed',
  496. 'Complete', 'stopped: trial finished', 'Main results already published',
  497. 'Approved for marketing', 'Not Authorised', 'Finalizado',
  498. ]
  499. }
  500.  
  501.  
  502. PIE_CHART_RESULT = [
  503. {
  504. 'category': 'Completed',
  505. 'value': 0
  506. }, {
  507. 'category': 'Not Active',
  508. 'value': 0
  509. }, {
  510. 'category': 'In Progress',
  511. 'value': 0
  512. }, {
  513. 'category': 'New Trials',
  514. 'value': 0
  515. }
  516. ]
  517.  
  518. DRUG_STATUS_MAPPINGS = {
  519. 'fda': {
  520. 'accelerated_approval': 'Accelerated approvals',
  521. 'nme': 'New molecular entities',
  522. 'fast_track': 'Fast track approvals',
  523. 'breakthrough_approval': 'Breakthrough approvals',
  524. 'priority_review': 'Priority reviews',
  525. 'orphan_approval': 'Orphan approvals',
  526. 'Prescription': 'Prescription',
  527. 'Discontinued': 'Discontinued',
  528. 'Over-the-counter': 'Over the counter',
  529. 'Tentative Approval': 'Tentative Approval'
  530. },
  531. 'ema': {
  532. 'Authorised': 'Authorised',
  533. 'Refused': 'Refused',
  534. 'Withdrawn': 'Withdrawn',
  535. 'Suspended': 'Suspended',
  536. 'Pending (Positive Opinion)': 'Pending',
  537. 'Pending (Negative Opinion)': 'Pending',
  538. 'Referred': 'Referred',
  539. 'paediatric_approval': 'Paediatrics',
  540. 'orphan_approval': 'Orphan approvals'
  541. },
  542. 'health canada': {},
  543. 'all': {},
  544. 'others': {}
  545. }
  546.  
  547. MS_FILTERED_DRUGS = ['DRUG_ID_d28920e3353da9ae7afa319647874947d02fd74c']
  548.  
  549. REPRODUCTIVE_EXCLUDED_TERMS = ['Carcinoma', 'Neoplasms', 'Malignant Neoplasms',
  550. 'Malignant neoplasm of ovary']
  551.  
  552. PHASE_MAPPINGS = {
  553. "Phase 0": ["Phase 0"],
  554. "Phase 1": ["Phase 1"],
  555. "Phase 2": ["Phase 2", "Phase 2-3", "Phase 1 / Phase 2", "Phase 1-2",
  556. "Phase 2 / Phase 3", "Phase 3 / Phase 4"],
  557. "Phase 3": ["Phase 3"],
  558. "Phase 4": ["Phase 4"],
  559. "Others": ["Others", "N/A", "Not Applicable"],
  560. "All Phases": ["Phase 0", "Phase 1", "Phase 2", "Phase 3", "Phase 4", "Phase 2-3",
  561. "Phase 1 / Phase 2", "Phase 1-2", "Phase 2 / Phase 3", "Phase 3 / Phase 4",
  562. "Others", "N/A", "Not Applicable"]
  563. }
  564.  
  565. COUNTRY = {
  566. 'fda': 'US',
  567. 'ema': 'EU',
  568. 'others': '',
  569. 'canada': 'CANADA',
  570. 'health canada': 'CANADA',
  571. 'jpa': 'JAPAN',
  572. 'instituto de salud publica de chile': 'Chile',
  573. 'chile': 'Chile',
  574. 'anmat': 'Argentina',
  575. 'anvisa': 'Brazil'
  576. }
  577.  
  578. SOURCE_MAPPINGS = {
  579. 'fda': 'fda',
  580. 'ema': 'ema',
  581. 'canada': 'health canada',
  582. 'health canada': 'health canada',
  583. 'jpa': 'jpa',
  584. 'instituto de salud publica de chile': 'chile',
  585. 'anmat': 'anmat',
  586. 'anvisa': 'anvisa',
  587. 'chile': 'chile'
  588. }
  589.  
  590. LABEL_CHANGES_RESPONSES = {
  591. 'ema': {
  592. 'smpc': {
  593. 'label_type': 'smpc',
  594. 'displayName': 'SmPC',
  595. 'data': []
  596. },
  597. 'labelling': {
  598. 'label_type': 'labelling',
  599. 'displayName': 'Labelling',
  600. 'data': []
  601. },
  602. 'pl': {
  603. 'label_type': 'pl',
  604. 'displayName': 'Package Leaflet',
  605. 'data': []
  606. },
  607. 'annex': {
  608. 'label_type': 'annex',
  609. 'displayName': 'Annex-II',
  610. 'data': []
  611. }
  612. },
  613. 'fda': {
  614. 'adverse_reactions': {
  615. 'label_type': 'adverse_reactions',
  616. 'displayName': 'Adverse reactions',
  617. 'data': []
  618. },
  619. 'boxed_warning': {
  620. 'label_type': 'boxed_warning',
  621. 'displayName': 'Boxed warning',
  622. 'data': []
  623. },
  624. 'warnings': {
  625. 'label_type': 'warnings',
  626. 'displayName': 'Warnings',
  627. 'data': []
  628. },
  629. 'precautions': {
  630. "label_type": "precautions",
  631. "displayName": "Precautions",
  632. "data": []
  633. },
  634. 'contraindications': {
  635. 'label_type': 'contraindications',
  636. 'displayName': 'Contraindications',
  637. 'data': []
  638. }
  639. },
  640. 'health canada': {
  641. 'adverse_reactions': {
  642. 'label_type': 'adverse_reactions',
  643. 'displayName': 'Adverse reactions',
  644. 'data': []
  645. },
  646. 'boxed_warning': {
  647. 'label_type': 'boxed_warning',
  648. 'displayName': 'Boxed warning',
  649. 'data': []
  650. },
  651. 'warnings': {
  652. 'label_type': 'warnings',
  653. 'displayName': 'Warnings',
  654. 'data': []
  655. },
  656. 'precautions': {
  657. "label_type": "precautions",
  658. "displayName": "Precautions",
  659. "data": []
  660. },
  661. 'contraindications': {
  662. 'label_type': 'contraindications',
  663. 'displayName': 'Contraindications',
  664. 'data': []
  665. }
  666. },
  667. 'canada': {
  668. 'adverse_reactions': {
  669. 'label_type': 'adverse_reactions',
  670. 'displayName': 'Adverse reactions',
  671. 'data': []
  672. },
  673. 'boxed_warning': {
  674. 'label_type': 'boxed_warning',
  675. 'displayName': 'Boxed warning',
  676. 'data': []
  677. },
  678. 'warnings': {
  679. 'label_type': 'warnings',
  680. 'displayName': 'Warnings',
  681. 'data': []
  682. },
  683. 'precautions': {
  684. "label_type": "precautions",
  685. "displayName": "Precautions",
  686. "data": []
  687. },
  688. 'contraindications': {
  689. 'label_type': 'contraindications',
  690. 'displayName': 'Contraindications',
  691. 'data': []
  692. }
  693. }
  694. }
Add Comment
Please, Sign In to add comment