From 455f6e7d3f0dea173f02e80d433d589f9ac19099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20M=C3=A9nager?= <herve.menager@pasteur.fr> Date: Thu, 30 Apr 2020 22:23:20 +0200 Subject: [PATCH] replace some PK test result values with booleans for availability - Area under curve (ng.mL-1.hr) - Clearance (mL/hr) - Maximal concentration (ng/mL) - Volume distribution (Vd) become availabilities FIX #215 --- ippisite/ippidb/forms.py | 8 ++-- .../migrations/0058_auto_20200430_1915.py | 47 +++++++++++++++++++ .../migrations/0059_auto_20200430_1926.py | 29 ++++++++++++ ippisite/ippidb/models.py | 26 ++++------ .../ippidb/tests/test_with_all_tests.yaml | 8 ++-- ippisite/ippidb/tests/test_with_pk_test.yaml | 8 ++-- ippisite/ippidb/tests/tests_contribute_e2e.py | 16 +++---- 7 files changed, 105 insertions(+), 37 deletions(-) create mode 100644 ippisite/ippidb/migrations/0058_auto_20200430_1915.py create mode 100644 ippisite/ippidb/migrations/0059_auto_20200430_1926.py diff --git a/ippisite/ippidb/forms.py b/ippisite/ippidb/forms.py index 77c9ce62..0a4fba0c 100644 --- a/ippisite/ippidb/forms.py +++ b/ippisite/ippidb/forms.py @@ -1716,15 +1716,15 @@ class TestsForm(forms.Form): pkRes_tolerated = forms.ChoiceField( label="Tolerated", widget=forms.TextInput(), required=False ) - pkRes_auc = forms.IntegerField(label="AUC", initial=1, required=False) - pkRes_clearance = forms.DecimalField(label="Clearance", required=False) - pkRes_cmax = forms.DecimalField(label="C max", required=False) + pkRes_auc_av = forms.BooleanField(label="AUC available", initial=1, required=False) + pkRes_clearance_av = forms.BooleanField(label="Clearance available", required=False) + pkRes_cmax_av = forms.BooleanField(label="Maximal concentration available", required=False) pkRes_oral_bioavailability = forms.IntegerField( label="Oral bio-availability", initial=1, required=False ) pkRes_t_demi = forms.IntegerField(label="T 1/2", initial=1, required=False) pkRes_t_max = forms.IntegerField(label="T max", initial=1, required=False) - pkRes_voldistribution = forms.DecimalField(label="Voldistribution", required=False) + pkRes_voldistribution_av = forms.BooleanField(label="Volume distribution (Vd) available", required=False) UNIT_CONCENTRATION = (("micro", "µM"), ("nano", "nM"), ("pico", "pM")) diff --git a/ippisite/ippidb/migrations/0058_auto_20200430_1915.py b/ippisite/ippidb/migrations/0058_auto_20200430_1915.py new file mode 100644 index 00000000..bab8608b --- /dev/null +++ b/ippisite/ippidb/migrations/0058_auto_20200430_1915.py @@ -0,0 +1,47 @@ +# Generated by Django 2.2.1 on 2020-04-30 19:15 + +from django.db import migrations, models + +def fill_pkresult_avail_values(apps, schema_editor): + CompoundPKResult = apps.get_model("ippidb", "CompoundPKResult") + for cpr in CompoundPKResult.objects.all(): + cpr.auc_av = cpr.auc is not None + cpr.clearance_av = cpr.clearance is not None + cpr.c_max_av = cpr.c_max is not None + cpr.voldistribution_av = cpr.voldistribution is not None + cpr.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0057_auto_20200430_0740'), + ] + + operations = [ + migrations.AddField( + model_name='compoundpkresult', + name='auc_av', + field=models.BooleanField(default=False, verbose_name='Area under curve available'), + preserve_default=False, + ), + migrations.AddField( + model_name='compoundpkresult', + name='c_max_av', + field=models.BooleanField(default=False, verbose_name='Maximal concentration available'), + preserve_default=False, + ), + migrations.AddField( + model_name='compoundpkresult', + name='clearance_av', + field=models.BooleanField(default=False, verbose_name='Clearance available'), + preserve_default=False, + ), + migrations.AddField( + model_name='compoundpkresult', + name='voldistribution_av', + field=models.BooleanField(default=False, verbose_name='Volume distribution (Vd)'), + preserve_default=False, + ), + migrations.RunPython(fill_pkresult_avail_values), + ] diff --git a/ippisite/ippidb/migrations/0059_auto_20200430_1926.py b/ippisite/ippidb/migrations/0059_auto_20200430_1926.py new file mode 100644 index 00000000..7b4d5920 --- /dev/null +++ b/ippisite/ippidb/migrations/0059_auto_20200430_1926.py @@ -0,0 +1,29 @@ +# Generated by Django 2.2.1 on 2020-04-30 19:26 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0058_auto_20200430_1915'), + ] + + operations = [ + migrations.RemoveField( + model_name='compoundpkresult', + name='auc', + ), + migrations.RemoveField( + model_name='compoundpkresult', + name='c_max', + ), + migrations.RemoveField( + model_name='compoundpkresult', + name='clearance', + ), + migrations.RemoveField( + model_name='compoundpkresult', + name='voldistribution', + ), + ] diff --git a/ippisite/ippidb/models.py b/ippisite/ippidb/models.py index d2108802..b7722d9b 100644 --- a/ippisite/ippidb/models.py +++ b/ippisite/ippidb/models.py @@ -1262,28 +1262,20 @@ class CompoundPKResult(models.Model): compound = models.ForeignKey(Compound, models.CASCADE) test_pk_description = models.ForeignKey(TestPKDescription, models.CASCADE) tolerated = models.NullBooleanField("Tolerated", null=True) - auc = models.IntegerField("Area under curve (ng.mL-1.hr)", blank=True, null=True) - clearance = models.DecimalField( - "Clearance (mL/hr)", max_digits=7, decimal_places=3, blank=True, null=True - ) - c_max = models.DecimalField( - "Maximal concentration (ng/mL)", - max_digits=7, - decimal_places=3, - blank=True, - null=True, - ) oral_bioavailability = models.IntegerField( "Oral Bioavailability (%F)", blank=True, null=True ) t_demi = models.IntegerField("t½ (mn)", blank=True, null=True) t_max = models.IntegerField("tmax (mn)", blank=True, null=True) - voldistribution = models.DecimalField( - "Volume distribution (Vd)", - max_digits=5, - decimal_places=2, - blank=True, - null=True, + auc_av = models.BooleanField("Area under curve available") + clearance_av = models.BooleanField( + "Clearance available" + ) + c_max_av = models.BooleanField( + "Maximal concentration available" + ) + voldistribution_av = models.BooleanField( + "Volume distribution (Vd) available" ) class Meta: diff --git a/ippisite/ippidb/tests/test_with_all_tests.yaml b/ippisite/ippidb/tests/test_with_all_tests.yaml index 47145d44..73f7d142 100644 --- a/ippisite/ippidb/tests/test_with_all_tests.yaml +++ b/ippisite/ippidb/tests/test_with_all_tests.yaml @@ -52,15 +52,15 @@ pharmacokinetic: true pharmacokinetic_tests: - administration_mode: IV compound_pk_results: - - auc: '1' - c_max: '5.2' - clearance: '1.2' + - auc_av: True + c_max_av: True + clearance_av: True compound_name: toto oral_bioavailability: '22' t_demi: '5' t_max: '5' tolerated: 'True' - voldistribution: '5.5' + voldistribution_av: True concentration: '1.2' dose: '3.5' dose_interval: '2' diff --git a/ippisite/ippidb/tests/test_with_pk_test.yaml b/ippisite/ippidb/tests/test_with_pk_test.yaml index e6fa88bd..60136f05 100644 --- a/ippisite/ippidb/tests/test_with_pk_test.yaml +++ b/ippisite/ippidb/tests/test_with_pk_test.yaml @@ -43,15 +43,15 @@ pharmacokinetic: true pharmacokinetic_tests: - administration_mode: IV compound_pk_results: - - auc: '1' - c_max: '5.2' - clearance: '1.2' + - auc_av: False + c_max_av: True + clearance_av: '1.2' compound_name: toto oral_bioavailability: '22' t_demi: '5' t_max: '5' tolerated: 'True' - voldistribution: '5.5' + voldistribution_av: '5.5' dose: '3.5' organism: 1 test_name: test diff --git a/ippisite/ippidb/tests/tests_contribute_e2e.py b/ippisite/ippidb/tests/tests_contribute_e2e.py index f14b7da0..d5d2877f 100644 --- a/ippisite/ippidb/tests/tests_contribute_e2e.py +++ b/ippisite/ippidb/tests/tests_contribute_e2e.py @@ -467,15 +467,15 @@ class ContributionE2ETestCase(TestCase): data[ f"{idx}-compoundpkresult_set-pk-results-{nidx}-tolerated" ] = result["tolerated"] - data[f"{idx}-compoundpkresult_set-pk-results-{nidx}-auc"] = result[ - "auc" + data[f"{idx}-compoundpkresult_set-pk-results-{nidx}-auc_av"] = result[ + "auc_av" ] data[ - f"{idx}-compoundpkresult_set-pk-results-{nidx}-clearance" - ] = result["clearance"] + f"{idx}-compoundpkresult_set-pk-results-{nidx}-clearance_av" + ] = result["clearance_av"] data[ - f"{idx}-compoundpkresult_set-pk-results-{nidx}-c_max" - ] = result["c_max"] + f"{idx}-compoundpkresult_set-pk-results-{nidx}-c_max_av" + ] = result["c_max_av"] data[ f"{idx}-compoundpkresult_set-pk-results-{nidx}-oral_bioavailability" ] = result["oral_bioavailability"] @@ -486,8 +486,8 @@ class ContributionE2ETestCase(TestCase): f"{idx}-compoundpkresult_set-pk-results-{nidx}-t_max" ] = result["t_max"] data[ - f"{idx}-compoundpkresult_set-pk-results-{nidx}-voldistribution" - ] = result["voldistribution"] + f"{idx}-compoundpkresult_set-pk-results-{nidx}-voldistribution_av" + ] = result["voldistribution_av"] data[ f"{idx}-compoundpkresult_set-pk-results-{nidx}-compound_name" ] = result["compound_name"] -- GitLab