Exemplo n.º 1
0
def get_patient_display_cache(case_ids):
    """
    For a given set of case_ids, return name and pact_ids
    """
    if len(case_ids) == 0:
        return {}
    case_es = ReportCaseES(PACT_DOMAIN)
    query = {
        "fields": [
            "_id",
            "name",
        ],
        "script_fields": {
            "case_id": {
                "script": "_source._id"
            },
            "pactid": get_report_script_field("pactid"),
            "first_name": get_report_script_field("first_name"),
            "last_name": get_report_script_field("last_name"),
        },
        "filter": {
            "and": [
                {
                    "term": {
                        "domain.exact": "pact"
                    }
                },
                {
                    "ids": {
                        "values": case_ids,
                    }
                }
            ]
        },
        "size": len(case_ids)
    }
    res = case_es.run_query(query)

    from pact.reports.patient import PactPatientInfoReport

    ret = {}
    for entry in res['hits']['hits']:
        case_id = entry['fields']['case_id']
        ret[case_id] = entry['fields']
        ret[case_id]['url'] = PactPatientInfoReport.get_url(*['pact']) + "?patient_id=%s" % case_id

    return ret
Exemplo n.º 2
0
def get_patient_display_cache(case_ids):
    """
    For a given set of case_ids, return name and pact_ids
    """
    if len(case_ids) == 0:
        return {}
    case_es = ReportCaseES(PACT_DOMAIN)
    query = {
        "fields": [
            "_id",
            "name",
        ],
        "script_fields": {
            "case_id": {
                "script": "_source._id"
            },
            "pactid": get_report_script_field("pactid"),
            "first_name": get_report_script_field("first_name"),
            "last_name": get_report_script_field("last_name"),
        },
        "filter": {
            "and": [{
                "term": {
                    "domain.exact": "pact"
                }
            }, {
                "ids": {
                    "values": case_ids,
                }
            }]
        },
        "size": len(case_ids)
    }
    res = case_es.run_query(query)

    from pact.reports.patient import PactPatientInfoReport

    ret = {}
    for entry in res['hits']['hits']:
        case_id = entry['fields']['case_id']
        ret[case_id] = entry['fields']
        ret[case_id]['url'] = PactPatientInfoReport.get_url(
            *['pact']) + "?patient_id=%s" % case_id

    return ret
Exemplo n.º 3
0
def dots_submissions_by_case(case_id, query_date, username=None):
    """
    Actually run query for username submissions
    todo: do terms for the pact_ids instead of individual term?
    """
    xform_es = ReportXFormES(PACT_DOMAIN)
    script_fields = {
        "doc_id": get_report_script_field('_id', is_known=True),
        "pact_id": get_report_script_field("form.pact_id"),
        "encounter_date": get_report_script_field('form.encounter_date'),
        "username": get_report_script_field('form.meta.username', is_known=True),
        "visit_type": get_report_script_field('form.visit_type'),
        "visit_kept": get_report_script_field('form.visit_kept'),
        "contact_type": get_report_script_field('form.contact_type'),
        "observed_art": get_report_script_field('form.observed_art'),
        "observed_non_art": get_report_script_field('form.observed_non_art'),
        "observer_non_art_dose": get_report_script_field('form.observed_non_art_dose'),
        "observed_art_dose": get_report_script_field('form.observed_art_dose'),
        "pillbox_check": get_report_script_field('form.pillbox_check.check'),
        "scheduled": get_report_script_field('form.scheduled'),
    }

    term_block = {'form.#type': 'dots_form'}
    if username is not None:
        term_block['form.meta.username'] = username
    query = xform_es.by_case_id_query(PACT_DOMAIN, case_id, terms=term_block,
                                      date_field='form.encounter_date.#value', startdate=query_date,
                                      enddate=query_date)
    query['sort'] = {'received_on': 'asc'}
    query['script_fields'] = script_fields
    query['size'] = 1
    query['from'] = 0
    res = xform_es.run_query(query)
    print simplejson.dumps(res, indent=2)
    return res
Exemplo n.º 4
0
def dots_submissions_by_case(case_id, query_date, username=None):
    """
    Actually run query for username submissions
    todo: do terms for the pact_ids instead of individual term?
    """
    xform_es = ReportXFormES(PACT_DOMAIN)
    script_fields = {
        "doc_id": get_report_script_field('_id', is_known=True),
        "pact_id": get_report_script_field("form.pact_id"),
        "encounter_date": get_report_script_field('form.encounter_date'),
        "username": get_report_script_field('form.meta.username', is_known=True),
        "visit_type": get_report_script_field('form.visit_type'),
        "visit_kept": get_report_script_field('form.visit_kept'),
        "contact_type": get_report_script_field('form.contact_type'),
        "observed_art": get_report_script_field('form.observed_art'),
        "observed_non_art": get_report_script_field('form.observed_non_art'),
        "observer_non_art_dose": get_report_script_field('form.observed_non_art_dose'),
        "observed_art_dose": get_report_script_field('form.observed_art_dose'),
        "pillbox_check": get_report_script_field('form.pillbox_check.check'),
        "scheduled": get_report_script_field('form.scheduled'),
    }

    term_block = {'form.#type': 'dots_form'}
    if username is not None:
        term_block['form.meta.username'] = username
    query = xform_es.by_case_id_query(PACT_DOMAIN, case_id, terms=term_block,
                                      date_field='form.encounter_date.#value', startdate=query_date,
                                      enddate=query_date)
    query['sort'] = {'received_on': 'asc'}
    query['script_fields'] = script_fields
    query['size'] = 1
    query['from'] = 0
    res = xform_es.run_query(query)
    print json.dumps(res, indent=2)
    return res