Пример #1
0
#!/usr/bin/python
# -*- coding: utf-8 -*-

import logging
from ClinicalTrials.runner import Runner

logging.basicConfig(level=logging.DEBUG)

# setup the runner
run = Runner(666, 'run-alternative')
run.catch_exceptions = False
#run.limit = 3
run.discard_cached = False

run.term = "pulmonary arterial hypertension"
# run.term = "juvenile rheumatoid arthritis"
run.analyze_eligibility = False
run.analyze_keypaths = set([
    'condition_browse', 'intervention_browse', 'intervention', 'keyword',
    'primary_outcome', 'arm_group'
])


# create a callback
def cb(success, trials):
    if success:

        # loop trials
        for trial in trials:
            doc = trial.doc or {}
            print 'Trial "%s"  [ %s ]' % (trial.title, trial.nct)
Пример #2
0
from ClinicalTrials.runner import Runner
from ClinicalTrials.umls import UMLSLookup
from ClinicalTrials.ctakes import cTAKES
from ClinicalTrials.metamap import MetaMap
from ClinicalTrials.nltktags import NLTKTags

logging.basicConfig(level=logging.DEBUG)

# setup NLP pipelines
nlp_ctakes = cTAKES()
nlp_metamap = MetaMap()
nlp_nltkt = NLTKTags()
#nlp_nltkt.cleanup = False

# setup the runner
run = Runner(666, 'run-test')
run.catch_exceptions = False
#run.limit = 3
run.discard_cached = False

run.term = "juvenile rheumatoid arthritis"
run.analyze_eligibility = False
run.analyze_keypaths = set(['brief_summary'])
# run.analyze_keypaths = set(['eligibility_inclusion', 'eligibility_exclusion', 'brief_summary', 'detailed_description'])

run.add_pipeline(nlp_metamap)
# run.add_pipeline(nlp_nltkt)

# create a callback
def cb(success, trials):
	if success:
Пример #3
0
def find_trials():
    """ Initiates the chain to find trials for the given condition or search-
	term. Supply with parameters:
	- "cond" or "term", the prior taking precedence
	- "gender" ('male' or 'female')
	- "age" (in years)
	- "latlng", comma-separated latitude and longituted of the patient
	- "remember_input" if the condition or term should be stored in the session
	
	This method forks off and prints the status to a file which can be read by
	calling /trials_status/<run-id>. "run-id" is returned from this call.
	"""

    # get the runner
    run_id = datetime.now().isoformat()
    runner = Runner.get(run_id)
    if runner is None:
        runner = Runner(run_id, "run-server")
        runner.in_background = True

    # configure
    cond = bottle.request.query.get('cond')
    term = bottle.request.query.get('term')
    if cond:
        cond = re.sub(r'\s+\((disorder|finding)\)', '', cond)
        runner.condition = cond
    elif term:
        term = re.sub(r'\s+-(\w+)', r' NOT \1', term)
        term = re.sub(r'\s*([^\w\d])\s+([^-])', r' AND \2', term)
        runner.term = term
    else:
        bottle.abort(400, 'You need to specify "cond" or "term"')

    # latitude and longitude
    latlng = bottle.request.query.get('latlng')
    if latlng is None or 0 == len(latlng):
        latlng = '42.358,-71.06'  # default to Boston
    parts = latlng.split(',', 2)
    if parts is None or 2 != len(parts):
        bottle.abort(400, '"latlng" must be two numbers separated by a comma')

    lat = parts[0]
    lng = parts[1]
    runner.reference_location = (lat, lng)

    # store in session
    age = bottle.request.query.get('age')

    sess = _get_session()
    runs = sess.get('runs', {})
    runs[run_id] = {
        'cond': cond,
        'gender': bottle.request.query.get('gender'),
        'age': int(age) if age else None,
        'latlng': latlng
    }
    sess['runs'] = runs

    if 'true' == bottle.request.query.get('remember_input'):
        if cond or term:
            sess['last_manual_input'] = cond or term
        elif 'last_manual_input' in sess:
            del sess['last_manual_input']

    # launch and return id
    runner.run([
        'id', 'acronym', 'keyword', 'brief_title', 'official_title',
        'brief_summary', 'overall_contact', 'eligibility', 'location',
        'attributes', 'intervention', 'intervention_browse', 'phase',
        'study_design', 'primary_outcome'
    ])

    return run_id
Пример #4
0
    if term is None or len(term) < 1:
        term = 'diabetic cardiomyopathy'

    # recruiting = None
    # if _use_recruiting:
    # 	recruiting = raw_input("Recruiting: [no] ")
    # 	if recruiting is None or len(recruiting) < 1:
    # 		recruiting = False
    # 	else:
    # 		recruiting = recruiting[:1] is 'y' or recruiting[:1] is 'Y'

    # run the runner
    now = date.today()
    run_id = now.isoformat()
    run_dir = "run-%s-%s" % (re.sub(r'[^\w\d\-]+', '_', term.lower()), run_id)
    runner = Runner(run_id, run_dir)
    runner.run_ctakes = True
    runner.run_metamap = True
    runner.term = term
    runner.log_status = True
    runner.run()

    # generate HTML report
    if _generate_report:
        print 'Generating report...'
        recr_status = ''
        if _use_recruiting:
            recr_status = ', recruiting' if recruiting else ', not recruiting'

        html = """<html>
		<head>