Beispiel #1
0
def build_custom(tag, gene_signatures, report_name, category):
    """Builds a custom report.
    """
    with session_scope() as session:
        report = Report(tag, _gene_signatures=gene_signatures,
                        is_approved=False, name=report_name,
                        category=category)
        session.add(report)
        session.commit()
    _build(report.id, category)
    return report.id
Beispiel #2
0
def rebuild(tag, category, wait_till_done=False):
    """Rebuild report for a tag. Used when the report is not complete
    """
    print('Rebuilding report.')
    report = tag.approved_report
    with session_scope() as session:
        report.reset(reanalyze=False)
        report.category = category
        session.merge(report)
        session.commit()
    _build(report.id, category, wait_till_done=wait_till_done)
    return
Beispiel #3
0
 def get_rx_age_kde(self):
     '''Get the KDE smoothened age distribution for the prescription of this drug.
     '''
     with session_scope() as session:
         query_results = session\
             .execute("""SELECT age_years, density 
                 FROM rx_age_kde
                 WHERE ingredient_id=:ingredient_id
                 """, params={'ingredient_id': self.ingredient_id})
         if query_results.rowcount == 0:
             return None
         else:
             results = query_results.fetchall()
             age_years = [item[0] for item in results]
             density = [item[1] for item in results]
             results = {'density': density, 'age_years':age_years, 'name': self.pert_iname}
             return json.dumps(results)
Beispiel #4
0
def build(tag, category, reanalyze=False):
    """Creates a new report in a separate thread.
    """
    if tag.approved_report:
        report = tag.approved_report
        # print('Resetting report.')
        # with session_scope() as session:
        #     report.reset(reanalyze=reanalyze)
        #     report.category = category
        #     session.merge(report)
        #     session.commit()
    else:
        print('Creating new report.')
        with session_scope() as session:
            report = Report(tag, is_approved=True, category=category)
            session.add(report)
            session.flush()
        _build(report.id, category)
Beispiel #5
0
    def get_rx_counts(self, nrows=20):
        with session_scope() as session:
            query_results = session\
                .execute("""SELECT co_rx.count AS z, 
                    co_rx.normed_count AS x,
                    rx_counts.count AS y, rx_counts.ingredient AS name
                    FROM co_rx
                    LEFT JOIN rx_counts ON rx_counts.`id`=co_rx.`co_prescribed_drug_id`
                    WHERE ingredient_id=:ingredient_id
                    ORDER BY x DESC
                    LIMIT :nrows;
                    """, params={'ingredient_id': self.ingredient_id, 'nrows':nrows})

            if query_results.rowcount == 0:
                return None
            else:
                field_names = query_results.keys()
                rx_counts = query_results.fetchall()
                rx_counts = [dict(zip(field_names, row)) for row in rx_counts]
                results = {'data': rx_counts, 'name': 'co_prescribed_drug'}
                return json.dumps(results)
Beispiel #6
0
    def get_dx_counts(self, nrows=20):
        with session_scope() as session:
            query_results = session\
                .execute("""SELECT co_dx.count AS z, 
                    co_dx.normed_count AS x, 
                    dx_counts.count AS y, dx_counts.ICD9, 
                    dx_counts.diagnosis AS name
                    FROM co_dx
                    LEFT JOIN dx_counts ON dx_counts.`id`=co_dx.`diagnosis_id`
                    WHERE ingredient_id=:ingredient_id
                    ORDER BY x DESC
                    LIMIT :nrows
                    """, params={'ingredient_id': self.ingredient_id, 'nrows':nrows})

            if query_results.rowcount == 0:
                return None
            else:
                field_names = query_results.keys()
                dx_counts = query_results.fetchall()
                dx_counts = [dict(zip(field_names, row)) for row in dx_counts]
                results = {'data': dx_counts, 'name': 'diagnoses'}
                return json.dumps(results)