Exemple #1
0
class ChildVisitReqRuleGroup(RequisitionRuleGroup):

    # for dna_pcr and stool sample if the mother is positive
    dna_pcr_panel_rule = RequisitionRule(
        predicate=pc.func_hiv_exposed,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[dna_pcr_panel, stool_sample_panel])

    #  stool sample for 2000D if the mother is negative
    stool_sample_panel_rule = RequisitionRule(predicate=pc.func_2000D,
                                              consequence=REQUIRED,
                                              alternative=NOT_REQUIRED,
                                              target_panels=[
                                                  stool_sample_panel,
                                              ])

    plasma_store_panel_rule = RequisitionRule(predicate=pc.version_2_1,
                                              consequence=REQUIRED,
                                              alternative=NOT_REQUIRED,
                                              target_panels=[
                                                  infant_pl_cytokines_panel,
                                              ])

    class Meta:
        app_label = app_label
        source_model = f'{app_label}.childvisit'
        requisition_model = f'{app_label}.childrequisition'
Exemple #2
0
class QpcrRequisitionRuleGroup(RequisitionRuleGroup):

    require_qpcr_blood = RequisitionRule(
        predicate=pc.func_require_qpcr_requisition,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[qpcr_blood_panel],
    )

    require_qpcr24_blood = RequisitionRule(
        predicate=pc.func_require_qpcr_requisition,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[qpcr24_blood_panel],
    )

    require_qpcr_csf = RequisitionRule(
        predicate=pc.func_require_qpcr_requisition,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[qpcr_csf_panel],
    )

    class Meta:
        app_label = app_label
        requisition_model = f"{app_label}.subjectrequisition"
Exemple #3
0
class MaternalRequisitionRuleGroup(RequisitionRuleGroup):

    require_vl_prn = RequisitionRule(
        predicate=pc.func_mother_pos_vl,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[viral_load_panel])

    require_pbmc_vl = RequisitionRule(
        predicate=pc.func_mother_pos,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[pbmc_vl_panel])

    require_pbmc_storage = RequisitionRule(
        predicate=pc.func_mother_neg,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[pbmc_pl_panel])

    require_elisa_status_ind = RequisitionRule(
        predicate=pc.func_show_elisa_requisition,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[elisa_panel])

    class Meta:
        app_label = app_label
        source_model = f'{app_label}.maternalvisit'
        requisition_model = f'{app_label}.maternalrequisition'
class BaseRequisitionRuleGroup(RequisitionRuleGroup):
    """Ensures an RBD requisition if HIV result is POS.
    """
    rbd = RequisitionRule(
        predicate=pc.func_requires_rbd,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[rdb_panel], )

    vl_for_pos = RequisitionRule(
        predicate=pc.func_requires_vl,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[viral_load_panel], )

    microtube = RequisitionRule(
        predicate=pc.func_requires_microtube,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[microtube_panel], )

    venous = RequisitionRule(
        predicate=pc.func_requires_venous,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[venous_panel], )

    class Meta:
        abstract = True
Exemple #5
0
class ViralloadCD4RequisitionRuleGroup(RequisitionRuleGroup):

    require_cd4 = RequisitionRule(
        predicate=pc.func_require_cd4,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[cd4_panel],
    )

    require_vl = RequisitionRule(
        predicate=pc.func_require_vl,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[viral_load_panel],
    )

    class Meta:
        app_label = app_label
        source_model = f"{app_label}.patienthistory"
        requisition_model = f"{app_label}.subjectrequisition"
Exemple #6
0
class MaternalRequisitionRuleGroupCD4(RequisitionRuleGroup):

    require_vl_prn = RequisitionRule(predicate=pc.func_require_cd4,
                                     consequence=REQUIRED,
                                     alternative=NOT_REQUIRED,
                                     target_panels=[cd4_panel])

    class Meta:
        app_label = app_label
        source_model = f'{app_label}.maternalinterimidcc'
        requisition_model = f'{app_label}.maternalrequisition'
