Pivoted reference model for clinicedc/edc modules
Project description
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.
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:
from edc_reference.site_reference import ReferenceModelConfig
reference = ReferenceModelConfig(
model='edc_reference.crfone',
fields=['f1', 'f4'])
site_reference_configs.register(reference)
Create a model instance:
crf_one = CrfOne.objects.create(
subject_visit=subject_visit,
f1='happiness'
f4=get_utcnow())
The Reference model will be updated:
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:
>>> reference.value
'happiness'
Model managers methods are also available, for example:
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
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 Distributions
Built Distribution
Hashes for edc_reference-0.1.32-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ae268e223ad25224c433e09b6ab0424c7ddf7a3f1a5da2cb5cb8a984f0f0b54 |
|
MD5 | 2e446f05eb5306da2fa8f046fac0a1db |
|
BLAKE2b-256 | 8dfb20e3f4a30c7b5853f121bfad9fe93243269cfd9d2ca9f17ed2892eb18ce8 |