Base classes for CRFs in clinicedc/edc projects
Project description
edc_crf
In longitudinal clinical trials, CRFs (case report forms) are the most common data collection forms required in the data collection schedule.
In addition to the logic checks that you will add for a specfic CRF, you also need to validate a few general conditions. Most of these conditions are checked relative to the report_datetime of the CRF data being submitted. Some examples are:
that a participant is consented and that their consent is still valid on the report_datetime;
that the CRF report_datetime makes sense relative to the covering visit report report_datetime;
that the participant is enrolled to the schedule (onschedule) on or after the report_datetime and has not been taken off the schedule (offschedule) on or before the report_datetime;
that the participant has not been taken off study on or before the report_datetime.
CRF forms
The CrfModelFormMixin is used for all CRF modelforms. With this single mixin the form:
Checks for the consent relative to report datetime and this schedule (edc_consent);
checks if participant is on/off schedule relative to report datetime and this schedule (edc_visit_schedule);
validates subject_visit report datetime (edc_visit_tracking);
checks if participant is offstudy relative to report datetime (edc_offstudy).
If any of the above conditions fail, a forms.ValidationError is raised.
The mixin imports mixins functionality from edc_consent, edc_visit_schedule, edc_visit_tracking, and edc_offstudy.
from django import forms
from edc_crf.modelform_mixins import CrfModelFormMixin
from edc_form_validators import FormValidator
from ..models import FollowupVitals
class MyCrfFormValidator(FormValidator):
pass
class MyCrfForm(CrfModelFormMixin, forms.ModelForm):
form_validator_cls = MyCrfFormValidator
class Meta:
model = MyCrf
fields = "__all__"
CRF models
Similar to the CrfModelFormMixin, the CrfModelMixin is used for all CRF models and checks for the same conditions. However, if any of the conditions is met, an exception is raised. You should render CRF models with a modelform class using the CRFModelFormMixin to catch these exceptions on the form where the user can respond.
class MyCrf(CrfModelMixin, BaseUuidModel):
weight_determination = models.CharField(
verbose_name="Is weight estimated or measured?",
max_length=15,
choices=WEIGHT_DETERMINATION,
)
class Meta(CrfModelMixin.Meta, BaseUuidModel.Meta):
verbose_name = "My CRF"
verbose_name_plural = "My CRFs"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file edc-crf-0.3.40.tar.gz
.
File metadata
- Download URL: edc-crf-0.3.40.tar.gz
- Upload date:
- Size: 38.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9eeb5009fb3c6ed64d31fd7e27bb7cb66da76bf2e54661f0c427a737ac280364 |
|
MD5 | 515a8eb683be4eace44659cea817cfde |
|
BLAKE2b-256 | cd678cffa84e69df03c4bfe04bc92c2ce082b2eb37e96d3540322647872e8452 |
File details
Details for the file edc_crf-0.3.40-py3-none-any.whl
.
File metadata
- Download URL: edc_crf-0.3.40-py3-none-any.whl
- Upload date:
- Size: 40.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 540c86200f57efe8a4321bc72ed36d3847ca264e498f3393e2a9809460b204de |
|
MD5 | a34232203d7437f4debb2a5e73a3c7a3 |
|
BLAKE2b-256 | b520ea6859dbb8966cc69ada29cbca7cdf325e1ac77c4cd946b6241781c06e6c |