Exemplo n.º 1
0
class BcppClinicVisitSchedule(VisitScheduleConfiguration):

    name = 'clinic visit schedule'
    app_label = 'bcpp_clinic'
    panel_model = 'Panel'
    membership_forms = OrderedDict({
        'bcpp_clinic':
        MembershipFormTuple('bcpp_clinic', ClinicConsent, True),
    })

    # schedule groups
    # (name, membership_form_name, grouping_key, comment)
    schedule_groups = OrderedDict({
        'clinic':
        ScheduleGroupTuple('clinic', 'bcpp_clinic', None, None),
    })

    # visit_schedule
    # see edc.subject.visit_schedule.models.visit_defintion
    visit_definitions = OrderedDict({
        'C0': {
            'title':
            'Clinic Registration',
            'time_point':
            0,
            'base_interval':
            0,
            'base_interval_unit':
            'D',
            'window_lower_bound':
            0,
            'window_lower_bound_unit':
            'D',
            'window_upper_bound':
            0,
            'window_upper_bound_unit':
            'D',
            'grouping':
            None,
            'visit_tracking_model':
            ClinicVisit,
            'schedule_group':
            'clinic',
            'instructions':
            None,
            'requisitions': (
                RequisitionPanelTuple(10L, u'bcpp_lab', u'clinicrequisition',
                                      'Research Blood Draw', 'TEST', 'WB',
                                      REQUIRED, NOT_ADDITIONAL),
                RequisitionPanelTuple(20L, u'bcpp_lab', u'clinicrequisition',
                                      'Clinic Viral Load', 'TEST', 'WB',
                                      NOT_REQUIRED, ADDITIONAL),
            ),
            'entries': (
                EntryTuple(
                    10L,
                    u'bcpp_clinic',
                    u'clinicsubjectlocator',
                    REQUIRED,
                    NOT_ADDITIONAL,
                ),
                EntryTuple(
                    20L,
                    u'bcpp_clinic',
                    u'questionnaire',
                    REQUIRED,
                    NOT_ADDITIONAL,
                ),
                EntryTuple(
                    30L,
                    u'bcpp_clinic',
                    u'clinicvlresult',
                    NOT_REQUIRED,
                    ADDITIONAL,
                ),
                EntryTuple(
                    40L,
                    u'bcpp_clinic',
                    u'viralloadtracking',
                    NOT_REQUIRED,
                    ADDITIONAL,
                ),
            )
        }
    })
