Metadata-Version: 2.1
Name: edc-pdutils
Version: 0.3.17
Summary: Use pandas with clinicedc/edc projects
Home-page: https://github.com/clinicedc/edc-pdutils
Author: Erik van Widenfelt
Author-email: ew2789@gmail.com
License: GPL license, see LICENSE
Keywords: django Edc pandas,clinicedc,clinical trials
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 4.1
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
License-File: AUTHORS

|pypi| |actions| |codecov| |downloads|

edc-pdutils
+++++++++++

Use pandas with the Edc


Using the management command to export to CSV and STATA
+++++++++++++++++++++++++++++++++++++++++++++++++++++++

To export as CSV where the delimiter is ``|``

.. code-block:: python

    python manage.py export_models -a ambition_subject -p /ambition/export 
    
To export as STATA ``dta``:

.. code-block:: python

    python manage.py export_models -a ambition_subject -f stata -p /ambition/export 

To export encrypted fields as well:

.. code-block:: python

    python manage.py export_models -a ambition_subject -f stata -p /ambition/export  --decrypt

To export using a simpler filename that drops the tablename app_label prefix and does not include a datestamp suffix:

.. code-block:: python

    python manage.py export_models -a ambition_subject -f stata -p /ambition/export  --use_simple_filename


Export manually
+++++++++++++++

To export Crf data, for example:

.. code-block:: python

    from edc_pdutils.df_exporters import CsvCrfTablesExporter
    from edc_pdutils.df_handlers import CrfDfHandler

    app_label = 'ambition_subject'
    csv_path = '/Users/erikvw/Documents/ambition/export/'
    date_format = '%Y-%m-%d'
    sep = '|'
    exclude_history_tables = True

    class MyDfHandler(CrfDfHandler):
        visit_tbl = f'{app_label}_subjectvisit'
        exclude_columns = ['form_as_json', 'survival_status','last_alive_date',
                           'screening_age_in_years', 'registration_datetime',
                           'subject_type']

    class MyCsvCrfTablesExporter(CsvCrfTablesExporter):
        visit_column = 'subject_visit_id'
        datetime_fields = ['randomization_datetime']
        df_handler_cls = MyDfHandler
        app_label = app_label
        export_folder = csv_path

    sys.stdout.write('\n')
    exporter = MyCsvCrfTablesExporter(
        export_folder=csv_path,
        exclude_history_tables=exclude_history_tables
    )
    exporter.to_csv(date_format=date_format, delimiter=sep)

To export INLINE data for any CRF configured with an inline, for example:

.. code-block:: python

    class MyDfHandler(CrfDfHandler):
        visit_tbl = 'ambition_subject_subjectvisit'
        exclude_columns = ['form_as_json', 'survival_status','last_alive_date',
                           'screening_age_in_years', 'registration_datetime',
                           'subject_type']


    class MyCsvCrfInlineTablesExporter(CsvCrfInlineTablesExporter):
        visit_columns = ['subject_visit_id']
        df_handler_cls = MyDfHandler
        app_label = 'ambition_subject'
        export_folder = csv_path
        exclude_inline_tables = [
            'ambition_subject_radiology_abnormal_results_reason',
            'ambition_subject_radiology_cxr_type']
    sys.stdout.write('\n')
    exporter = MyCsvCrfInlineTablesExporter()
    exporter.to_csv(date_format=date_format, delimiter=sep)

Using ``model_to_dataframe``
++++++++++++++++++++++++++++

.. code-block:: python

    from edc_pdutils.model_to_dataframe import ModelToDataframe
    from edc_pdutils.utils import get_model_names
    from edc_pdutils.df_exporters.csv_exporter import CsvExporter

    app_label = 'ambition_subject'
    csv_path = '/Users/erikvw/Documents/ambition/export/'
    date_format = '%Y-%m-%d'
    sep = '|'
    
    for model_name in get_model_names(
            app_label=app_label,
            # with_columns=with_columns,
            # without_columns=without_columns,
        ):
        m = ModelToDataframe(model=model_name)
        exporter = CsvExporter(
            data_label=model_name,
            date_format=date_format,
            delimiter=sep,
            export_folder=csv_path,
        )
        exported = exporter.to_csv(dataframe=m.dataframe)
        
        
        




Settings
========

``EXPORT_FILENAME_TIMESTAMP_FORMAT``: True/False (Default: False)

By default a timestamp of the current date is added as a suffix to CSV export filenames.

By default a timestamp of format ``%Y%m%d%H%M%S`` is added.

``EXPORT_FILENAME_TIMESTAMP_FORMAT`` may be set to an empty string or a valid format for ``strftime``.

If ``EXPORT_FILENAME_TIMESTAMP_FORMAT`` is set to an empty string, "", a suffix is not added.

For example:

.. code-block:: bash

    # default
    registered_subject_20190203112555.csv

    # EXPORT_FILENAME_TIMESTAMP_FORMAT = "%Y%m%d"
    registered_subject_20190203.csv

    # EXPORT_FILENAME_TIMESTAMP_FORMAT = ""
    registered_subject.csv

.. |pypi| image:: https://img.shields.io/pypi/v/edc-pdutils.svg
    :target: https://pypi.python.org/pypi/edc-pdutils

.. |actions| image:: https://github.com/clinicedc/edc-pdutils/workflows/build/badge.svg?branch=develop
  :target: https://github.com/clinicedc/edc-pdutils/actions?query=workflow:build

.. |codecov| image:: https://codecov.io/gh/clinicedc/edc-pdutils/branch/develop/graph/badge.svg
  :target: https://codecov.io/gh/clinicedc/edc-pdutils

.. |downloads| image:: https://pepy.tech/badge/edc-pdutils
   :target: https://pepy.tech/project/edc-pdutils
