stats.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:radar 作者: renalreg 项目源码 文件源码
def patients_by_group_date(group=None, group_type=None, interval='month'):
    """
    Number of patients in each group over time.
    """

    query = db.session.query(
        GroupPatient.group_id,
        GroupPatient.patient_id,
        func.min(GroupPatient.from_date).label('date')
    )
    query = query.join(GroupPatient.patient)
    query = query.filter(Patient.test == false())

    if group is not None and group.type == 'SYSTEM':
        query = query.filter(Patient.current(group) == true())
    else:
        query = query.filter(Patient.current() == true())

    # Filter by patients beloning to the specified group
    if group is not None:
        patient_alias = aliased(Patient)
        group_subquery = db.session.query(patient_alias)
        group_subquery = group_subquery.join(patient_alias.group_patients)
        group_subquery = group_subquery.filter(
            patient_alias.id == Patient.id,
            GroupPatient.group == group,
        )
        group_subquery = group_subquery.exists()

        query = query.filter(group_subquery)

    # Filter by group type
    if group_type is not None:
        query = query.join(GroupPatient.group)
        query = query.filter(Group.type == group_type)

    query = query.group_by(GroupPatient.group_id, GroupPatient.patient_id)
    query = query.cte()

    results = _get_results(query, interval)

    return results
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号