コード例 #1
0

# 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)
            print '    keyw: %s' % '; '.join(doc.get('keyword') or [])
            print '    cond: %s' % '; '.join(
                doc.get('condition_browse', {}).get('mesh_term', []))
            print '    intr: %s' % '; '.join(
                doc.get('intervention_browse', {}).get('mesh_term', []))
            print '    intn: %s' % "\n    ----> ".join([
                p.get('intervention_name') or ''
                for p in doc.get('intervention', [])
            ])
            print '    prim: %s' % "\n    ----> ".join([
                p.get('measure') or '' for p in doc.get('primary_outcome', [])
            ])
            #	print '    armg: %s' % "\n    ----> ".join([a.get('description') or '' for a in doc.get('arm_group', [])])

            print "\n"


# run!
print 'Run id %d' % run.run_id
run.run(callback=cb)
コード例 #2
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
コード例 #3
0
ファイル: wsgi.py プロジェクト: frankyyyt/clinical-trials-gov
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
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)
			print '    keyw: %s' % '; '.join(doc.get('keyword') or [])
			print '    cond: %s' % '; '.join(doc.get('condition_browse', {}).get('mesh_term', []))
			print '    intr: %s' % '; '.join(doc.get('intervention_browse', {}).get('mesh_term', []))
			print '    intn: %s' % "\n    ----> ".join([p.get('intervention_name') or '' for p in doc.get('intervention', [])])
			print '    prim: %s' % "\n    ----> ".join([p.get('measure') or '' for p in doc.get('primary_outcome', [])])
		#	print '    armg: %s' % "\n    ----> ".join([a.get('description') or '' for a in doc.get('arm_group', [])])
			
			print "\n"

# run!
print 'Run id %d' % run.run_id
run.run(callback=cb)
コード例 #5
0
ファイル: elig.py プロジェクト: p2/clinical-trials-gov
        # 	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>
			<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
			<title>Report: %s</title>
			<style>
			body { font-size: small; font-family: 'Helvetica-Neue', Helvetica, sans-serif; }
			table { border-collapse: collapse; }
コード例 #6
0
    # 	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>
			<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
			<title>Report: %s</title>
			<style>
			body { font-size: small; font-family: 'Helvetica-Neue', Helvetica, sans-serif; }
			table { border-collapse: collapse; }