class CsfStopCmRequisitionRuleGroup(RequisitionRuleGroup):

    require_csf_stop = RequisitionRule(
        predicate=pc.func_require_pkpd_stopcm,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[csf_stop_panel],
    )

    class Meta:
        app_label = app_label
        requisition_model = f"{app_label}.subjectrequisition"
Exemple #8
0
class InfantRequisitionRuleGroup(RequisitionRuleGroup):

    require_dna_pcr = RequisitionRule(predicate=pc.func_infant_heu_require_pcr,
                                      consequence=REQUIRED,
                                      alternative=NOT_REQUIRED,
                                      target_panels=[dna_pcr])

    require_dbs = RequisitionRule(predicate=pc.func_require_infant_dbs,
                                  consequence=REQUIRED,
                                  alternative=NOT_REQUIRED,
                                  target_panels=[dbs_panel])

    require_elisa = RequisitionRule(predicate=pc.func_require_infant_elisa,
                                    consequence=REQUIRED,
                                    alternative=NOT_REQUIRED,
                                    target_panels=[infant_elisa_panel])

    class Meta:
        app_label = app_label
        source_model = f'{app_label}.infantvisit'
        requisition_model = f'{app_label}.infantrequisition'
class VisitRequisitionRuleGroup(RequisitionRuleGroup):
    require_microtube = RequisitionRule(
        predicate=pc.func_requires_microtube,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[microtube_panel])

    vl_for_pos = RequisitionRule(
        predicate=pc.func_requires_vl,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[viral_load_panel], )

    rbd = RequisitionRule(
        predicate=pc.func_requires_rbd,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[rdb_panel], )

    class Meta:
        app_label = app_label
        requisition_model = f'{app_label}.subjectrequisition'
class RequisitionRuleGroup1(BaseRequisitionRuleGroup):

    """Ensures an ELISA blood draw requisition if HIV result is IND.
    """
    elisa_for_ind = RequisitionRule(
        predicate=P('hiv_result', 'eq', IND),
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[elisa_panel])

    class Meta:
        app_label = app_label
        source_model = f'{app_label}.hivresult'
        requisition_model = f'{app_label}.subjectrequisition'
Exemple #11
0
class MaternalVisitReqRuleGroup(RequisitionRuleGroup):

    # Make VL Required regardless the pregnancy status
    viral_load_panel = RequisitionRule(predicate=pc.viral_load,
                                       consequence=REQUIRED,
                                       alternative=NOT_REQUIRED,
                                       target_panels=[
                                           viral_load_panel,
                                       ])

    class Meta:
        app_label = app_label
        source_model = f'{app_label}.maternalvisit'
        requisition_model = f'{app_label}.caregiverrequisition'
class QuestionnaireRequisitionRuleGroup(RequisitionRuleGroup):

    initiation = RequisitionRule(
        predicate=PF('registration_type',
                     func=lambda x: True
                     if x in [INITIATION, OTHER] else False),
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[panel_vl],
    )

    class Meta:
        source_model = 'bcpp_clinic_subject.questionnaire'
        requisition_model = f'{app_label}.subjectrequisition'
        app_label = app_label
class KaraboRequisitionRuleGroup(RequisitionRuleGroup):

    show_infant_paxgene = RequisitionRule(
        predicate=pc.func_show_infant_paxgene_panel,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[infant_paxgene_panel])

    show_karabo_pbmc_pl = RequisitionRule(
        predicate=pc.func_show_karabo_pbmc_pl_panel,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[karabo_pbmc_pl_panel])

    show_karabo_wb_pbmc_pl_panel = RequisitionRule(
        predicate=pc.func_show_karabo_wb_pbmc_pl_panel,
        consequence=REQUIRED,
        alternative=NOT_REQUIRED,
        target_panels=[karabo_wb_pbmc_pl_panel])

    class Meta:
        app_label = app_label
        source_model = f'{app_label}.infantvisit'
        requisition_model = f'{app_label}.infantrequisition'