Exemplo n.º 2
0
class MpepuInfantPreRandoVisitSchedule(VisitScheduleConfiguration):

    name = 'pre-rando visit schedule'
    app_label = 'mpepu_infant'
    # membership forms
    # (name, model, visible)
    membership_forms = OrderedDict({
        'infant_pre_randomize':
        MembershipFormTuple('infant_pre_randomize', InfantPreEligibility,
                            True),
    })

    # schedule groups
    # (name, membership_form_name, grouping_key, comment)
    schedule_groups = OrderedDict({
        'Infant Pre-eligibility':
        ScheduleGroupTuple('Infant Pre-eligibility', 'infant_pre_randomize',
                           None, None),
    })

    # visit_schedule
    # see edc.subject.visit_schedule.models.visit_defintion
    visit_definitions = OrderedDict({
        '2015': {
            'title':
            'Randomization II',
            'time_point':
            15,
            'base_interval':
            27,
            'base_interval_unit':
            'D',
            'window_lower_bound':
            0,
            'window_lower_bound_unit':
            'D',
            'window_upper_bound':
            0,
            'window_upper_bound_unit':
            'D',
            'grouping':
            'infant',
            'visit_tracking_model':
            InfantVisit,
            'schedule_group':
            'Infant Pre-eligibility',
            'instructions':
            None,
            'requisitions': (
                # (entry_order, app_label, model_name, panel.name, panel.edc_name, panel.panel_type, aliquot_type)
                RequisitionPanelTuple(100L, u'mpepu_lab', u'infantrequisition',
                                      'Hematology (ARV)', 'TEST', 'WB',
                                      NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(200L, u'mpepu_lab', u'infantrequisition',
                                      'PBMC Plasma (STORE ONLY)', 'STORAGE',
                                      'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(300L, u'mpepu_lab', u'infantrequisition',
                                      'DNA PCR', 'TEST', 'WB', NOT_REQUIRED,
                                      ADDITIONAL),
                #(entry_order, app_label, model_name, requisition_panel_name, panel_type, aliquot_type_alpha_code, form_visible)
                RequisitionPanelTuple(400L, u'mpepu_lab', u'infantrequisition',
                                      'Plasma and Buffy Coat Storage',
                                      'STORAGE', 'WB', NOT_REQUIRED,
                                      ADDITIONAL),
                RequisitionPanelTuple(500L, u'mpepu_lab', u'infantrequisition',
                                      'ELISA', 'TEST', 'WB', NOT_REQUIRED,
                                      ADDITIONAL),
                RequisitionPanelTuple(600L, u'mpepu_lab', u'infantrequisition',
                                      'Bana 01 Chemistry', 'TEST', 'WB',
                                      NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(700L, u'mpepu_lab', u'infantrequisition',
                                      'Hepatitis B only', 'TEST', 'WB',
                                      NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(800L, u'mpepu_lab', u'infantrequisition',
                                      'HIV Western Blot', 'TEST', 'WB',
                                      NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(900L, u'mpepu_lab', u'infantrequisition',
                                      'Stool storage', 'STORAGE', 'ST',
                                      NOT_REQUIRED, ADDITIONAL),
            ),
            'entries': (
                EntryTuple(10L, u'mpepu_infant', u'infantarvproph', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(20L, u'mpepu_infant', u'infantnvpadherence',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(30L, u'mpepu_infant', u'infantfu', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(40L, u'mpepu_infant', u'infantfuphysical', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(50L, u'mpepu_infant', u'infantfudx', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(60L, u'mpepu_infant', u'infantfud', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(70L, u'mpepu_infant', u'infantfudx2proph', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(80L, u'mpepu_infant', u'infantfunewmed', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(90L, u'mpepu_infant', u'infantfumed', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(100L, u'mpepu_infant', u'infantstudydrug', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(110L, u'mpepu_infant', u'infantctxplaceboadh',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(120L, u'mpepu_infant', u'infantfeeding', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(130L, u'mpepu_infant', u'infantstudydruginit',
                           REQUIRED, NOT_ADDITIONAL),
                #following are additional forms
                EntryTuple(200L, u'mpepu_infant', u'infantdeath', NOT_REQUIRED,
                           ADDITIONAL),
                EntryTuple(201L, u'mpepu_infant', u'infantsurvival',
                           NOT_REQUIRED, ADDITIONAL),
                EntryTuple(210L, u'mpepu_infant', u'infantverbalautopsy',
                           NOT_REQUIRED, ADDITIONAL),
                EntryTuple(220L, u'mpepu_infant', u'infantoffdrug',
                           NOT_REQUIRED, ADDITIONAL),
                EntryTuple(230L, u'mpepu_infant', u'infantoffstudy',
                           NOT_REQUIRED, ADDITIONAL),
            )
        }
    })
Exemplo n.º 3
0
class MpepuMaternalAnteNatalVisitSchedule(VisitScheduleConfiguration):

    name = 'antenatal visit schedule'
    app_label = 'mpepu_maternal'
    # membership forms
    # (name, model, visible)
    membership_forms = OrderedDict({
        'maternal_eligible_antenatal':
        MembershipFormTuple('maternal_eligible_antenatal',
                            MaternalEligibilityAnte, True),
    })

    # schedule groups
    # (name, membership_form_name, grouping_key, comment)
    schedule_groups = OrderedDict({
        'Maternal Ante Natal Reg':
        ScheduleGroupTuple('Maternal Ante Natal Reg',
                           'maternal_eligible_antenatal', 'ELIGIBILITY', None),
    })

    # visit_schedule
    # see edc.subject.visit_schedule.models.visit_defintion
    visit_definitions = OrderedDict({
        '1000M': {
            'title':
            'Maternal Ante Natal Registration',
            'time_point':
            0,
            'base_interval':
            0,
            'base_interval_unit':
            'D',
            'window_lower_bound':
            0,
            'window_lower_bound_unit':
            'D',
            'window_upper_bound':
            0,
            'window_upper_bound_unit':
            'D',
            'grouping':
            'maternal',
            'visit_tracking_model':
            MaternalVisit,
            'schedule_group':
            'Maternal Ante Natal Reg',
            'instructions':
            'As of 2012-11-26, submit requisition for Viral Load (storage only) instead of PHS Ultrasensitive Viral Load (<50)',
            'requisitions': (
                # (entry_order, app_label, model_name, panel.name, panel.edc_name, panel.panel_type, aliquot_type)
                RequisitionPanelTuple(100L, u'mpepu_lab',
                                      u'maternalrequisition',
                                      'Hematology (ARV)', 'TEST', 'WB',
                                      REQUIRED, NOT_ADDITIONAL),
                RequisitionPanelTuple(200L, u'mpepu_lab',
                                      u'maternalrequisition',
                                      'Viral load (storage only)', 'STORAGE',
                                      'WB', REQUIRED, NOT_ADDITIONAL),
                RequisitionPanelTuple(300L, u'mpepu_lab',
                                      u'maternalrequisition', 'CD4 (ARV)',
                                      'TEST', 'WB', REQUIRED, NOT_ADDITIONAL),
                RequisitionPanelTuple(400L, u'mpepu_lab',
                                      u'maternalrequisition',
                                      'Plasma and Buffy Coat Storage',
                                      'STORAGE', 'WB', REQUIRED,
                                      NOT_ADDITIONAL),
                RequisitionPanelTuple(500L, u'mpepu_lab',
                                      u'maternalrequisition',
                                      'Breast Milk (Storage)', 'STORAGE', 'BM',
                                      NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(600L, u'mpepu_lab',
                                      u'maternalrequisition',
                                      'PHS: Ultrasensetive Viral Load', 'TEST',
                                      'WB', NOT_REQUIRED, ADDITIONAL),
            ),
            'entries': (
                EntryTuple(10L, u'mpepu_maternal', u'maternalenroll', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(20L, u'mpepu_maternal', u'maternalenrolldem',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(30L, u'mpepu_maternal', u'maternalenrollmed',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(40L, u'mpepu_maternal', u'maternalenrollclin',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(50L, u'mpepu_maternal', u'maternalenrollob',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(60L, u'mpepu_maternal', u'maternalenrollarv',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(70L, u'mpepu_maternal', u'maternalarvpreg',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(80L, u'mpepu_maternal', u'maternalarvpreghistory',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(90L, u'mpepu_maternal', u'maternalarvpphistory',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(100L, u'mpepu_maternal', u'maternallabdel',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(110L, u'mpepu_maternal', u'maternallabdelmed',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(120L, u'mpepu_maternal', u'maternallabdeldx',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(130L, u'mpepu_maternal', u'maternallabdelclinic',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(140L, u'mpepu_maternal', u'maternallocator',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(150L, u'mpepu_maternal', u'feedingchoice', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(160L, u'mpepu_maternal', u'feedingchoicesectionone',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(170L, u'mpepu_maternal', u'feedingchoicesectiontwo',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(180L, u'mpepu_maternal',
                           u'feedingchoicesectionthree', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(190L, u'mpepu_maternal',
                           u'postnatalinfantfeedingsurvey', REQUIRED,
                           NOT_ADDITIONAL),
                #following are additional forms
                EntryTuple(200L, u'mpepu_maternal', u'maternaldeath',
                           NOT_REQUIRED, ADDITIONAL),
                EntryTuple(210L, u'mpepu_maternal', u'maternaloffstudy',
                           NOT_REQUIRED, ADDITIONAL),
            )
        }
    })
class MpepuMaternalPostPartumVisitSchedule(VisitScheduleConfiguration):

    name = 'postreg visit schedule'
    app_label = 'mpepu_maternal'
    # membership forms
    # (name, model, visible)
    membership_forms = OrderedDict({
        'maternal_postnatal_reg': MembershipFormTuple('maternal_postnatal_reg', MaternalPostReg, True),
        })

    # schedule groups
    # (name, membership_form_name, grouping_key, comment)
    schedule_groups = OrderedDict({
        'Post Partum Follow-up': ScheduleGroupTuple('Post Partum Follow-up', 'maternal_postnatal_reg', None, None),
        })
    # visit_schedule
    # see edc.subject.visit_schedule.models.visit_defintion
    visit_definitions = OrderedDict()

    visit_definitions['2010M'] = {
            'title': 'Infant Randomization',
            'time_point': 10,
            'base_interval': 1,
            'base_interval_unit': 'M',
            'window_lower_bound': 0,
            'window_lower_bound_unit': 'D',
            'window_upper_bound': 0,
            'window_upper_bound_unit': 'D',
            'grouping': 'maternal',
            'visit_tracking_model': MaternalVisit,
            'schedule_group': 'Post Partum Follow-up',
            'instructions': None,
            'requisitions': (
                # (entry_order, app_label, model_name, panel.name, panel.edc_name, panel.panel_type, aliquot_type)
                RequisitionPanelTuple(100L, u'mpepu_lab', u'maternalrequisition', 'Breast Milk (Storage)', 'STORAGE', 'BM', REQUIRED, NOT_ADDITIONAL),
                RequisitionPanelTuple(200L, u'mpepu_lab', u'maternalrequisition', 'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB', REQUIRED, NOT_ADDITIONAL),
                RequisitionPanelTuple(300L, u'mpepu_lab', u'maternalrequisition', 'Hematology (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(400L, u'mpepu_lab', u'maternalrequisition', 'Viral load (storage only)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(500L, u'mpepu_lab', u'maternalrequisition', 'CD4 (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(600L, u'mpepu_lab', u'maternalrequisition', 'Plasma and Buffy Coat Storage', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(700L, u'mpepu_lab', u'maternalrequisition', 'PHS: Ultrasensetive Viral Load', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(800L, u'mpepu_lab', u'maternalrequisition', 'PHS: Ultrasensetive Viral Load', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                ),
            'entries': (
                EntryTuple(10L, u'mpepu_maternal', u'maternalpostfu', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(20L, u'mpepu_maternal', u'maternalpostfudx', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(30L, u'mpepu_maternal', u'maternalarvpost', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(40L, u'mpepu_maternal', u'maternalarvpostadh', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(50L, u'mpepu_maternal', u'postnatalinfantfeedingsurvey', REQUIRED, NOT_ADDITIONAL),
                #following are additional forms
                EntryTuple(200L, u'mpepu_maternal', u'maternaldeath', NOT_REQUIRED, ADDITIONAL),
                EntryTuple(210L, u'mpepu_maternal', u'maternaloffstudy', NOT_REQUIRED, ADDITIONAL),
            )}
    visit_definitions['2020M'] = {
            'title': '2 Months Postpartum Visit',
            'time_point': 20,
            'base_interval': 2,
            'base_interval_unit': 'M',
            'window_lower_bound': 0,
            'window_lower_bound_unit': 'D',
            'window_upper_bound': 0,
            'window_upper_bound_unit': 'D',
            'grouping': 'maternal',
            'visit_tracking_model': MaternalVisit,
            'schedule_group': 'Post Partum Follow-up',
            'instructions': None,
            'requisitions': (
                # (entry_order, app_label, model_name, requisition_panel_name, panel.panel_type, aliquot_type)
                RequisitionPanelTuple(100L, u'mpepu_lab', u'maternalrequisition', 'Breast Milk (Storage)', 'STORAGE', 'BM', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(200L, u'mpepu_lab', u'maternalrequisition', 'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(300L, u'mpepu_lab', u'maternalrequisition', 'Hematology (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(400L, u'mpepu_lab', u'maternalrequisition', 'Viral load (storage only)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(500L, u'mpepu_lab', u'maternalrequisition', 'CD4 (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(600L, u'mpepu_lab', u'maternalrequisition', 'Plasma and Buffy Coat Storage', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(700L, u'mpepu_lab', u'maternalrequisition', 'PHS: Ultrasensetive Viral Load', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                ),
            'entries': (
                EntryTuple(10L, u'mpepu_maternal', u'maternalpostfu', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(20L, u'mpepu_maternal', u'maternalpostfudx', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(30L, u'mpepu_maternal', u'maternalarvpost', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(40L, u'mpepu_maternal', u'maternalarvpostadh', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(50L, u'mpepu_maternal', u'postnatalinfantfeedingsurvey', REQUIRED, NOT_ADDITIONAL),
                #following are additional forms
                EntryTuple(200L, u'mpepu_maternal', u'maternaldeath', NOT_REQUIRED, ADDITIONAL),
                EntryTuple(210L, u'mpepu_maternal', u'maternaloffstudy', NOT_REQUIRED, ADDITIONAL),
            )}
    visit_definitions['2030M'] = {
            'title': '3 Months Postpartum Visit',
            'time_point': 30,
            'base_interval': 3,
            'base_interval_unit': 'M',
            'window_lower_bound': 0,
            'window_lower_bound_unit': 'D',
            'window_upper_bound': 0,
            'window_upper_bound_unit': 'D',
            'grouping': 'maternal',
            'visit_tracking_model': MaternalVisit,
            'schedule_group': 'Post Partum Follow-up',
            'instructions': None,
            'requisitions': (
                # (entry_order, app_label, model_name, panel.name, panel.edc_name, panel.panel_type, aliquot_type)
                RequisitionPanelTuple(10L, u'mpepu_lab', u'maternalrequisition', 'PHS: Ultrasensetive Viral Load', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(100L, u'mpepu_lab', u'maternalrequisition', 'Breast Milk (Storage)', 'STORAGE', 'BM', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(200L, u'mpepu_lab', u'maternalrequisition', 'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(300L, u'mpepu_lab', u'maternalrequisition', 'Hematology (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(400L, u'mpepu_lab', u'maternalrequisition', 'Viral load (storage only)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(500L, u'mpepu_lab', u'maternalrequisition', 'CD4 (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(600L, u'mpepu_lab', u'maternalrequisition', 'Plasma and Buffy Coat Storage', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                ),
            'entries': (
                EntryTuple(10L, u'mpepu_maternal', u'maternalpostfu', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(20L, u'mpepu_maternal', u'maternalpostfudx', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(30L, u'mpepu_maternal', u'maternalarvpost', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(40L, u'mpepu_maternal', u'maternalarvpostadh', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(50L, u'mpepu_maternal', u'postnatalinfantfeedingsurvey', REQUIRED, NOT_ADDITIONAL),
                #following are additional forms
                EntryTuple(200L, u'mpepu_maternal', u'maternaldeath', NOT_REQUIRED, ADDITIONAL),
                EntryTuple(210L, u'mpepu_maternal', u'maternaloffstudy', NOT_REQUIRED, ADDITIONAL),
            )}
    visit_definitions['2060M'] = {
            'title': '6 Months Postpartum Visit',
            'time_point': 60,
            'base_interval': 6,
            'base_interval_unit': 'M',
            'window_lower_bound': 0,
            'window_lower_bound_unit': 'D',
            'window_upper_bound': 0,
            'window_upper_bound_unit': 'D',
            'grouping': 'maternal',
            'visit_tracking_model': MaternalVisit,
            'schedule_group': 'Post Partum Follow-up',
            'instructions': None,
            'requisitions': (
                # (entry_order, app_label, model_name, panel.name, panel.edc_name, panel.panel_type, aliquot_type)
                RequisitionPanelTuple(10L, u'mpepu_lab', u'maternalrequisition', 'PHS: Ultrasensetive Viral Load', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(100L, u'mpepu_lab', u'maternalrequisition', 'Breast Milk (Storage)', 'STORAGE', 'BM', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(200L, u'mpepu_lab', u'maternalrequisition', 'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(300L, u'mpepu_lab', u'maternalrequisition', 'Hematology (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(400L, u'mpepu_lab', u'maternalrequisition', 'Viral load (storage only)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(500L, u'mpepu_lab', u'maternalrequisition', 'CD4 (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(600L, u'mpepu_lab', u'maternalrequisition', 'Plasma and Buffy Coat Storage', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                ),
            'entries': (
                EntryTuple(10L, u'mpepu_maternal', u'maternalpostfu', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(20L, u'mpepu_maternal', u'maternalpostfudx', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(30L, u'mpepu_maternal', u'maternalarvpost', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(40L, u'mpepu_maternal', u'maternalarvpostadh', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(50L, u'mpepu_maternal', u'postnatalinfantfeedingsurvey', REQUIRED, NOT_ADDITIONAL),
                #following are additional forms
                EntryTuple(200L, u'mpepu_maternal', u'maternaldeath', NOT_REQUIRED, ADDITIONAL),
                EntryTuple(210L, u'mpepu_maternal', u'maternaloffstudy', NOT_REQUIRED, ADDITIONAL),
            )}
    visit_definitions['2090M'] = {
            'title': '9 Months Postpartum Visit',
            'time_point': 90,
            'base_interval': 9,
            'base_interval_unit': 'M',
            'window_lower_bound': 0,
            'window_lower_bound_unit': 'D',
            'window_upper_bound': 0,
            'window_upper_bound_unit': 'D',
            'grouping': 'maternal',
            'visit_tracking_model': MaternalVisit,
            'schedule_group': 'Post Partum Follow-up',
            'instructions': None,
            'requisitions': (
                # (entry_order, app_label, model_name, panel.name, panel.edc_name, panel.panel_type, aliquot_type)
                RequisitionPanelTuple(10L, u'mpepu_lab', u'maternalrequisition', 'PHS: Ultrasensetive Viral Load', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(100L, u'mpepu_lab', u'maternalrequisition', 'Breast Milk (Storage)', 'STORAGE', 'BM', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(200L, u'mpepu_lab', u'maternalrequisition', 'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(300L, u'mpepu_lab', u'maternalrequisition', 'Hematology (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(400L, u'mpepu_lab', u'maternalrequisition', 'Viral load (storage only)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(500L, u'mpepu_lab', u'maternalrequisition', 'CD4 (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(600L, u'mpepu_lab', u'maternalrequisition', 'Plasma and Buffy Coat Storage', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                ),
            'entries': (
                EntryTuple(10L, u'mpepu_maternal', u'maternalpostfu', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(20L, u'mpepu_maternal', u'maternalpostfudx', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(30L, u'mpepu_maternal', u'maternalarvpost', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(40L, u'mpepu_maternal', u'maternalarvpostadh', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(50L, u'mpepu_maternal', u'postnatalinfantfeedingsurvey', REQUIRED, NOT_ADDITIONAL),
                #following are additional forms
                EntryTuple(200L, u'mpepu_maternal', u'maternaldeath', NOT_REQUIRED, ADDITIONAL),
                EntryTuple(210L, u'mpepu_maternal', u'maternaloffstudy', NOT_REQUIRED, ADDITIONAL),
            )}
    visit_definitions['2120M'] = {
            'title': '12 Months Postpartum Visit',
            'time_point': 120,
            'base_interval': 12,
            'base_interval_unit': 'M',
            'window_lower_bound': 0,
            'window_lower_bound_unit': 'D',
            'window_upper_bound': 0,
            'window_upper_bound_unit': 'D',
            'grouping': 'maternal',
            'visit_tracking_model': MaternalVisit,
            'schedule_group': 'Post Partum Follow-up',
            'instructions': None,
            'requisitions': (
                # (entry_order, app_label, model_name, panel.name, panel.edc_name, panel.panel_type, aliquot_type)
                RequisitionPanelTuple(10L, u'mpepu_lab', u'maternalrequisition', 'PHS: Ultrasensetive Viral Load', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(100L, u'mpepu_lab', u'maternalrequisition', 'Breast Milk (Storage)', 'STORAGE', 'BM', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(200L, u'mpepu_lab', u'maternalrequisition', 'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(300L, u'mpepu_lab', u'maternalrequisition', 'Hematology (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(400L, u'mpepu_lab', u'maternalrequisition', 'Viral load (storage only)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(500L, u'mpepu_lab', u'maternalrequisition', 'CD4 (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(600L, u'mpepu_lab', u'maternalrequisition', 'Plasma and Buffy Coat Storage', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                ),
            'entries': (
                EntryTuple(10L, u'mpepu_maternal', u'maternalpostfu', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(20L, u'mpepu_maternal', u'maternalpostfudx', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(30L, u'mpepu_maternal', u'maternalarvpost', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(40L, u'mpepu_maternal', u'maternalarvpostadh', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(50L, u'mpepu_maternal', u'postnatalinfantfeedingsurvey', REQUIRED, NOT_ADDITIONAL),
                #following are additional forms
                EntryTuple(200L, u'mpepu_maternal', u'maternaldeath', NOT_REQUIRED, ADDITIONAL),
                EntryTuple(210L, u'mpepu_maternal', u'maternaloffstudy', NOT_REQUIRED, ADDITIONAL),
            )}
    visit_definitions['2150M'] = {
            'title': '15 Months Postpartum Visit',
            'time_point': 150,
            'base_interval': 15,
            'base_interval_unit': 'M',
            'window_lower_bound': 0,
            'window_lower_bound_unit': 'D',
            'window_upper_bound': 0,
            'window_upper_bound_unit': 'D',
            'grouping': 'maternal',
            'visit_tracking_model': MaternalVisit,
            'schedule_group': 'Post Partum Follow-up',
            'instructions': None,
            'requisitions': (
                # (entry_order, app_label, model_name, panel.name, panel.edc_name, panel.panel_type, aliquot_type)
                RequisitionPanelTuple(10L, u'mpepu_lab', u'maternalrequisition', 'PHS: Ultrasensetive Viral Load', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(100L, u'mpepu_lab', u'maternalrequisition', 'Breast Milk (Storage)', 'STORAGE', 'BM', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(200L, u'mpepu_lab', u'maternalrequisition', 'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(300L, u'mpepu_lab', u'maternalrequisition', 'Hematology (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(400L, u'mpepu_lab', u'maternalrequisition', 'Viral load (storage only)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(500L, u'mpepu_lab', u'maternalrequisition', 'CD4 (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(600L, u'mpepu_lab', u'maternalrequisition', 'Plasma and Buffy Coat Storage', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                ),
            'entries': (
                EntryTuple(10L, u'mpepu_maternal', u'maternalpostfu', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(20L, u'mpepu_maternal', u'maternalpostfudx', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(30L, u'mpepu_maternal', u'maternalarvpost', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(40L, u'mpepu_maternal', u'maternalarvpostadh', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(50L, u'mpepu_maternal', u'postnatalinfantfeedingsurvey', REQUIRED, NOT_ADDITIONAL),
                #following are additional forms
                EntryTuple(200L, u'mpepu_maternal', u'maternaldeath', NOT_REQUIRED, ADDITIONAL),
                EntryTuple(210L, u'mpepu_maternal', u'maternaloffstudy', NOT_REQUIRED, ADDITIONAL),
            )}
    visit_definitions['2180M'] = {
            'title': '18 Months Postpartum Visit',
            'time_point': 180,
            'base_interval': 18,
            'base_interval_unit': 'M',
            'window_lower_bound': 0,
            'window_lower_bound_unit': 'D',
            'window_upper_bound': 0,
            'window_upper_bound_unit': 'D',
            'grouping': 'maternal',
            'visit_tracking_model': MaternalVisit,
            'schedule_group': 'Post Partum Follow-up',
            'instructions': None,
            'requisitions': (
                # (entry_order, app_label, model_name, panel.name, panel.edc_name, panel.panel_type, aliquot_type)
                RequisitionPanelTuple(10L, u'mpepu_lab', u'maternalrequisition', 'PHS: Ultrasensetive Viral Load', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(100L, u'mpepu_lab', u'maternalrequisition', 'Breast Milk (Storage)', 'STORAGE', 'BM', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(200L, u'mpepu_lab', u'maternalrequisition', 'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(300L, u'mpepu_lab', u'maternalrequisition', 'Hematology (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(400L, u'mpepu_lab', u'maternalrequisition', 'Viral load (storage only)', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(500L, u'mpepu_lab', u'maternalrequisition', 'CD4 (ARV)', 'TEST', 'WB', NOT_REQUIRED, ADDITIONAL),
                RequisitionPanelTuple(600L, u'mpepu_lab', u'maternalrequisition', 'Plasma and Buffy Coat Storage', 'STORAGE', 'WB', NOT_REQUIRED, ADDITIONAL),
                ),
            'entries': (
                EntryTuple(10L, u'mpepu_maternal', u'maternalpostfu', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(20L, u'mpepu_maternal', u'maternalpostfudx', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(30L, u'mpepu_maternal', u'maternalarvpost', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(40L, u'mpepu_maternal', u'maternalarvpostadh', REQUIRED, NOT_ADDITIONAL),
                EntryTuple(50L, u'mpepu_maternal', u'postnatalinfantfeedingsurvey', REQUIRED, NOT_ADDITIONAL),
                #following are additional forms
                EntryTuple(200L, u'mpepu_maternal', u'maternaldeath', NOT_REQUIRED, ADDITIONAL),
                EntryTuple(210L, u'mpepu_maternal', u'maternaloffstudy', REQUIRED, NOT_ADDITIONAL),
            )}
class MpepuInfantRandoMonthlyVisitSchedule(VisitScheduleConfiguration):

    name = 'monthly visit schedule'
    app_label = 'mpepu_infant'
    # membership forms
    # (name, model, visible)
    membership_forms = OrderedDict({
        'infant_rando_eligible':
        MembershipFormTuple('infant_rando_eligible', InfantEligibility, True),
    })

    # schedule groups
    # (name, membership_form_name, grouping_key, comment)
    schedule_groups = OrderedDict({
        'Infant Rando and F/Up':
        ScheduleGroupTuple('Infant Rando and F/Up', 'infant_rando_eligible',
                           None, None),
    })

    # visit_schedule
    # see edc.subject.visit_schedule.models.visit_defintion
    visit_definitions = OrderedDict()

    visit_definitions['2020'] = {
        'title':
        'Infant 2 Months Visit',
        'time_point':
        20,
        'base_interval':
        2,
        'base_interval_unit':
        'M',
        'window_lower_bound':
        0,
        'window_lower_bound_unit':
        'D',
        'window_upper_bound':
        0,
        'window_upper_bound_unit':
        'D',
        'grouping':
        'infant',
        'visit_tracking_model':
        InfantVisit,
        'schedule_group':
        'Infant Rando and F/Up',
        'instructions':
        None,
        'requisitions': (
            RequisitionPanelTuple(100L, u'mpepu_lab', u'infantrequisition',
                                  'DNA PCR', 'TEST', 'WB', NOT_REQUIRED,
                                  ADDITIONAL),
            RequisitionPanelTuple(200L, u'mpepu_lab', u'infantrequisition',
                                  'Plasma and Buffy Coat Storage', 'STORAGE',
                                  'WB', NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(300L, u'mpepu_lab', u'infantrequisition',
                                  'Hematology (ARV)', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(400L, u'mpepu_lab', u'infantrequisition',
                                  'ELISA', 'TEST', 'WB', NOT_REQUIRED,
                                  ADDITIONAL),
            RequisitionPanelTuple(500L, u'mpepu_lab', u'infantrequisition',
                                  'Bana 01 Chemistry', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(600L, u'mpepu_lab', u'infantrequisition',
                                  'Hepatitis B only', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(700L, u'mpepu_lab', u'infantrequisition',
                                  'HIV Western Blot', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(800L, u'mpepu_lab', u'infantrequisition',
                                  'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
        ),
        'entries': (
            EntryTuple(10L, u'mpepu_infant', u'infantarvproph', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(20L, u'mpepu_infant', u'infantnvpadherence', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(30L, u'mpepu_infant', u'infantfu', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(40L, u'mpepu_infant', u'infantfuphysical', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(50L, u'mpepu_infant', u'infantfudx', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(60L, u'mpepu_infant', u'infantfud', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(70L, u'mpepu_infant', u'infantfudx2proph', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(80L, u'mpepu_infant', u'infantfunewmed', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(90L, u'mpepu_infant', u'infantfumed', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(100L, u'mpepu_infant', u'infantstudydrug', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(110L, u'mpepu_infant', u'infantctxplaceboadh', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(120L, u'mpepu_infant', u'infantfeeding', REQUIRED,
                       NOT_ADDITIONAL),
            #following are additional forms
            EntryTuple(200L, u'mpepu_infant', u'infantdeath', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(201L, u'mpepu_infant', u'infantsurvival', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(210L, u'mpepu_infant', u'infantverbalautopsy',
                       NOT_REQUIRED, ADDITIONAL),
            EntryTuple(220L, u'mpepu_infant', u'infantoffdrug', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(230L, u'mpepu_infant', u'infantoffstudy', NOT_REQUIRED,
                       ADDITIONAL))
    }
    visit_definitions['2030'] = {
        'title':
        'Infant 3 Months Visit',
        'time_point':
        30,
        'base_interval':
        3,
        'base_interval_unit':
        'M',
        'window_lower_bound':
        0,
        'window_lower_bound_unit':
        'D',
        'window_upper_bound':
        0,
        'window_upper_bound_unit':
        'D',
        'grouping':
        'infant',
        'visit_tracking_model':
        InfantVisit,
        'schedule_group':
        'Infant Rando and F/Up',
        'instructions':
        None,
        'requisitions': (
            RequisitionPanelTuple(100L, u'mpepu_lab', u'infantrequisition',
                                  'Hematology (ARV)', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(200L, u'mpepu_lab', u'infantrequisition',
                                  'DNA PCR', 'TEST', 'WB', NOT_REQUIRED,
                                  ADDITIONAL),
            RequisitionPanelTuple(300L, u'mpepu_lab', u'infantrequisition',
                                  'Stool storage', 'STORAGE', 'ST',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(400L, u'mpepu_lab', u'infantrequisition',
                                  'Plasma and Buffy Coat Storage', 'STORAGE',
                                  'WB', NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(500L, u'mpepu_lab', u'infantrequisition',
                                  'ELISA', 'TEST', 'WB', NOT_REQUIRED,
                                  ADDITIONAL),
            RequisitionPanelTuple(600L, u'mpepu_lab', u'infantrequisition',
                                  'Bana 01 Chemistry', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(700L, u'mpepu_lab', u'infantrequisition',
                                  'Hepatitis B only', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(800L, u'mpepu_lab', u'infantrequisition',
                                  'HIV Western Blot', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(900L, u'mpepu_lab', u'infantrequisition',
                                  'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
        ),
        'entries': (
            EntryTuple(10L, u'mpepu_infant', u'infantarvproph', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(20L, u'mpepu_infant', u'infantnvpadherence', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(30L, u'mpepu_infant', u'infantfu', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(40L, u'mpepu_infant', u'infantfuphysical', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(50L, u'mpepu_infant', u'infantfudx', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(60L, u'mpepu_infant', u'infantfud', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(70L, u'mpepu_infant', u'infantfudx2proph', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(80L, u'mpepu_infant', u'infantfunewmed', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(90L, u'mpepu_infant', u'infantfumed', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(100L, u'mpepu_infant', u'infantstudydrug', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(110L, u'mpepu_infant', u'infantctxplaceboadh', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(120L, u'mpepu_infant', u'infantfeeding', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(130L, u'mpepu_infant', u'infantstoolcollection',
                       REQUIRED, NOT_ADDITIONAL),
            #following are additional forms
            EntryTuple(200L, u'mpepu_infant', u'infantdeath', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(201L, u'mpepu_infant', u'infantsurvival', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(210L, u'mpepu_infant', u'infantverbalautopsy',
                       NOT_REQUIRED, ADDITIONAL),
            EntryTuple(220L, u'mpepu_infant', u'infantoffdrug', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(230L, u'mpepu_infant', u'infantoffstudy', NOT_REQUIRED,
                       ADDITIONAL))
    }
    visit_definitions['2060'] = {
        'title':
        'Infant 6 Months Visit',
        'time_point':
        60,
        'base_interval':
        6,
        'base_interval_unit':
        'M',
        'window_lower_bound':
        0,
        'window_lower_bound_unit':
        'D',
        'window_upper_bound':
        0,
        'window_upper_bound_unit':
        'D',
        'grouping':
        'infant',
        'visit_tracking_model':
        InfantVisit,
        'schedule_group':
        'Infant Rando and F/Up',
        'instructions':
        None,
        'requisitions': (
            RequisitionPanelTuple(100L, u'mpepu_lab', u'infantrequisition',
                                  'Hematology (ARV)', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(200L, u'mpepu_lab', u'infantrequisition',
                                  'DNA PCR', 'TEST', 'WB', NOT_REQUIRED,
                                  ADDITIONAL),
            RequisitionPanelTuple(300L, u'mpepu_lab', u'infantrequisition',
                                  'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(400L, u'mpepu_lab', u'infantrequisition',
                                  'Stool storage', 'STORAGE', 'ST',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(500L, u'mpepu_lab', u'infantrequisition',
                                  'Plasma and Buffy Coat Storage', 'STORAGE',
                                  'WB', NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(600L, u'mpepu_lab', u'infantrequisition',
                                  'ELISA', 'TEST', 'WB', NOT_REQUIRED,
                                  ADDITIONAL),
            RequisitionPanelTuple(700L, u'mpepu_lab', u'infantrequisition',
                                  'Bana 01 Chemistry', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(800L, u'mpepu_lab', u'infantrequisition',
                                  'Hepatitis B only', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(900L, u'mpepu_lab', u'infantrequisition',
                                  'HIV Western Blot', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
        ),
        'entries': (
            EntryTuple(10L, u'mpepu_infant', u'infantarvproph', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(20L, u'mpepu_infant', u'infantnvpadherence', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(30L, u'mpepu_infant', u'infantfu', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(40L, u'mpepu_infant', u'infantfuphysical', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(50L, u'mpepu_infant', u'infantfudx', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(60L, u'mpepu_infant', u'infantfud', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(70L, u'mpepu_infant', u'infantfudx2proph', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(80L, u'mpepu_infant', u'infantfunewmed', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(90L, u'mpepu_infant', u'infantfumed', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(100L, u'mpepu_infant', u'infantstudydrug', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(110L, u'mpepu_infant', u'infantctxplaceboadh', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(120L, u'mpepu_infant', u'infantfeeding', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(130L, u'mpepu_infant', u'infantstoolcollection',
                       REQUIRED, NOT_ADDITIONAL),
            #following are additional forms
            EntryTuple(200L, u'mpepu_infant', u'infantdeath', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(201L, u'mpepu_infant', u'infantsurvival', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(210L, u'mpepu_infant', u'infantverbalautopsy',
                       NOT_REQUIRED, ADDITIONAL),
            EntryTuple(220L, u'mpepu_infant', u'infantoffdrug', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(230L, u'mpepu_infant', u'infantoffstudy', NOT_REQUIRED,
                       ADDITIONAL))
    }
    visit_definitions['2090'] = {
        'title':
        'Infant 9 Months Visit',
        'time_point':
        90,
        'base_interval':
        9,
        'base_interval_unit':
        'M',
        'window_lower_bound':
        0,
        'window_lower_bound_unit':
        'D',
        'window_upper_bound':
        0,
        'window_upper_bound_unit':
        'D',
        'grouping':
        'infant',
        'visit_tracking_model':
        InfantVisit,
        'schedule_group':
        'Infant Rando and F/Up',
        'instructions':
        None,
        'requisitions': (
            RequisitionPanelTuple(100L, u'mpepu_lab', u'infantrequisition',
                                  'DNA PCR', 'TEST', 'WB', NOT_REQUIRED,
                                  ADDITIONAL),
            RequisitionPanelTuple(200L, u'mpepu_lab', u'infantrequisition',
                                  'Plasma and Buffy Coat Storage', 'STORAGE',
                                  'WB', NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(300L, u'mpepu_lab', u'infantrequisition',
                                  'Hematology (ARV)', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(400L, u'mpepu_lab', u'infantrequisition',
                                  'ELISA', 'TEST', 'WB', NOT_REQUIRED,
                                  ADDITIONAL),
            RequisitionPanelTuple(500L, u'mpepu_lab', u'infantrequisition',
                                  'Bana 01 Chemistry', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(600L, u'mpepu_lab', u'infantrequisition',
                                  'Hepatitis B only', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(700L, u'mpepu_lab', u'infantrequisition',
                                  'HIV Western Blot', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(800L, u'mpepu_lab', u'infantrequisition',
                                  'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
        ),
        'entries': (
            EntryTuple(10L, u'mpepu_infant', u'infantarvproph', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(20L, u'mpepu_infant', u'infantnvpadherence', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(30L, u'mpepu_infant', u'infantfu', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(40L, u'mpepu_infant', u'infantfuphysical', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(50L, u'mpepu_infant', u'infantfudx', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(60L, u'mpepu_infant', u'infantfud', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(70L, u'mpepu_infant', u'infantfudx2proph', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(80L, u'mpepu_infant', u'infantfunewmed', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(90L, u'mpepu_infant', u'infantfumed', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(100L, u'mpepu_infant', u'infantstudydrug', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(110L, u'mpepu_infant', u'infantctxplaceboadh', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(120L, u'mpepu_infant', u'infantfeeding', REQUIRED,
                       NOT_ADDITIONAL),
            #following are additional forms
            EntryTuple(200L, u'mpepu_infant', u'infantdeath', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(201L, u'mpepu_infant', u'infantsurvival', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(210L, u'mpepu_infant', u'infantverbalautopsy',
                       NOT_REQUIRED, ADDITIONAL),
            EntryTuple(220L, u'mpepu_infant', u'infantoffdrug', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(230L, u'mpepu_infant', u'infantoffstudy', NOT_REQUIRED,
                       ADDITIONAL))
    }
    visit_definitions['2120'] = {
        'title':
        'Infant 12 Months Visit',
        'time_point':
        120,
        'base_interval':
        12,
        'base_interval_unit':
        'M',
        'window_lower_bound':
        0,
        'window_lower_bound_unit':
        'D',
        'window_upper_bound':
        0,
        'window_upper_bound_unit':
        'D',
        'grouping':
        'infant',
        'visit_tracking_model':
        InfantVisit,
        'schedule_group':
        'Infant Rando and F/Up',
        'instructions':
        None,
        'requisitions': (
            RequisitionPanelTuple(100L, u'mpepu_lab', u'infantrequisition',
                                  'DNA PCR', 'TEST', 'WB', NOT_REQUIRED,
                                  ADDITIONAL),
            RequisitionPanelTuple(200L, u'mpepu_lab', u'infantrequisition',
                                  'Plasma and Buffy Coat Storage', 'STORAGE',
                                  'WB', NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(300L, u'mpepu_lab', u'infantrequisition',
                                  'Hematology (ARV)', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(400L, u'mpepu_lab', u'infantrequisition',
                                  'ELISA', 'TEST', 'WB', NOT_REQUIRED,
                                  ADDITIONAL),
            RequisitionPanelTuple(500L, u'mpepu_lab', u'infantrequisition',
                                  'Bana 01 Chemistry', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(600L, u'mpepu_lab', u'infantrequisition',
                                  'Hepatitis B only', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(700L, u'mpepu_lab', u'infantrequisition',
                                  'HIV Western Blot', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(800L, u'mpepu_lab', u'infantrequisition',
                                  'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
        ),
        'entries': (
            EntryTuple(10L, u'mpepu_infant', u'infantarvproph', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(20L, u'mpepu_infant', u'infantnvpadherence', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(30L, u'mpepu_infant', u'infantfu', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(40L, u'mpepu_infant', u'infantfuphysical', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(50L, u'mpepu_infant', u'infantfudx', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(60L, u'mpepu_infant', u'infantfud', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(70L, u'mpepu_infant', u'infantfudx2proph', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(80L, u'mpepu_infant', u'infantfunewmed', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(90L, u'mpepu_infant', u'infantfumed', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(100L, u'mpepu_infant', u'infantstudydrug', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(110L, u'mpepu_infant', u'infantctxplaceboadh', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(120L, u'mpepu_infant', u'infantfeeding', REQUIRED,
                       NOT_ADDITIONAL),
            #following are additional forms
            EntryTuple(200L, u'mpepu_infant', u'infantdeath', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(201L, u'mpepu_infant', u'infantsurvival', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(210L, u'mpepu_infant', u'infantverbalautopsy',
                       NOT_REQUIRED, ADDITIONAL),
            EntryTuple(220L, u'mpepu_infant', u'infantoffdrug', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(230L, u'mpepu_infant', u'infantoffstudy', NOT_REQUIRED,
                       ADDITIONAL))
    }
    visit_definitions['2150'] = {
        'title':
        'Infant 15 Months Visit',
        'time_point':
        150,
        'base_interval':
        15,
        'base_interval_unit':
        'M',
        'window_lower_bound':
        0,
        'window_lower_bound_unit':
        'D',
        'window_upper_bound':
        0,
        'window_upper_bound_unit':
        'D',
        'grouping':
        'infant',
        'visit_tracking_model':
        InfantVisit,
        'schedule_group':
        'Infant Rando and F/Up',
        'instructions':
        None,
        'requisitions': (
            RequisitionPanelTuple(100L, u'mpepu_lab', u'infantrequisition',
                                  'Hematology (ARV)', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(200L, u'mpepu_lab', u'infantrequisition',
                                  'DNA PCR', 'TEST', 'WB', NOT_REQUIRED,
                                  ADDITIONAL),
            RequisitionPanelTuple(300L, u'mpepu_lab', u'infantrequisition',
                                  'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(400L, u'mpepu_lab', u'infantrequisition',
                                  'Plasma and Buffy Coat Storage', 'STORAGE',
                                  'WB', NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(500L, u'mpepu_lab', u'infantrequisition',
                                  'ELISA', 'TEST', 'WB', NOT_REQUIRED,
                                  ADDITIONAL),
            RequisitionPanelTuple(600L, u'mpepu_lab', u'infantrequisition',
                                  'Bana 01 Chemistry', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(700L, u'mpepu_lab', u'infantrequisition',
                                  'Hepatitis B only', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(800L, u'mpepu_lab', u'infantrequisition',
                                  'HIV Western Blot', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
        ),
        'entries': (
            EntryTuple(10L, u'mpepu_infant', u'infantarvproph', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(20L, u'mpepu_infant', u'infantnvpadherence', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(30L, u'mpepu_infant', u'infantfu', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(40L, u'mpepu_infant', u'infantfuphysical', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(50L, u'mpepu_infant', u'infantfudx', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(60L, u'mpepu_infant', u'infantfud', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(70L, u'mpepu_infant', u'infantfudx2proph', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(80L, u'mpepu_infant', u'infantfunewmed', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(90L, u'mpepu_infant', u'infantfumed', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(100L, u'mpepu_infant', u'infantstudydrug', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(110L, u'mpepu_infant', u'infantctxplaceboadh', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(120L, u'mpepu_infant', u'infantfeeding', REQUIRED,
                       NOT_ADDITIONAL),
            #following are additional forms
            EntryTuple(200L, u'mpepu_infant', u'infantdeath', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(201L, u'mpepu_infant', u'infantsurvival', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(210L, u'mpepu_infant', u'infantverbalautopsy',
                       NOT_REQUIRED, ADDITIONAL),
            EntryTuple(220L, u'mpepu_infant', u'infantoffdrug', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(230L, u'mpepu_infant', u'infantoffstudy', NOT_REQUIRED,
                       ADDITIONAL))
    }
    visit_definitions['2180'] = {
        'title':
        'Infant18 Months Visit',
        'time_point':
        180,
        'base_interval':
        18,
        'base_interval_unit':
        'M',
        'window_lower_bound':
        0,
        'window_lower_bound_unit':
        'D',
        'window_upper_bound':
        0,
        'window_upper_bound_unit':
        'D',
        'grouping':
        'infant',
        'visit_tracking_model':
        InfantVisit,
        'schedule_group':
        'Infant Rando and F/Up',
        'instructions':
        None,
        'requisitions': (
            RequisitionPanelTuple(100L, u'mpepu_lab', u'infantrequisition',
                                  'PBMC Plasma (STORE ONLY)', 'STORAGE', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(200L, u'mpepu_lab', u'infantrequisition',
                                  'ELISA', 'TEST', 'WB', NOT_REQUIRED,
                                  ADDITIONAL),
            RequisitionPanelTuple(300L, u'mpepu_lab', u'infantrequisition',
                                  'Stool storage', 'STORAGE', 'ST',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(400L, u'mpepu_lab', u'infantrequisition',
                                  'DNA PCR', 'TEST', 'WB', NOT_REQUIRED,
                                  ADDITIONAL),
            RequisitionPanelTuple(500L, u'mpepu_lab', u'infantrequisition',
                                  'Plasma and Buffy Coat Storage', 'STORAGE',
                                  'WB', NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(600L, u'mpepu_lab', u'infantrequisition',
                                  'Hematology (ARV)', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(700L, u'mpepu_lab', u'infantrequisition',
                                  'Bana 01 Chemistry', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(800L, u'mpepu_lab', u'infantrequisition',
                                  'Hepatitis B only', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
            RequisitionPanelTuple(900L, u'mpepu_lab', u'infantrequisition',
                                  'HIV Western Blot', 'TEST', 'WB',
                                  NOT_REQUIRED, ADDITIONAL),
        ),
        'entries': (
            EntryTuple(10L, u'mpepu_infant', u'infantfu', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(20L, u'mpepu_infant', u'infantfuphysical', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(30L, u'mpepu_infant', u'infantfudx', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(40L, u'mpepu_infant', u'infantfud', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(50L, u'mpepu_infant', u'infantfudx2proph', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(60L, u'mpepu_infant', u'infantfunewmed', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(70L, u'mpepu_infant', u'infantfumed', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(80L, u'mpepu_infant', u'infantstudydrug', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(90L, u'mpepu_infant', u'infantctxplaceboadh', REQUIRED,
                       NOT_ADDITIONAL),
            EntryTuple(100L, u'mpepu_infant', u'infantstoolcollection',
                       REQUIRED, NOT_ADDITIONAL),
            #following are additional forms
            EntryTuple(200L, u'mpepu_infant', u'infantdeath', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(201L, u'mpepu_infant', u'infantsurvival', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(210L, u'mpepu_infant', u'infantverbalautopsy',
                       NOT_REQUIRED, ADDITIONAL),
            EntryTuple(220L, u'mpepu_infant', u'infantoffdrug', NOT_REQUIRED,
                       ADDITIONAL),
            EntryTuple(230L, u'mpepu_infant', u'infantoffstudy', REQUIRED,
                       NOT_ADDITIONAL),
        )
    }
Exemplo n.º 6
0
class BcppSubjectVisitSchedule(VisitScheduleConfiguration):

    name = 'bcpp subject visit schedule'
    app_label = 'bcpp_subject'

    # membership forms
    # (name, model, visible)
    membership_forms = OrderedDict({
        'bcpp-survey':
        MembershipFormTuple('bcpp-survey', SubjectConsent, True),
    })

    # schedule groups
    # (name, membership_form_name, grouping_key, comment)
    schedule_groups = OrderedDict({
        'group-1':
        ScheduleGroupTuple('group-1', 'bcpp-survey', None, None),
    })

    # visit_schedule
    # see edc.subject.visit_schedule.models.visit_defintion
    visit_definitions = OrderedDict({
        'T0': {
            'title':
            'Baseline Household Survey',
            'time_point':
            0,
            'base_interval':
            0,
            'base_interval_unit':
            'D',
            'window_lower_bound':
            0,
            'window_lower_bound_unit':
            'D',
            'window_upper_bound':
            0,
            'window_upper_bound_unit':
            'D',
            'grouping':
            None,
            'visit_tracking_model':
            get_model('bcpp_subject', 'SubjectVisit'),
            'schedule_group':
            'group-1',
            'instructions':
            None,
            'requisitions': (
                # (entry_order app_label model_name requisition_panel_name panel_type aliquot_type_alpha_code
                #   default_entry_status additional)
                RequisitionPanelTuple(10L, u'bcpp_lab', u'subjectrequisition',
                                      'Research Blood Draw', 'TEST', 'WB',
                                      NOT_REQUIRED, NOT_ADDITIONAL),
                RequisitionPanelTuple(20L, u'bcpp_lab', u'subjectrequisition',
                                      'Viral Load', 'TEST', 'WB', NOT_REQUIRED,
                                      NOT_ADDITIONAL),
                RequisitionPanelTuple(30L, u'bcpp_lab', u'subjectrequisition',
                                      'Microtube', 'STORAGE', 'WB', REQUIRED,
                                      NOT_ADDITIONAL),
                RequisitionPanelTuple(30L, u'bcpp_lab', u'subjectrequisition',
                                      'Venous (HIV)', 'TEST', 'WB',
                                      NOT_REQUIRED, NOT_ADDITIONAL),
                RequisitionPanelTuple(30L, u'bcpp_lab', u'subjectrequisition',
                                      'ELISA', 'TEST', 'WB', NOT_REQUIRED,
                                      NOT_ADDITIONAL)),
            'entries': [
                #  order app_label model_name default_entry_status additional
                EntryTuple(10L, u'bcpp_subject', u'subjectlocator', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(20L, u'bcpp_subject', u'residencymobility',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(30L, u'bcpp_subject', u'communityengagement',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(40L, u'bcpp_subject', u'demographics', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(50L, u'bcpp_subject', u'education', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(60L, u'bcpp_subject', u'hivtestinghistory',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(70L, u'bcpp_subject', u'hivtestreview', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(80L, u'bcpp_subject', u'hivresultdocumentation',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(90L, u'bcpp_subject', u'hivtested', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(100L, u'bcpp_subject', u'hivuntested', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(120L, u'bcpp_subject', u'sexualbehaviour', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(130L, u'bcpp_subject', u'monthsrecentpartner',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(140L, u'bcpp_subject', u'monthssecondpartner',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(150L, u'bcpp_subject', u'monthsthirdpartner',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(160L, u'bcpp_subject', u'hivcareadherence',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(170L, u'bcpp_subject', u'hivmedicalcare', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(180L, u'bcpp_subject', u'circumcision', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(190L, u'bcpp_subject', u'circumcised', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(200L, u'bcpp_subject', u'uncircumcised', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(210L, u'bcpp_subject', u'reproductivehealth',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(220L, u'bcpp_subject', u'pregnancy', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(230L, u'bcpp_subject', u'nonpregnancy', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(240L, u'bcpp_subject', u'medicaldiagnoses',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(250L, u'bcpp_subject', u'heartattack', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(260L, u'bcpp_subject', u'cancer', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(270L, u'bcpp_subject', u'sti', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(280L, u'bcpp_subject', u'tubercolosis', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(290L, u'bcpp_subject', u'tbsymptoms', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(300L, u'bcpp_subject', u'substanceuse', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(320L, u'bcpp_subject', u'stigma', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(330L, u'bcpp_subject', u'stigmaopinion', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(340L, u'bcpp_subject', u'positiveparticipant',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(350L, u'bcpp_subject', u'accesstocare', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(360L, u'bcpp_subject', u'hivlinkagetocare',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(370L, u'bcpp_subject', u'hivresult', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(380L, u'bcpp_subject', u'elisahivresult',
                           NOT_REQUIRED, ADDITIONAL),
                EntryTuple(390L, u'bcpp_subject', u'pima', NOT_REQUIRED,
                           ADDITIONAL),
                EntryTuple(400L, u'bcpp_subject', u'subjectreferral', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(410L, u'bcpp_subject', u'hicenrollment',
                           NOT_REQUIRED, ADDITIONAL),
            ]
        },
        'T1': {
            'title':
            'T1 Annual Household Survey',
            'time_point':
            1,
            'base_interval':
            0,
            'base_interval_unit':
            'D',
            'window_lower_bound':
            0,
            'window_lower_bound_unit':
            'D',
            'window_upper_bound':
            0,
            'window_upper_bound_unit':
            'D',
            'grouping':
            None,
            'visit_tracking_model':
            get_model('bcpp_subject', 'SubjectVisit'),
            'schedule_group':
            'group-1',
            'instructions':
            None,
            'requisitions': (
                # (entry_order app_label model_name requisition_panel_name panel_type aliquot_type_alpha_code
                #   default_entry_status additional)
                RequisitionPanelTuple(10L, u'bcpp_lab', u'subjectrequisition',
                                      'Research Blood Draw', 'TEST', 'WB',
                                      NOT_REQUIRED, NOT_ADDITIONAL),
                RequisitionPanelTuple(20L, u'bcpp_lab', u'subjectrequisition',
                                      'Viral Load', 'TEST', 'WB', NOT_REQUIRED,
                                      NOT_ADDITIONAL),
                RequisitionPanelTuple(30L, u'bcpp_lab', u'subjectrequisition',
                                      'Microtube', 'STORAGE', 'WB', REQUIRED,
                                      NOT_ADDITIONAL),
                RequisitionPanelTuple(30L, u'bcpp_lab', u'subjectrequisition',
                                      'Venous (HIV)', 'TEST', 'WB',
                                      NOT_REQUIRED, NOT_ADDITIONAL),
                RequisitionPanelTuple(30L, u'bcpp_lab', u'subjectrequisition',
                                      'ELISA', 'TEST', 'WB', NOT_REQUIRED,
                                      NOT_ADDITIONAL)),
            'entries': [
                #  order app_label model_name default_entry_status additional
                EntryTuple(10L, u'bcpp_subject', u'residencymobility',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(20L, u'bcpp_subject', u'demographics', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(30L, u'bcpp_subject', u'education', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(40L, u'bcpp_subject', u'hivtestinghistory',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(50L, u'bcpp_subject', u'hivtestreview', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(60L, u'bcpp_subject', u'hivresultdocumentation',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(70L, u'bcpp_subject', u'hivtested', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(80L, u'bcpp_subject', u'hivuntested', NOT_REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(90L, u'bcpp_subject', u'sexualbehaviour', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(100L, u'bcpp_subject', u'monthsrecentpartner',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(110L, u'bcpp_subject', u'monthssecondpartner',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(120L, u'bcpp_subject', u'monthsthirdpartner',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(130L, u'bcpp_subject', u'hivcareadherence',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(140L, u'bcpp_subject', u'hivmedicalcare', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(150L, u'bcpp_subject', u'circumcision', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(160L, u'bcpp_subject', u'circumcised', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(170L, u'bcpp_subject', u'uncircumcised', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(180L, u'bcpp_subject', u'reproductivehealth',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(190L, u'bcpp_subject', u'pregnancy', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(200L, u'bcpp_subject', u'nonpregnancy', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(210L, u'bcpp_subject', u'medicaldiagnoses',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(220L, u'bcpp_subject', u'heartattack', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(230L, u'bcpp_subject', u'cancer', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(240L, u'bcpp_subject', u'sti', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(250L, u'bcpp_subject', u'tubercolosis', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(260L, u'bcpp_subject', u'tbsymptoms', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(270L, u'bcpp_subject', u'qualityoflife', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(280L, u'bcpp_subject', u'resourceutilization',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(290L, u'bcpp_subject', u'outpatientcare', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(300L, u'bcpp_subject', u'hospitaladmission',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(310L, u'bcpp_subject', u'hivhealthcarecosts',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(320L, u'bcpp_subject', u'labourmarketwages',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(330L, u'bcpp_subject', u'hivlinkagetocare',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(340L, u'bcpp_subject', u'hivresult', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(350L, u'bcpp_subject', u'elisahivresult',
                           NOT_REQUIRED, ADDITIONAL),
                EntryTuple(360L, u'bcpp_subject', u'pima', NOT_REQUIRED,
                           ADDITIONAL),
                EntryTuple(370L, u'bcpp_subject', u'subjectreferral', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(380L, u'bcpp_subject', u'hicenrollment',
                           NOT_REQUIRED, ADDITIONAL),
            ]
        },
        'T2': {
            'title':
            'T2 Annual Household Survey',
            'time_point':
            2,
            'base_interval':
            0,
            'base_interval_unit':
            'D',
            'window_lower_bound':
            0,
            'window_lower_bound_unit':
            'D',
            'window_upper_bound':
            0,
            'window_upper_bound_unit':
            'D',
            'grouping':
            None,
            'visit_tracking_model':
            get_model('bcpp_subject', 'SubjectVisit'),
            'schedule_group':
            'group-1',
            'instructions':
            None,
            'requisitions': (
                # (entry_order app_label model_name requisition_panel_name panel_type aliquot_type_alpha_code
                #   default_entry_status additional)
                RequisitionPanelTuple(10L, u'bcpp_lab', u'subjectrequisition',
                                      'Research Blood Draw', 'TEST', 'WB',
                                      NOT_REQUIRED, NOT_ADDITIONAL),
                RequisitionPanelTuple(20L, u'bcpp_lab', u'subjectrequisition',
                                      'Viral Load', 'TEST', 'WB', NOT_REQUIRED,
                                      NOT_ADDITIONAL),
                RequisitionPanelTuple(30L, u'bcpp_lab', u'subjectrequisition',
                                      'Microtube', 'STORAGE', 'WB', REQUIRED,
                                      NOT_ADDITIONAL),
                RequisitionPanelTuple(30L, u'bcpp_lab', u'subjectrequisition',
                                      'Venous (HIV)', 'TEST', 'WB',
                                      NOT_REQUIRED, NOT_ADDITIONAL),
                RequisitionPanelTuple(30L, u'bcpp_lab', u'subjectrequisition',
                                      'ELISA', 'TEST', 'WB', NOT_REQUIRED,
                                      NOT_ADDITIONAL)),
            'entries': [
                #  order app_label model_name default_entry_status additional
                EntryTuple(10L, u'bcpp_subject', u'residencymobility',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(20L, u'bcpp_subject', u'demographics', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(30L, u'bcpp_subject', u'education', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(40L, u'bcpp_subject', u'hivtestinghistory',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(50L, u'bcpp_subject', u'hivtestreview', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(60L, u'bcpp_subject', u'hivresultdocumentation',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(70L, u'bcpp_subject', u'hivtested', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(80L, u'bcpp_subject', u'hivuntested', NOT_REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(90L, u'bcpp_subject', u'sexualbehaviour', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(100L, u'bcpp_subject', u'monthsrecentpartner',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(110L, u'bcpp_subject', u'monthssecondpartner',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(120L, u'bcpp_subject', u'monthsthirdpartner',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(130L, u'bcpp_subject', u'hivcareadherence',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(140L, u'bcpp_subject', u'hivmedicalcare', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(150L, u'bcpp_subject', u'circumcision', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(160L, u'bcpp_subject', u'circumcised', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(170L, u'bcpp_subject', u'uncircumcised', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(180L, u'bcpp_subject', u'reproductivehealth',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(190L, u'bcpp_subject', u'pregnancy', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(200L, u'bcpp_subject', u'nonpregnancy', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(210L, u'bcpp_subject', u'medicaldiagnoses',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(220L, u'bcpp_subject', u'heartattack', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(230L, u'bcpp_subject', u'cancer', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(270L, u'bcpp_subject', u'qualityoflife', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(280L, u'bcpp_subject', u'resourceutilization',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(290L, u'bcpp_subject', u'outpatientcare', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(300L, u'bcpp_subject', u'hospitaladmission',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(310L, u'bcpp_subject', u'hivhealthcarecosts',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(320L, u'bcpp_subject', u'labourmarketwages',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(240L, u'bcpp_subject', u'sti', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(250L, u'bcpp_subject', u'tubercolosis', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(260L, u'bcpp_subject', u'tbsymptoms', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(370L, u'bcpp_subject', u'hivlinkagetocare',
                           REQUIRED, NOT_ADDITIONAL),
                EntryTuple(280L, u'bcpp_subject', u'hivresult', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(290L, u'bcpp_subject', u'elisahivresult',
                           NOT_REQUIRED, ADDITIONAL),
                EntryTuple(300L, u'bcpp_subject', u'pima', NOT_REQUIRED,
                           ADDITIONAL),
                EntryTuple(310L, u'bcpp_subject', u'subjectreferral', REQUIRED,
                           NOT_ADDITIONAL),
                EntryTuple(320L, u'bcpp_subject', u'hicenrollment',
                           NOT_REQUIRED, ADDITIONAL),
            ]
        }
    })