Base classes for visit reports/tracking in clinicedc/edc.
Project description
|pypi| |travis| |coverage|
edc-visit-tracking
------------------
Track study participant visit reports.
Declaring a visit model
+++++++++++++++++++++++
A **visit_model** is declared using the model mixin `VisitModelMixin`. Normally, a **visit_model** will be declared with additional model mixins, but `VisitModelMixin` must be there.
.. code-block:: python
class SubjectVisit(VisitModelMixin, BaseUuidModel):
...
Also, ensure the `Meta` class attributes of `VisitModelMixin` are inherited. These include required constraints and ordering.
.. code-block:: python
class SubjectVisit(VisitModelMixin, BaseUuidModel):
...
class Meta(VisitModelMixin.Meta):
pass
Among other features, `VisitModelMixin` adds a `OneToOneField` foreign key to the **visit_model** that points to `edc_appointment.Appointment`.
Important: A **visit model** is a special model in the EDC. A model declared with the model mixin, `VisitModelMixin`, is the definition of a **visit model**. CRFs and Requisitions have a foreign key pointing to a **visit model**. A number of methods on CRFs and Requisitions detect their **visit model** foreign key name, model class and value by looking for the FK declared with `VisitModelMixin`.
For a subject that requires ICF the **visit model** would look like this:
.. code-block:: python
class SubjectVisit(VisitModelMixin, OffstudyMixin, CreatesMetadataModelMixin,
RequiresConsentModelMixin, BaseUuidModel):
class Meta(VisitModelMixin.Meta):
consent_model = 'myapp.subjectconsent' # for RequiresConsentModelMixin
If the subject does not require ICF, such as an infant, don't include the `RequiresConsentModelMixin`:
.. code-block:: python
class InfantVisit(VisitModelMixin, OffstudyMixin,
CreatesMetadataModelMixin, BaseUuidModel):
class Meta(VisitModelMixin.Meta):
pass
Declaring a CRF
+++++++++++++++
The `CrfModelMixin` is required for all CRF models. CRF models have a `OneToOneField` key to a **visit model**.
.. code-block:: python
class CrfOne(CrfModelMixin, OffstudyCrfModelMixin, RequiresConsentModelMixin,
UpdatesCrfMetadataModelMixin, BaseUuidModel):
subject_visit = models.OneToOneField(SubjectVisit)
f1 = models.CharField(max_length=10, default='erik')
vl = models.CharField(max_length=10, default=NO)
rdb = models.CharField(max_length=10, default=NO)
class Meta:
consent_model = 'myapp.subjectconsent' # for RequiresConsentModelMixin
Declaring forms:
+++++++++++++++
The `VisitFormMixin` includes a number of common validations in the `clean` method:
.. code-block:: python
class SubjectVisitForm(VisitFormMixin, forms.ModelForm):
class Meta:
model = SubjectVisit
`PreviousVisitModelMixin`
++++++++++++++++++++++++
The `PreviousVisitModelMixin` ensures that visits are entered in sequence. It is included with the `VisitModelMixin`.
.. |pypi| image:: https://img.shields.io/pypi/v/edc-visit-tracking.svg
:target: https://pypi.python.org/pypi/edc-visit-tracking
.. |travis| image:: https://travis-ci.org/clinicedc/edc-visit-tracking.svg?branch=develop
:target: https://travis-ci.org/clinicedc/edc-visit-tracking
.. |coverage| image:: https://coveralls.io/repos/github/clinicedc/edc-visit-tracking/badge.svg?branch=develop
:target: https://coveralls.io/github/clinicedc/edc-visit-tracking?branch=develop
edc-visit-tracking
------------------
Track study participant visit reports.
Declaring a visit model
+++++++++++++++++++++++
A **visit_model** is declared using the model mixin `VisitModelMixin`. Normally, a **visit_model** will be declared with additional model mixins, but `VisitModelMixin` must be there.
.. code-block:: python
class SubjectVisit(VisitModelMixin, BaseUuidModel):
...
Also, ensure the `Meta` class attributes of `VisitModelMixin` are inherited. These include required constraints and ordering.
.. code-block:: python
class SubjectVisit(VisitModelMixin, BaseUuidModel):
...
class Meta(VisitModelMixin.Meta):
pass
Among other features, `VisitModelMixin` adds a `OneToOneField` foreign key to the **visit_model** that points to `edc_appointment.Appointment`.
Important: A **visit model** is a special model in the EDC. A model declared with the model mixin, `VisitModelMixin`, is the definition of a **visit model**. CRFs and Requisitions have a foreign key pointing to a **visit model**. A number of methods on CRFs and Requisitions detect their **visit model** foreign key name, model class and value by looking for the FK declared with `VisitModelMixin`.
For a subject that requires ICF the **visit model** would look like this:
.. code-block:: python
class SubjectVisit(VisitModelMixin, OffstudyMixin, CreatesMetadataModelMixin,
RequiresConsentModelMixin, BaseUuidModel):
class Meta(VisitModelMixin.Meta):
consent_model = 'myapp.subjectconsent' # for RequiresConsentModelMixin
If the subject does not require ICF, such as an infant, don't include the `RequiresConsentModelMixin`:
.. code-block:: python
class InfantVisit(VisitModelMixin, OffstudyMixin,
CreatesMetadataModelMixin, BaseUuidModel):
class Meta(VisitModelMixin.Meta):
pass
Declaring a CRF
+++++++++++++++
The `CrfModelMixin` is required for all CRF models. CRF models have a `OneToOneField` key to a **visit model**.
.. code-block:: python
class CrfOne(CrfModelMixin, OffstudyCrfModelMixin, RequiresConsentModelMixin,
UpdatesCrfMetadataModelMixin, BaseUuidModel):
subject_visit = models.OneToOneField(SubjectVisit)
f1 = models.CharField(max_length=10, default='erik')
vl = models.CharField(max_length=10, default=NO)
rdb = models.CharField(max_length=10, default=NO)
class Meta:
consent_model = 'myapp.subjectconsent' # for RequiresConsentModelMixin
Declaring forms:
+++++++++++++++
The `VisitFormMixin` includes a number of common validations in the `clean` method:
.. code-block:: python
class SubjectVisitForm(VisitFormMixin, forms.ModelForm):
class Meta:
model = SubjectVisit
`PreviousVisitModelMixin`
++++++++++++++++++++++++
The `PreviousVisitModelMixin` ensures that visits are entered in sequence. It is included with the `VisitModelMixin`.
.. |pypi| image:: https://img.shields.io/pypi/v/edc-visit-tracking.svg
:target: https://pypi.python.org/pypi/edc-visit-tracking
.. |travis| image:: https://travis-ci.org/clinicedc/edc-visit-tracking.svg?branch=develop
:target: https://travis-ci.org/clinicedc/edc-visit-tracking
.. |coverage| image:: https://coveralls.io/repos/github/clinicedc/edc-visit-tracking/badge.svg?branch=develop
:target: https://coveralls.io/github/clinicedc/edc-visit-tracking?branch=develop
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-visit-tracking-0.2.18.macosx-10.13-x86_64.tar.gz
.
File metadata
- Download URL: edc-visit-tracking-0.2.18.macosx-10.13-x86_64.tar.gz
- Upload date:
- Size: 50.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 076cd7a811aae3cc8b6177b1bc1c8a3dcee99a87a24ff83821c91ee402c5d199 |
|
MD5 | 2db116cd819c8774aeb68e17f56e19ce |
|
BLAKE2b-256 | 24987e0de812399c25985c5c98446d64aa916b018fe6b0eb731202c7ce86fc27 |
File details
Details for the file edc_visit_tracking-0.2.18-py3-none-any.whl
.
File metadata
- Download URL: edc_visit_tracking-0.2.18-py3-none-any.whl
- Upload date:
- Size: 32.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b413c430196fb43bde0db6d2d5b0fff8f3559009061453355ba03ec8849c6c70 |
|
MD5 | cc1dd3207c8b53624654fb3ce29aca24 |
|
BLAKE2b-256 | 8623899264a56aa7bd4ef34b26d2837dd37d6c9809415df3ec424f7551aaabec |