Health economics model, form mixins for clinicedc / Django
Declare in settings if using concrete models not included in this app:
EDC_HE_ASSETS_MODEL = "<label_lower>" EDC_HE_HOUSEHOLDHEAD_MODEL = "<label_lower>" EDC_HE_INCOME_MODEL = "<label_lower>" EDC_HE_PATIENT_MODEL = "<label_lower>" EDC_HE_PROPERTY_MODEL = "<label_lower>"
See also module intecomm_subject
at https://github.com/intecomm-trial/intecomm-edc.
If you need to declare the Health Economics models in your app, use the provided model mixins.
For example, the HealthEconomicsHouseholdHead
model would be declared like this:
# models.py
class HealthEconomicsHouseholdHead(
SingletonCrfModelMixin,
HouseholdHeadModelMixin,
HouseholdModelMixin,
CrfModelMixin,
BaseUuidModel,
):
class Meta(CrfModelMixin.Meta, BaseUuidModel.Meta):
verbose_name = "Health Economics: Household head"
verbose_name_plural = "Health Economics: Household head"
# forms.py
class HealthEconomicsHouseholdHeadForm(
CrfSingletonModelFormMixin, CrfModelFormMixin, forms.ModelForm
):
form_validator_cls = HealthEconomicsHouseholdHeadFormValidator
def clean(self):
self.raise_if_singleton_exists()
raise_if_clinical_review_does_not_exist(self.cleaned_data.get("subject_visit"))
return super().clean()
# admin.py
@admin.register(HealthEconomicsHouseholdHead, site=intecomm_subject_admin)
class HealthEconomicsHouseholdHeadAdmin(
HealthEconomicsHouseholdHeadModelAdminMixin, CrfModelAdmin
):
form = HealthEconomicsHouseholdHeadForm
The metadata rules may also be declared locally
# metadata_rules.py
from edc_he.rule_groups import Predicates as BaseHealthEconomicsPredicates
from edc_he.rule_groups import HealthEconomicsRuleGroup as BaseHealthEconomicsRuleGroup
class HealthEconomicsPredicates(BaseHealthEconomicsPredicates):
app_label = "intecomm_subject"
visit_model = "intecomm_subject.subjectvisit"
@register()
class HealthEconomicsRuleGroup(BaseHealthEconomicsRuleGroup):
class Meta:
app_label = "intecomm_subject"
source_model = "intecomm_subject.subjectvisit"
predicates = HealthEconomicsPredicates()