Pivoted reference model for clinicedc/edc modules
Project description
|pypi| |travis| |coverage|
edc-reference
-------------
Pivoted reference table for EDC modules
``edc_reference`` creates a pivoted table of CRF and Requisition records with a small subset of values that can be efficiently referenced. The module is used by ``edc_metadata_rules`` to quickly determine if a CRF or Requisition model instance exists avoiding the need to query each individual model class.
See also ``edc_metadata_rules``
Usage and Configuration
=======================
Declare a model with the ``ReferenceModelMixin``.
.. code-block:: python
from edc_reference.model_mixins import ReferenceModelMixin
class CrfOne(ReferenceModelMixin, BaseUuidModel):
subject_visit = models.ForeignKey(SubjectVisit, on_delete=PROTECT)
report_datetime = models.DateTimeField(default=get_utcnow)
f1 = models.CharField(max_length=50)
f2 = models.CharField(max_length=50)
f3 = models.CharField(max_length=50)
f4 = models.DatetimeField(null=True)
Register the model and the relevant fields with the site global, ``site_reference_configs``:
.. code-block:: python
from edc_reference.site import ReferenceModelConfig
reference = ReferenceModelConfig(
model='edc_reference.crfone',
fields=['f1', 'f4'])
site_reference_configs.register(reference)
Create a model instance:
.. code-block:: python
crf_one = CrfOne.objects.create(
subject_visit=subject_visit,
f1='happiness'
f4=get_utcnow())
The ``Reference`` model will be updated:
.. code-block:: python
from edc_reference.models import Reference
reference = Reference.objects.get(
identifier=self.subject_identifier,
timepoint=self.subject_visit.visit_code,
report_datetime=crf_one.report_datetime,
field_name='f1')
>>> reference.__dict__
{ ...
'datatype': 'CharField',
'field_name': 'f1',
'identifier': '1',
'model': 'edc_reference.crfone',
'report_datetime': datetime.datetime(2017, 7, 7, 13, 30, 6, 545140, tzinfo=<UTC>),
'timepoint': 'code',
'value_date': None,
'value_datetime': None,
'value_int': None,
'value_str': 'happiness',
...}
Get the ``value`` from the reference instance:
.. code-block:: python
>>> reference.value
'happiness'
Model managers methods are also available, for example:
.. code-block:: python
reference = Reference.objects.crf_get_for_visit(
model='edc_reference.crfone',
visit=self.subject_visit,
field_name='f1')
>>> reference.value
'happiness'
Accessing pivoted data with ``LongitudinalRefset``
===============================================
TODO
.. |pypi| image:: https://img.shields.io/pypi/v/edc-reference.svg
:target: https://pypi.python.org/pypi/edc-reference
.. |travis| image:: https://travis-ci.org/clinicedc/edc-reference.svg?branch=develop
:target: https://travis-ci.org/clinicedc/edc-reference
.. |coverage| image:: https://coveralls.io/repos/github/clinicedc/edc-reference/badge.svg?branch=develop
:target: https://coveralls.io/github/clinicedc/edc-reference?branch=develop
edc-reference
-------------
Pivoted reference table for EDC modules
``edc_reference`` creates a pivoted table of CRF and Requisition records with a small subset of values that can be efficiently referenced. The module is used by ``edc_metadata_rules`` to quickly determine if a CRF or Requisition model instance exists avoiding the need to query each individual model class.
See also ``edc_metadata_rules``
Usage and Configuration
=======================
Declare a model with the ``ReferenceModelMixin``.
.. code-block:: python
from edc_reference.model_mixins import ReferenceModelMixin
class CrfOne(ReferenceModelMixin, BaseUuidModel):
subject_visit = models.ForeignKey(SubjectVisit, on_delete=PROTECT)
report_datetime = models.DateTimeField(default=get_utcnow)
f1 = models.CharField(max_length=50)
f2 = models.CharField(max_length=50)
f3 = models.CharField(max_length=50)
f4 = models.DatetimeField(null=True)
Register the model and the relevant fields with the site global, ``site_reference_configs``:
.. code-block:: python
from edc_reference.site import ReferenceModelConfig
reference = ReferenceModelConfig(
model='edc_reference.crfone',
fields=['f1', 'f4'])
site_reference_configs.register(reference)
Create a model instance:
.. code-block:: python
crf_one = CrfOne.objects.create(
subject_visit=subject_visit,
f1='happiness'
f4=get_utcnow())
The ``Reference`` model will be updated:
.. code-block:: python
from edc_reference.models import Reference
reference = Reference.objects.get(
identifier=self.subject_identifier,
timepoint=self.subject_visit.visit_code,
report_datetime=crf_one.report_datetime,
field_name='f1')
>>> reference.__dict__
{ ...
'datatype': 'CharField',
'field_name': 'f1',
'identifier': '1',
'model': 'edc_reference.crfone',
'report_datetime': datetime.datetime(2017, 7, 7, 13, 30, 6, 545140, tzinfo=<UTC>),
'timepoint': 'code',
'value_date': None,
'value_datetime': None,
'value_int': None,
'value_str': 'happiness',
...}
Get the ``value`` from the reference instance:
.. code-block:: python
>>> reference.value
'happiness'
Model managers methods are also available, for example:
.. code-block:: python
reference = Reference.objects.crf_get_for_visit(
model='edc_reference.crfone',
visit=self.subject_visit,
field_name='f1')
>>> reference.value
'happiness'
Accessing pivoted data with ``LongitudinalRefset``
===============================================
TODO
.. |pypi| image:: https://img.shields.io/pypi/v/edc-reference.svg
:target: https://pypi.python.org/pypi/edc-reference
.. |travis| image:: https://travis-ci.org/clinicedc/edc-reference.svg?branch=develop
:target: https://travis-ci.org/clinicedc/edc-reference
.. |coverage| image:: https://coveralls.io/repos/github/clinicedc/edc-reference/badge.svg?branch=develop
:target: https://coveralls.io/github/clinicedc/edc-reference?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
Close
Hashes for edc-reference-0.1.19.macosx-10.13-x86_64.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 685d8143fed00a3ae2aecf5957e42f8169c794d282f4626dec2e7e6e064fd8c1 |
|
MD5 | 350cf9b3d545ff90eba5c6ac7903ff7e |
|
BLAKE2b-256 | d330e5762c27e533c8a2eba0b6633190fbaf6f0d4c3988a79cfec5ea3175e80b |
Close
Hashes for edc_reference-0.1.19-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8a427782b84227db93bf28bcbd574f482995b9f36da33bd255337292c1ac6ec |
|
MD5 | a4fb6e1af17c944598b23acdce21367a |
|
BLAKE2b-256 | 19f47e6863842962a7c54413cc4913250e7ab0f2378dbd66ff20add18677c658 |