clinicedc 2.0.14__py3-none-any.whl → 2.0.16__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of clinicedc might be problematic. Click here for more details.
- {clinicedc-2.0.14.dist-info → clinicedc-2.0.16.dist-info}/METADATA +1 -1
- {clinicedc-2.0.14.dist-info → clinicedc-2.0.16.dist-info}/RECORD +64 -64
- edc_analytics/custom_tables/age.py +1 -0
- edc_analytics/custom_tables/art.py +1 -0
- edc_analytics/custom_tables/bmi.py +1 -0
- edc_analytics/custom_tables/bp.py +1 -0
- edc_analytics/custom_tables/fasting.py +1 -0
- edc_analytics/custom_tables/fbg.py +1 -0
- edc_analytics/custom_tables/fbg_ogtt.py +1 -0
- edc_analytics/custom_tables/hba1c.py +1 -0
- edc_analytics/custom_tables/ogtt.py +1 -0
- edc_analytics/custom_tables/waist.py +1 -0
- edc_analytics/row/row_definitions.py +1 -1
- edc_analytics/row/row_statistics_with_gender.py +1 -0
- edc_analytics/stata/get_stata_labels_from_model.py +5 -6
- edc_analytics/table.py +1 -0
- edc_appointment/creators/appointments_creator.py +5 -9
- edc_dx/diagnoses.py +2 -2
- edc_dx/form_validators/diagnosis_form_validator_mixin.py +1 -0
- edc_dx/form_validators/result_form_validator_mixin.py +14 -16
- edc_dx_review/form_mixins/clinical_review_baseline_required_form_mixin.py +1 -0
- edc_dx_review/medical_date.py +2 -1
- edc_dx_review/model_mixins/clinical_review_baseline_model_mixin.py +1 -0
- edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_chol_model_mixin.py +1 -0
- edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_dm_model_mixin.py +1 -0
- edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_hiv_model_mixin.py +1 -0
- edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_htn_model_mixin.py +1 -0
- edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_model_mixin.py +1 -0
- edc_dx_review/model_mixins/dx_location_model_mixin.py +1 -0
- edc_dx_review/model_mixins/factory/baseline_review_model_mixin_factory.py +1 -0
- edc_dx_review/model_mixins/factory/calculate_date.py +1 -0
- edc_dx_review/model_mixins/factory/dx_initial_review_model_mixin_factory.py +2 -1
- edc_dx_review/model_mixins/factory/followup_review_model_mixin_factory.py +1 -0
- edc_dx_review/model_mixins/factory/rx_initial_review_model_mixin_factory.py +1 -0
- edc_dx_review/model_mixins/followup_review/followup_review_model_mixin.py +1 -0
- edc_dx_review/model_mixins/followup_review/hiv_followup_review_model_mixin.py +1 -0
- edc_dx_review/model_mixins/initial_review/chol_initial_review_model_mixin.py +1 -0
- edc_dx_review/model_mixins/initial_review/hiv_initial_model_mixins.py +1 -0
- edc_dx_review/model_mixins/initial_review/ncd_initial_review_model_mixin.py +1 -0
- edc_dx_review/radio_fields.py +3 -3
- edc_dx_review/utils.py +2 -1
- edc_form_describer/form_describer.py +13 -8
- edc_form_describer/forms_reference.py +24 -25
- edc_form_describer/make_forms_reference.py +10 -12
- edc_form_describer/management/commands/make_forms_reference.py +8 -8
- edc_form_describer/markdown_writer.py +11 -10
- edc_randomization/randomizer.py +2 -5
- edc_randomization/utils.py +10 -0
- edc_visit_schedule/schedule/schedule.py +13 -13
- edc_visit_tracking/action_items.py +1 -2
- edc_visit_tracking/apps.py +1 -1
- edc_visit_tracking/context_processors.py +1 -2
- edc_visit_tracking/crf_date_validator.py +4 -4
- edc_visit_tracking/form_validators/visit_form_validator.py +51 -45
- edc_visit_tracking/form_validators/visit_missed_form_validator.py +6 -1
- edc_visit_tracking/model_mixins/utils.py +1 -1
- edc_visit_tracking/modelform_mixins/crf/visit_tracking_crf_modelform_mixin.py +4 -4
- edc_visit_tracking/modelform_mixins/utils.py +2 -2
- edc_visit_tracking/models/signals.py +1 -1
- edc_visit_tracking/typing_stubs.py +3 -3
- edc_visit_tracking/utils.py +1 -1
- edc_visit_tracking/visit_sequence.py +3 -4
- {clinicedc-2.0.14.dist-info → clinicedc-2.0.16.dist-info}/WHEEL +0 -0
- {clinicedc-2.0.14.dist-info → clinicedc-2.0.16.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: clinicedc
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.16
|
|
4
4
|
Summary: A clinical trials data management framework built on Django
|
|
5
5
|
Keywords: django,clinicedc,edc,clinical trials,research,data management,esource
|
|
6
6
|
Author: Erik van Widenfelt, Jonathan Willitts
|
|
@@ -296,27 +296,27 @@ edc_analytics/__init__.py,sha256=Tne7Oyy6wpFVNcFoEpurXJ4_I3Tz93jvqOMmTTXW_X0,123
|
|
|
296
296
|
edc_analytics/apps.py,sha256=bZ9Gtr1YdBX2Q1nkrzOi7wG9_Ri3vUj8ZOATve3hDzo,229
|
|
297
297
|
edc_analytics/constants.py,sha256=a8aUKrhSWKFfLBm9e7CFQk0mEdkFNbGbAxpUrqaTXjw,481
|
|
298
298
|
edc_analytics/custom_tables/__init__.py,sha256=TVI12TnJ5aMqTW2liyS4AjfLAIgg5rY8W_4WBsWfNw8,330
|
|
299
|
-
edc_analytics/custom_tables/age.py,sha256=
|
|
300
|
-
edc_analytics/custom_tables/art.py,sha256=
|
|
301
|
-
edc_analytics/custom_tables/bmi.py,sha256=
|
|
302
|
-
edc_analytics/custom_tables/bp.py,sha256=
|
|
303
|
-
edc_analytics/custom_tables/fasting.py,sha256=
|
|
304
|
-
edc_analytics/custom_tables/fbg.py,sha256=
|
|
305
|
-
edc_analytics/custom_tables/fbg_ogtt.py,sha256=
|
|
299
|
+
edc_analytics/custom_tables/age.py,sha256=Jx78ka_AZ3qskHEAPeR1nQwENM6-MY12gEsM6rcZwY4,2615
|
|
300
|
+
edc_analytics/custom_tables/art.py,sha256=pgT7w2t6vzE5WFos4pe9E2XIEynFBBKFzryL1NV2abQ,2717
|
|
301
|
+
edc_analytics/custom_tables/bmi.py,sha256=5Ww5438pCAV_ApJ9k-_TIoJ805PibG-zAkvbv-1XUew,3844
|
|
302
|
+
edc_analytics/custom_tables/bp.py,sha256=THkAu7CKd9eZVlYDPtUrRFZg8zbO49U66kgEwtwRYQA,3189
|
|
303
|
+
edc_analytics/custom_tables/fasting.py,sha256=_r9_yyfleq99iNscgXYPNuP-cvyel1pLsEAU_I8JSJM,3993
|
|
304
|
+
edc_analytics/custom_tables/fbg.py,sha256=EX1PMVmjJ6r1RBeHzaFdpyEdYy2aJIhz1yB4I3JB-Pg,2967
|
|
305
|
+
edc_analytics/custom_tables/fbg_ogtt.py,sha256=Z22yMyKEu6PxDaD4BWAw5VAWj-dcSqNXHjPtC_IdXgY,12128
|
|
306
306
|
edc_analytics/custom_tables/gender.py,sha256=lLPggxFYv-G0hnY_Bkl3rAdAitCNJ6KEud2FOGfaubQ,252
|
|
307
|
-
edc_analytics/custom_tables/hba1c.py,sha256=
|
|
308
|
-
edc_analytics/custom_tables/ogtt.py,sha256=
|
|
309
|
-
edc_analytics/custom_tables/waist.py,sha256
|
|
307
|
+
edc_analytics/custom_tables/hba1c.py,sha256=tyK6EaxKfVeHbrZXfPV8s1QaiqPEC4_S1sSb3hFPsgw,2621
|
|
308
|
+
edc_analytics/custom_tables/ogtt.py,sha256=_WuSBG0_bj4SH0LELOkLPdAnOzWHLhLB0x43uPc-U-s,2888
|
|
309
|
+
edc_analytics/custom_tables/waist.py,sha256=tWQtmwn0AwV3JFmlbTSvcUq9TkTM19ewwHSTLHeun3s,3145
|
|
310
310
|
edc_analytics/data.py,sha256=yaa7Hi9bQMhFKt_7wWDFZYsfU-tAKoE-gsm97_5vSco,1032
|
|
311
311
|
edc_analytics/row/__init__.py,sha256=oBRBcrTeWr77ZfvsSnCGKbrHS0-qY26yt4EDn_hxllA,192
|
|
312
312
|
edc_analytics/row/row_definition.py,sha256=me9QGvDb7aijLPoRD_jey1cLkJ3TuBLkF6IpzoyV_Y4,1434
|
|
313
|
-
edc_analytics/row/row_definitions.py,sha256=
|
|
313
|
+
edc_analytics/row/row_definitions.py,sha256=7PW5wd-wiYaOeIJ_lqCi6bAzOQUWG_gyykKeqK0VZ-k,962
|
|
314
314
|
edc_analytics/row/row_statistics.py,sha256=M5zjBCbguVOxOp2Lmla9JUkZA9bG3V8aanY6zswDRL0,2897
|
|
315
|
-
edc_analytics/row/row_statistics_with_gender.py,sha256=
|
|
315
|
+
edc_analytics/row/row_statistics_with_gender.py,sha256=ti16XFqDgjrMcd-1v5kMxc5X1R6UqHYVKQ8khKvFPAI,3211
|
|
316
316
|
edc_analytics/stata/__init__.py,sha256=fzENxSjaoxaXbSeafnaNXOPO85aXWbObQBnYfhAJI6w,69
|
|
317
|
-
edc_analytics/stata/get_stata_labels_from_model.py,sha256=
|
|
317
|
+
edc_analytics/stata/get_stata_labels_from_model.py,sha256=Dsu0635K2F0xK3zrU-BmnuLV2ZD51mDqbTxJZWfgL4I,1431
|
|
318
318
|
edc_analytics/styler.py,sha256=IvuKalHPSJLZTjzOKAt7wK2kCRRvZGL9_PxM70Vo68Q,3086
|
|
319
|
-
edc_analytics/table.py,sha256=
|
|
319
|
+
edc_analytics/table.py,sha256=PJwlnURui-BXOqc9s0STA1Fs0FqbdAtNLKLnGFV_kS4,3753
|
|
320
320
|
edc_analytics/urls.py,sha256=NR4c2ybRQNjbtJwi-PTsYB9oacVuVZsIRHo7ZnA0WIc,118
|
|
321
321
|
edc_appconfig/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
322
322
|
edc_appconfig/apps.py,sha256=eMQEa-pQzqWyuBGbpWWNJwgmbc7oSZ3d0FNFdd_08ik,11211
|
|
@@ -342,7 +342,7 @@ edc_appointment/constants.py,sha256=tsv0MV8Zo4e1aLnx00VYsM0EmyUUuTupeEFb2cko1N8,
|
|
|
342
342
|
edc_appointment/context_processors.py,sha256=LTdhNLGDhsJmdobhnM4VwhZns-67jm5Culz8vxsErzI,387
|
|
343
343
|
edc_appointment/creators/__init__.py,sha256=yv_eSyS8ogQjSe-Y3elxUMa3unIbgTMH3Tg9QSRLdho,425
|
|
344
344
|
edc_appointment/creators/appointment_creator.py,sha256=HXB7tDyPHZ29MNqpDHuYXmJTRaWCxAtvU4KOypEc0o0,9757
|
|
345
|
-
edc_appointment/creators/appointments_creator.py,sha256=
|
|
345
|
+
edc_appointment/creators/appointments_creator.py,sha256=XH-pYfxtl5lS917mEGSMFWrwAVuOmjdB2Efw9ONo0jU,5638
|
|
346
346
|
edc_appointment/creators/unscheduled_appointment_creator.py,sha256=m7yLmW2xcNGf5PhhTUc1PleI8JKlhaYSoMWVCBZDvis,10590
|
|
347
347
|
edc_appointment/creators/utils.py,sha256=H4Q2_BVFqTX5ra8Aov061ItHLlusyGY2eOFoHC4taag,2568
|
|
348
348
|
edc_appointment/exceptions.py,sha256=07KyrUsorB4ke1TToWx2BcRAAsJYMKkOAt8cjn93B3A,1214
|
|
@@ -874,10 +874,10 @@ edc_document_status/models/signals.py,sha256=yZmZiYD3c2QDqUUTdTN087Fc3_B2-Vi-983
|
|
|
874
874
|
edc_document_status/urls.py,sha256=Hgg7_Kjo7c1aFcXBB8kuOJIvW5IY7Do7z5vkeBAWEDQ,213
|
|
875
875
|
edc_dx/__init__.py,sha256=im7QJgvIrK5LLffGaTEL5v_TT81Io51SjF3cjPwPHnk,156
|
|
876
876
|
edc_dx/apps.py,sha256=L9jTcNHWXli9vYd5FPnyc7SXOj-qs_3ntVJ549nJ0XE,109
|
|
877
|
-
edc_dx/diagnoses.py,sha256=
|
|
877
|
+
edc_dx/diagnoses.py,sha256=TWP5MaCGqBhZKvB_l-dFyMttL0mFV-2mUCYIE1sdO1U,9048
|
|
878
878
|
edc_dx/form_validators/__init__.py,sha256=0Xdntahcc_2lYyYIdigkkcZMtfGTa1qX3C1zo0NW-eo,138
|
|
879
|
-
edc_dx/form_validators/diagnosis_form_validator_mixin.py,sha256=
|
|
880
|
-
edc_dx/form_validators/result_form_validator_mixin.py,sha256=
|
|
879
|
+
edc_dx/form_validators/diagnosis_form_validator_mixin.py,sha256=7XVTPPkVx-X3BW8XiBKRYGTeuPIYnt9Xsbcno8Q5ZOU,1926
|
|
880
|
+
edc_dx/form_validators/result_form_validator_mixin.py,sha256=Us_ZJrLc8HB1xw6Bu_ZM6gQhHJDEj3eusv2M7mlUUPs,2405
|
|
881
881
|
edc_dx/utils.py,sha256=tHhSJgXYz_DwP9Ujhi4MVLFc2Sz-oxcOQEpDO9elz5w,1223
|
|
882
882
|
edc_dx_review/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
883
883
|
edc_dx_review/apps.py,sha256=kgCI6K_HKHiKb1MfblBJSr-naZk7bABgMWhtpmIl1wg,116
|
|
@@ -887,42 +887,42 @@ edc_dx_review/choices.py,sha256=AufGpbPViQ6eA0TJxfod3g9Y8T-aLvr6tulAHL3AQtc,643
|
|
|
887
887
|
edc_dx_review/constants.py,sha256=1l1n556hBzL5M_fbnQkxK4dXzYH_35pem42QZVWHslk,204
|
|
888
888
|
edc_dx_review/fieldsets.py,sha256=aLgxJqfz8XsoK9dXI4wa8v9qS_GD1KQbO0b2pVg_ClA,1276
|
|
889
889
|
edc_dx_review/form_mixins/__init__.py,sha256=BT941i0F_ahGzpZQtM-Jhd911XVFrxKDj87L0w-hCSM,112
|
|
890
|
-
edc_dx_review/form_mixins/clinical_review_baseline_required_form_mixin.py,sha256=
|
|
890
|
+
edc_dx_review/form_mixins/clinical_review_baseline_required_form_mixin.py,sha256=Goxl-DVRfAv2qtZlquN9-GJ31slylRPkoI07zyrYO3k,943
|
|
891
891
|
edc_dx_review/form_validator_mixins/__init__.py,sha256=qlmi4uKl-Dqtliyw42ZfldMkYhdgAs4xOwK9isYGEMA,218
|
|
892
892
|
edc_dx_review/form_validator_mixins/clinical_review_baseline_form_validator_mixin.py,sha256=KFc4PwH2__fo4OvHrBtNTuYApliVuiD-VT1RRnmqcCw,226
|
|
893
893
|
edc_dx_review/form_validator_mixins/clinical_review_followup_form_validator_mixin.py,sha256=fNZF9TJrak9e9yUb8VJNLElLThWLGma3Wun5-DP6OtA,1097
|
|
894
894
|
edc_dx_review/list_data.py,sha256=Igsmks2rDC95PDMWZmWLynhvQ6dBL2K0qazwtEDDXOc,711
|
|
895
|
-
edc_dx_review/medical_date.py,sha256=
|
|
895
|
+
edc_dx_review/medical_date.py,sha256=I_TJ5tEY8Mkqgy3_z_pjKlHszNE5LWYSXiRMEXxpQMw,6896
|
|
896
896
|
edc_dx_review/migrations/0001_initial.py,sha256=0BmL_Pj5j-lRlR_IBzwDqGH96pIOT8mlf3huCK43Jlk,11691
|
|
897
897
|
edc_dx_review/migrations/0002_diagnosislocations_extra_value_and_more.py,sha256=I8wCv3MXFzDufDC9fksSfKjDNi5TK_whkWN0Jc6a4Pg,965
|
|
898
898
|
edc_dx_review/migrations/0003_alter_diagnosislocations_options_and_more.py,sha256=xeaCnYnmqFnVemeqNhuIc8-o9SAKZpguZHd4QTinr7c,5011
|
|
899
899
|
edc_dx_review/migrations/0004_remove_diagnosislocations_edc_dx_revi_name_a39b40_idx_and_more.py,sha256=a0yE-oHCphIt9-PjfMa5qLb1FNBoMbcq1qliyw6MGVQ,524
|
|
900
900
|
edc_dx_review/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
901
901
|
edc_dx_review/model_mixins/__init__.py,sha256=-Yga4EAzAyBO9Q6Wmtj9bfKujnVBFPxklp98pkhvijw,700
|
|
902
|
-
edc_dx_review/model_mixins/clinical_review_baseline_model_mixin.py,sha256=
|
|
902
|
+
edc_dx_review/model_mixins/clinical_review_baseline_model_mixin.py,sha256=E_1UuQlJmBbiQnTAm5LugRplHRWe6rRVa26teCnlOtA,927
|
|
903
903
|
edc_dx_review/model_mixins/clinical_review_followup/__init__.py,sha256=vhLjTnrXT89BYohT18JHRmxN8ua6I_KSBO-bkmJiP34,403
|
|
904
|
-
edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_chol_model_mixin.py,sha256=
|
|
905
|
-
edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_dm_model_mixin.py,sha256=
|
|
906
|
-
edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_hiv_model_mixin.py,sha256=
|
|
907
|
-
edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_htn_model_mixin.py,sha256=
|
|
908
|
-
edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_model_mixin.py,sha256=
|
|
909
|
-
edc_dx_review/model_mixins/dx_location_model_mixin.py,sha256=
|
|
904
|
+
edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_chol_model_mixin.py,sha256=fWV8YCXki24r-o5a2Zs2VGMgWeqXW7rd5ayzffwo82o,1678
|
|
905
|
+
edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_dm_model_mixin.py,sha256=ICoAmdtNpiGyuNN2-P0M9WyI2HsIW-tilwU3d3bnKrY,1654
|
|
906
|
+
edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_hiv_model_mixin.py,sha256=L0_RiaJWrKANwfFz7pU9ZvkVIRzek3_1ckOhk4BNPDo,1681
|
|
907
|
+
edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_htn_model_mixin.py,sha256=uC8W37NO0slc8a1xwRGsemdgbsM2VkYNRgyDZUTqU48,1739
|
|
908
|
+
edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_model_mixin.py,sha256=8SzfY9qBxQhc2RKPyhH-LLAS90FnDZbHoz_rTnw0Nkk,893
|
|
909
|
+
edc_dx_review/model_mixins/dx_location_model_mixin.py,sha256=XJZOh7ZJhJRM99DjhHSkipoGwfgKQqdhzJZRmUPDqjk,426
|
|
910
910
|
edc_dx_review/model_mixins/factory/__init__.py,sha256=IdBPEgN-mJm9v0vjSDLGc10v12pIp-NFpBi-E0y5Zmk,348
|
|
911
|
-
edc_dx_review/model_mixins/factory/baseline_review_model_mixin_factory.py,sha256=
|
|
912
|
-
edc_dx_review/model_mixins/factory/calculate_date.py,sha256=
|
|
913
|
-
edc_dx_review/model_mixins/factory/dx_initial_review_model_mixin_factory.py,sha256=
|
|
914
|
-
edc_dx_review/model_mixins/factory/followup_review_model_mixin_factory.py,sha256=
|
|
915
|
-
edc_dx_review/model_mixins/factory/rx_initial_review_model_mixin_factory.py,sha256=
|
|
911
|
+
edc_dx_review/model_mixins/factory/baseline_review_model_mixin_factory.py,sha256=5h8wWOlcB-CZqanTwk8LfCZdq9y3DaFSmOoCLv87j5g,1747
|
|
912
|
+
edc_dx_review/model_mixins/factory/calculate_date.py,sha256=Ytjlk2R7CsNWTYWVwzl17UuUHai8ZBKa4A0cB58XsqE,1527
|
|
913
|
+
edc_dx_review/model_mixins/factory/dx_initial_review_model_mixin_factory.py,sha256=fiq649IUg28cbi9KGGHtWQ6lntQpSy53mWJtXm1q7_o,3211
|
|
914
|
+
edc_dx_review/model_mixins/factory/followup_review_model_mixin_factory.py,sha256=QUq2cMo9IPWLnhXeyHg1qj6iRUuSAWY2m9oyHSh8cOQ,1247
|
|
915
|
+
edc_dx_review/model_mixins/factory/rx_initial_review_model_mixin_factory.py,sha256=DTO3NAN26VoZLQ0JQwF-N5pPo-Gxsw89m-iAkg7Wu3c,2377
|
|
916
916
|
edc_dx_review/model_mixins/followup_review/__init__.py,sha256=2vTnIxKhFrmxXDVdngv5RumwycrpnWh7FaMU8CA99LU,139
|
|
917
|
-
edc_dx_review/model_mixins/followup_review/followup_review_model_mixin.py,sha256=
|
|
918
|
-
edc_dx_review/model_mixins/followup_review/hiv_followup_review_model_mixin.py,sha256=
|
|
917
|
+
edc_dx_review/model_mixins/followup_review/followup_review_model_mixin.py,sha256=HJJSqRxDj8wxxCRmOTsA_mz6l9Q5Fp5gpZYHHthMu0k,674
|
|
918
|
+
edc_dx_review/model_mixins/followup_review/hiv_followup_review_model_mixin.py,sha256=y0Ux_v55bfDtOIQO4MmLu-E00tRfSLmP5QMPixuUVtg,1035
|
|
919
919
|
edc_dx_review/model_mixins/initial_review/__init__.py,sha256=nSRBcgZcJnbACdazzI_1oJ9B5YHjAbvpCO3KlFsn510,250
|
|
920
|
-
edc_dx_review/model_mixins/initial_review/chol_initial_review_model_mixin.py,sha256=
|
|
921
|
-
edc_dx_review/model_mixins/initial_review/hiv_initial_model_mixins.py,sha256=
|
|
922
|
-
edc_dx_review/model_mixins/initial_review/ncd_initial_review_model_mixin.py,sha256=
|
|
920
|
+
edc_dx_review/model_mixins/initial_review/chol_initial_review_model_mixin.py,sha256=sj3nBYKY4nY3arX6TcChN1KvjlKFr5216ijT4_b2Z6M,1001
|
|
921
|
+
edc_dx_review/model_mixins/initial_review/hiv_initial_model_mixins.py,sha256=ayOxv6D_sFC_5ttGYQigEMq2c-hC5823H7pPlDXVkJU,3642
|
|
922
|
+
edc_dx_review/model_mixins/initial_review/ncd_initial_review_model_mixin.py,sha256=UsE-z9qZzNnBj7v7dwaBqzIj24h63l_ywnYjvMzrT4c,1193
|
|
923
923
|
edc_dx_review/models.py,sha256=j270tH76Fb-WYMc7nR_4JfIT9An5QQ-FSTiiGer4YUE,610
|
|
924
|
-
edc_dx_review/radio_fields.py,sha256=
|
|
925
|
-
edc_dx_review/utils.py,sha256=
|
|
924
|
+
edc_dx_review/radio_fields.py,sha256=sb8njIokL0v_kA-7_HZJtiUXdW2ILeOYOXMqd2XLsLU,810
|
|
925
|
+
edc_dx_review/utils.py,sha256=bTh1zcmSiEq27RlEaDd0Cp4NZ6jhg7gr_dZapsLk28U,6974
|
|
926
926
|
edc_egfr/__init__.py,sha256=q9hW6cas07gJxgElFaN7AtUGzwTwHuXvexxGFej3_pQ,56
|
|
927
927
|
edc_egfr/admin/__init__.py,sha256=X4SsX1UIcGwxzNHH2uG4rnLxLQiYcLJeGLi4agxnkEQ,79
|
|
928
928
|
edc_egfr/admin/egfr_drop_notification_admin_mixin.py,sha256=Chet4mYDfZI4ohYrAyyf4CymZE6jCkYUB7y7uSAP-rs,2431
|
|
@@ -1087,13 +1087,13 @@ edc_fieldsets/models.py,sha256=sAQOBRo_PM7Uu3Hvxx2j5CLDDpuei8-vAYdkOUSuYkg,32
|
|
|
1087
1087
|
edc_fieldsets/urls.py,sha256=_SQMjzRQvSHqalE_zviNqzpbcwJgLdjAgOh3-Eprb58,749
|
|
1088
1088
|
edc_form_describer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1089
1089
|
edc_form_describer/apps.py,sha256=unr6UihcCOaoVtj56Q6DRQq9WDjivoE1zZjyy2HTBqU,121
|
|
1090
|
-
edc_form_describer/form_describer.py,sha256=
|
|
1091
|
-
edc_form_describer/forms_reference.py,sha256=
|
|
1092
|
-
edc_form_describer/make_forms_reference.py,sha256=
|
|
1090
|
+
edc_form_describer/form_describer.py,sha256=0F7eu2rLpThwv9lU7taSZFr6mJed1Gpv6hUeMYEWlGA,8435
|
|
1091
|
+
edc_form_describer/forms_reference.py,sha256=TYofCReEipIceNXSddL29jcApYUrgU8LNq5UElJtSz0,4709
|
|
1092
|
+
edc_form_describer/make_forms_reference.py,sha256=wQY39EFscPWTszj8gzpLhf0WKktL91uIVBdx1cMh_gU,1327
|
|
1093
1093
|
edc_form_describer/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1094
1094
|
edc_form_describer/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1095
|
-
edc_form_describer/management/commands/make_forms_reference.py,sha256=
|
|
1096
|
-
edc_form_describer/markdown_writer.py,sha256=
|
|
1095
|
+
edc_form_describer/management/commands/make_forms_reference.py,sha256=Pni3ZPpGM5Ds7-GYXPvl_m2zxHOE2_rFvmdlXre0FnM,3168
|
|
1096
|
+
edc_form_describer/markdown_writer.py,sha256=UFjVvz5cUHyJnlUDNm6RIPBGc675HL-IsoUS6TDrKJg,1809
|
|
1097
1097
|
edc_form_describer/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1098
1098
|
edc_form_describer/models.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1099
1099
|
edc_form_describer/urls.py,sha256=_FX1x4JJH8wKclMUbJI847xPbjxqHJazbRZYj30wW7g,113
|
|
@@ -2795,12 +2795,12 @@ edc_randomization/models/edc_permissions.py,sha256=f6P4zXxLQdTAbn2KnFlwfE86Lmzj7
|
|
|
2795
2795
|
edc_randomization/models/randomization_list.py,sha256=Hd5yUSZ5HBKhNzYdlbJufab8U2x3Dzw8n4WXnYzJxyc,253
|
|
2796
2796
|
edc_randomization/randomization_list_importer.py,sha256=v8d1klIfAsf9CwR_4HLLzifDnJvFD2bXhDOe0XqznjM,12366
|
|
2797
2797
|
edc_randomization/randomization_list_verifier.py,sha256=0JqlbVCBZzx18Vxp2gID4zHjZMyO1LaHzqe4zTzRUpY,6481
|
|
2798
|
-
edc_randomization/randomizer.py,sha256=
|
|
2798
|
+
edc_randomization/randomizer.py,sha256=N57PvCGjsjlw4r4V-zE5K7uWnLUw4QwZREu-mQ-O_4U,12939
|
|
2799
2799
|
edc_randomization/randomizers.py,sha256=JvMDAnsgvRZkl50Bawm2iLsyw3bfWfGwBafn54K5g44,297
|
|
2800
2800
|
edc_randomization/site_randomizers.py,sha256=T6u1cNPZtoh5ajdsBciSVWzZYZyOPbiTqS9VBGKJ7H8,4077
|
|
2801
2801
|
edc_randomization/system_checks.py,sha256=S_2Vkq3J3DQVEXOV3JNNlCzuZcl1l34-tTnaBaSZaBk,3025
|
|
2802
2802
|
edc_randomization/urls.py,sha256=yQnOoy5U5uL00f7_JJcZk7toskmZunG_kJdl-epCV9U,223
|
|
2803
|
-
edc_randomization/utils.py,sha256=
|
|
2803
|
+
edc_randomization/utils.py,sha256=uRTtoyAuWo5D6y65ZHBWMSody8IMJBK6cS3mFmJGIMw,5730
|
|
2804
2804
|
edc_randomization/views.py,sha256=mQnAoYzIbqXFXablJbPY3NdJc4K3fD4le-GOF2kpMmE,340
|
|
2805
2805
|
edc_refusal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2806
2806
|
edc_refusal/admin.py,sha256=upce4HEPyPYKTe_R_krQ9TaLufcJN50c0lw4JrzbTwE,2151
|
|
@@ -3287,7 +3287,7 @@ edc_visit_schedule/navbars.py,sha256=RWx57OD-KxpPh0ihRyangGGiOOR7vfxRFjPCj8C5uF4
|
|
|
3287
3287
|
edc_visit_schedule/ordered_collection.py,sha256=7A5YqG0qGx6jAE0z6bd3BijlW9oYxiQrF-5fzB3hvok,1699
|
|
3288
3288
|
edc_visit_schedule/post_migrate_signals.py,sha256=7vFfx7ifMwmvrf7MCzpk9q4g1pbM4n44uM4TrH1hPGQ,748
|
|
3289
3289
|
edc_visit_schedule/schedule/__init__.py,sha256=bzyYW9y3pPCFTjwjvkUVgkW3d1g1D2SCNfgE9bnLjII,101
|
|
3290
|
-
edc_visit_schedule/schedule/schedule.py,sha256=
|
|
3290
|
+
edc_visit_schedule/schedule/schedule.py,sha256=RhUc5UPKZacqYmdxI8-tkEkERZFfq0TAN-wDF8dBMEU,14881
|
|
3291
3291
|
edc_visit_schedule/schedule/visit_collection.py,sha256=9OJKrLtx-H0eL9oo0dsRqYGPICiAMqEF4xIhhlinx0A,2033
|
|
3292
3292
|
edc_visit_schedule/schedule/window.py,sha256=P_hNhAXBmRxED_0UrlpQoYHF5r_nTEpTK7U2JSAnpCs,5222
|
|
3293
3293
|
edc_visit_schedule/simple_model_validator.py,sha256=pE2QCSI1VhSr9Dd-NGd-72u6e479_vzbS8iL17eg4Yc,771
|
|
@@ -3319,18 +3319,18 @@ edc_visit_schedule/visit_schedule/schedules_collection.py,sha256=yujoCASDUWyFsqa
|
|
|
3319
3319
|
edc_visit_schedule/visit_schedule/visit_schedule.py,sha256=s4pzIUMSDyGgj2wINI53qO3V_UFU_vhEX7lTBtz9UmE,5734
|
|
3320
3320
|
edc_visit_schedule/wsgi.py,sha256=ToL_Ox7yQ30uUMBj5Ev2q_im2dl6mWKdqsUyJWeyFWU,397
|
|
3321
3321
|
edc_visit_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3322
|
-
edc_visit_tracking/action_items.py,sha256=
|
|
3322
|
+
edc_visit_tracking/action_items.py,sha256=lWf2-lNgz3QxkvbHW3j7YpZFbwqZwUvI_qDaAR4SWWI,1216
|
|
3323
3323
|
edc_visit_tracking/admin.py,sha256=YQ6gNY7oMgzfR-HAgMfeZ8DsH0Yhr8GvmUeQUb11eqQ,554
|
|
3324
3324
|
edc_visit_tracking/admin_site.py,sha256=f_MgAkWy84hY48SOb5vT21IcSkebPm0j5b6ZmcuCjcw,187
|
|
3325
|
-
edc_visit_tracking/apps.py,sha256=
|
|
3325
|
+
edc_visit_tracking/apps.py,sha256=WD1WUsqsYoH0arcRdx6eDyEU3pB4cwpjY3wvYvlpg7U,545
|
|
3326
3326
|
edc_visit_tracking/choices.py,sha256=HVpd_Wr31NAG2kTKaF7TkPAgBk5PB_8hfQN3sAiNisA,2322
|
|
3327
3327
|
edc_visit_tracking/constants.py,sha256=-XXCR2VzMxpZrCdGp4CB958j3E0llrPd5PKdrblsHNs,444
|
|
3328
|
-
edc_visit_tracking/context_processors.py,sha256=
|
|
3329
|
-
edc_visit_tracking/crf_date_validator.py,sha256=
|
|
3328
|
+
edc_visit_tracking/context_processors.py,sha256=U4zznNUdTAxFNjr56nl13GXFQ2yM9VIochpGujf9bb0,312
|
|
3329
|
+
edc_visit_tracking/crf_date_validator.py,sha256=_UhYtNvzAyVdechjEmR-g9-SKBGb4aCW0DlK4WaY7rg,3737
|
|
3330
3330
|
edc_visit_tracking/exceptions.py,sha256=trVxjsip2_Fl6y2e4gWts9XVVPcOqmJXvthuJSSFTMk,155
|
|
3331
3331
|
edc_visit_tracking/form_validators/__init__.py,sha256=BQcVQ_BBlMb_x5unFYm2sy5fTGiI3pBnyxsgrebjIfU,119
|
|
3332
|
-
edc_visit_tracking/form_validators/visit_form_validator.py,sha256=
|
|
3333
|
-
edc_visit_tracking/form_validators/visit_missed_form_validator.py,sha256=
|
|
3332
|
+
edc_visit_tracking/form_validators/visit_form_validator.py,sha256=lRc1IA3ujgWqJL0VQbjPzJa8G6njXKogbOVoN_EzTGg,11972
|
|
3333
|
+
edc_visit_tracking/form_validators/visit_missed_form_validator.py,sha256=xJRVbAGcxXSvfb6ZkxGHfI01G1K7afuxF8wXa-smAMg,1449
|
|
3334
3334
|
edc_visit_tracking/locale/sw/LC_MESSAGES/django.po,sha256=lRGiikykQlMhoS-SgN-Hzqgm3NpBuAoR9H_vsEt4-aI,3719
|
|
3335
3335
|
edc_visit_tracking/managers.py,sha256=oQyaMAnUYYLqY9qwSU8rT2-KUvqu4M9t9J1YzIIdwFQ,4008
|
|
3336
3336
|
edc_visit_tracking/migrations/0001_initial.py,sha256=R3MUszHP_y2zQAO9JXu16td3ZTkJreh6jCBOc6biALs,5655
|
|
@@ -3354,7 +3354,7 @@ edc_visit_tracking/model_mixins/crfs/visit_tracking_crf_model_mixin.py,sha256=5p
|
|
|
3354
3354
|
edc_visit_tracking/model_mixins/requisitions/__init__.py,sha256=JZHxR8XADoba21z1JJsJyQattiRheoLj4mkCDk_HEKc,87
|
|
3355
3355
|
edc_visit_tracking/model_mixins/requisitions/visit_tracking_requisition_model_mixin.py,sha256=I72j8p5SkYLDpxAAeRx76z_TMi-lIH0JxcbKY6OOALg,1186
|
|
3356
3356
|
edc_visit_tracking/model_mixins/subject_visit_missed_model_mixin.py,sha256=BnPnpbNSVyJgbzxCyWAnoOXkjRUyciifFIR6kWNp_yA,3593
|
|
3357
|
-
edc_visit_tracking/model_mixins/utils.py,sha256=
|
|
3357
|
+
edc_visit_tracking/model_mixins/utils.py,sha256=yL3DsZbW5mG8kOo3r3D1J_dGhvYTpYb9x6FY0fQMrts,1554
|
|
3358
3358
|
edc_visit_tracking/model_mixins/visit_model_mixin/__init__.py,sha256=YpThykSaGcXNz7rOH-aOOodhLFFhnR3vDwn40gsaxpc,248
|
|
3359
3359
|
edc_visit_tracking/model_mixins/visit_model_mixin/caretaker_fields_mixin.py,sha256=4GDRDe6It-b1UNKatsdI_oyu1_47bpnJsuKv6yLQWZ8,1024
|
|
3360
3360
|
edc_visit_tracking/model_mixins/visit_model_mixin/previous_visit_model_mixin.py,sha256=NZ5UDkZltDmqYu6uHOL4BWB5-tnwEyWmIHI_VYNY3Is,1875
|
|
@@ -3365,23 +3365,23 @@ edc_visit_tracking/modeladmin_mixins/crf_model_admin_mixin.py,sha256=KaShntUo5g0
|
|
|
3365
3365
|
edc_visit_tracking/modeladmin_mixins/visit_model_admin_mixin.py,sha256=bnBzchsrRYZzq8-AGV7veWzXsLPHOx_bwFCHduUBLRM,5156
|
|
3366
3366
|
edc_visit_tracking/modelform_mixins/__init__.py,sha256=YSmMaMAWmggeIoftggG_ij8H2kX-H3P5T8w5E0TCCZ0,194
|
|
3367
3367
|
edc_visit_tracking/modelform_mixins/crf/__init__.py,sha256=bPOdhr4KLEBFo-SK1F8DWD6us7kFolU4qphjg5oTnTs,129
|
|
3368
|
-
edc_visit_tracking/modelform_mixins/crf/visit_tracking_crf_modelform_mixin.py,sha256=
|
|
3369
|
-
edc_visit_tracking/modelform_mixins/utils.py,sha256=
|
|
3368
|
+
edc_visit_tracking/modelform_mixins/crf/visit_tracking_crf_modelform_mixin.py,sha256=Ynl8z-rL1LwmYGtWMb-XbYwdcM7p_rX6tA5Fx6uSbfc,4373
|
|
3369
|
+
edc_visit_tracking/modelform_mixins/utils.py,sha256=PlmJw4enAaESEGkzooH0iOX9LtGZL7jasDKaHZ9IOdM,1669
|
|
3370
3370
|
edc_visit_tracking/modelform_mixins/visit_tracking_modelform_mixin.py,sha256=pik_qYv2vJLd3HtYslZEn65_Cy0iHSs-rqkryoyjZg8,2580
|
|
3371
3371
|
edc_visit_tracking/models/__init__.py,sha256=aB-hnevvK3ttednU3e3c5Fb8i2GIRK5p2zRRkgoSXSc,318
|
|
3372
|
-
edc_visit_tracking/models/signals.py,sha256=
|
|
3372
|
+
edc_visit_tracking/models/signals.py,sha256=AgdyrUfya4obxnOjoTl62IIRHMfuP-wMtMm6skwes5E,2800
|
|
3373
3373
|
edc_visit_tracking/models/subject_visit.py,sha256=yrSV_pH-W_tw3S9Px2ELSTeFM82haNf0YaekWVaTaRI,1732
|
|
3374
3374
|
edc_visit_tracking/models/subject_visit_missed.py,sha256=VsVF0eALA-UHTeWkaJT5xGCo8FYXqBiRxv-t61wIFtk,963
|
|
3375
3375
|
edc_visit_tracking/models/subject_visit_missed_reasons.py,sha256=dGEUkZvD3wqyUk3joSmfdsEPEswZ6dsCQJAUZ69cewI,257
|
|
3376
3376
|
edc_visit_tracking/models/visit_reasons.py,sha256=OWAL3iksKQlkp9zcD3OXDnjg03kS97hATMRjIZMVsU0,214
|
|
3377
3377
|
edc_visit_tracking/stubs.py,sha256=4lGFKGJEckmnXbNdnQQwc_HcdQFSQxE1H2oQpDircBs,1164
|
|
3378
3378
|
edc_visit_tracking/system_checks.py,sha256=rK1yGfp0H9nuQJBl1PA_RhvorBXMG-ve_Wc6jKXBmdQ,435
|
|
3379
|
-
edc_visit_tracking/typing_stubs.py,sha256=
|
|
3379
|
+
edc_visit_tracking/typing_stubs.py,sha256=7LMpFxcJICBFY7fBFZ1z0JSwSBfYGE6K1whAE7BVb-U,2106
|
|
3380
3380
|
edc_visit_tracking/urls.py,sha256=X9Wiy0mlDaCeiiOKNytfSNfVY6oeeJbaBPtHol81HD0,181
|
|
3381
|
-
edc_visit_tracking/utils.py,sha256=
|
|
3381
|
+
edc_visit_tracking/utils.py,sha256=3Bamx6fWOISqN5_JhXU3R1eHwcBZ4f1KDdNu0t_aHEg,3258
|
|
3382
3382
|
edc_visit_tracking/view_utils/__init__.py,sha256=ABuaZK3UEKHbLjaJv-0e0tovLI0xKG6wrxgElloTeZ4,87
|
|
3383
3383
|
edc_visit_tracking/view_utils/related_visit_button.py,sha256=D0y6mxtY8mW5sQsczyC-GEl2rzc_n5cgTVCTKF-tdIQ,3385
|
|
3384
|
-
edc_visit_tracking/visit_sequence.py,sha256=
|
|
3384
|
+
edc_visit_tracking/visit_sequence.py,sha256=ppK53IVuFD1ZcDHSEeP_P1YfqCNSveznf9s_Rqg5CVY,4300
|
|
3385
3385
|
edc_visit_tracking/wsgi.py,sha256=_CGuos4-Wxsv6M7sc_3MnHKbWlGEfqzJDUrO6JUHzIo,179
|
|
3386
3386
|
edc_vitals/__init__.py,sha256=k7pm4XmS32dJU4XRYKHJrzEkA7CuQ75_Jj7nLkvUiDY,117
|
|
3387
3387
|
edc_vitals/apps.py,sha256=AvV-Dwgo6KRe5VhriAP8CYM6OJG6kGh2_1BwQ6Wmc8o,145
|
|
@@ -3406,7 +3406,7 @@ edc_vitals/models/fields/waist_circumference.py,sha256=fZcHFDdEwWLjIVLktKrFCD9UU
|
|
|
3406
3406
|
edc_vitals/models/fields/weight.py,sha256=zo9_9e3Cpu0UqoRbWS-iDkcDo6fK80b1dDQy4x4MyxE,921
|
|
3407
3407
|
edc_vitals/utils.py,sha256=vXid44KUXxeaSyund_y5MNXc5DFJs052_PwUAjszE2k,1384
|
|
3408
3408
|
edc_vitals/validators.py,sha256=vNiElWMs0rRnHRNuVoPLRf0rW_C_0xcfUyep1Y_Si5s,156
|
|
3409
|
-
clinicedc-2.0.
|
|
3410
|
-
clinicedc-2.0.
|
|
3411
|
-
clinicedc-2.0.
|
|
3412
|
-
clinicedc-2.0.
|
|
3409
|
+
clinicedc-2.0.16.dist-info/licenses/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
|
|
3410
|
+
clinicedc-2.0.16.dist-info/WHEEL,sha256=-neZj6nU9KAMg2CnCY6T3w8J53nx1kFGw_9HfoSzM60,79
|
|
3411
|
+
clinicedc-2.0.16.dist-info/METADATA,sha256=yACQMEfCdkmBMoz9yz7R4jaTs-ToDfcahB4QqGBUqII,15899
|
|
3412
|
+
clinicedc-2.0.16.dist-info/RECORD,,
|
|
@@ -35,10 +35,9 @@ def get_stata_labels_from_model(
|
|
|
35
35
|
if suffix:
|
|
36
36
|
if f"{fld.name}_{suffix}" in df.columns:
|
|
37
37
|
labels.update({f"{fld.name}_{suffix}": strip_html(str(fld.verbose_name)[:80])})
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
pass
|
|
38
|
+
elif f"{fld.name}_{suffix}" in df.columns:
|
|
39
|
+
try:
|
|
40
|
+
labels.update({fld.name: strip_html(str(fld.verbose_name)[:80])})
|
|
41
|
+
except AttributeError:
|
|
42
|
+
pass
|
|
44
43
|
return labels
|
edc_analytics/table.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import contextlib
|
|
3
4
|
from datetime import datetime
|
|
4
5
|
from typing import TYPE_CHECKING
|
|
5
6
|
from zoneinfo import ZoneInfo
|
|
@@ -39,7 +40,7 @@ class AppointmentsCreator:
|
|
|
39
40
|
visit_schedule: VisitSchedule | None = None,
|
|
40
41
|
schedule: Schedule | None = None,
|
|
41
42
|
report_datetime: datetime | None = None,
|
|
42
|
-
appointment_model: str = None,
|
|
43
|
+
appointment_model: str | None = None,
|
|
43
44
|
site_id: int | None = None,
|
|
44
45
|
skip_baseline: bool | None = None,
|
|
45
46
|
):
|
|
@@ -103,13 +104,12 @@ class AppointmentsCreator:
|
|
|
103
104
|
else:
|
|
104
105
|
self.delete_appointments_after_timepoint(last_timepoint)
|
|
105
106
|
|
|
106
|
-
|
|
107
|
+
return self.appointment_model_cls.objects.filter(
|
|
107
108
|
subject_identifier=self.subject_identifier,
|
|
108
109
|
site_id=self.site_id,
|
|
109
110
|
visit_schedule_name=self.visit_schedule.name,
|
|
110
111
|
schedule_name=self.schedule.name,
|
|
111
112
|
).order_by("timepoint")
|
|
112
|
-
return appointments
|
|
113
113
|
|
|
114
114
|
def update_or_create_appointment(self, **kwargs) -> Appointment:
|
|
115
115
|
"""Updates or creates an appointment for this subject
|
|
@@ -133,10 +133,8 @@ class AppointmentsCreator:
|
|
|
133
133
|
schedule_name=self.schedule.name,
|
|
134
134
|
)
|
|
135
135
|
for appointment in appointments:
|
|
136
|
-
|
|
136
|
+
with contextlib.suppress(ProtectedError):
|
|
137
137
|
appointment.delete()
|
|
138
|
-
except ProtectedError:
|
|
139
|
-
pass
|
|
140
138
|
|
|
141
139
|
def delete_appointments_after_timepoint(self, last_timepoint) -> None:
|
|
142
140
|
"""Delete appointments after a given timepoint.
|
|
@@ -151,7 +149,5 @@ class AppointmentsCreator:
|
|
|
151
149
|
visit_schedule_name=self.visit_schedule.name,
|
|
152
150
|
schedule_name=self.schedule.name,
|
|
153
151
|
):
|
|
154
|
-
|
|
152
|
+
with contextlib.suppress(ProtectedError):
|
|
155
153
|
appointment.delete()
|
|
156
|
-
except ProtectedError:
|
|
157
|
-
pass
|
edc_dx/diagnoses.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from datetime import date, datetime
|
|
4
|
-
from typing import Dict
|
|
5
4
|
|
|
6
5
|
from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
|
|
6
|
+
|
|
7
7
|
from edc_constants.constants import YES
|
|
8
8
|
from edc_dx_review.utils import (
|
|
9
9
|
get_clinical_review_baseline_model_cls,
|
|
@@ -130,7 +130,7 @@ class Diagnoses:
|
|
|
130
130
|
|
|
131
131
|
def report_datetime_opts(
|
|
132
132
|
self, prefix: str = None, lte: bool = None
|
|
133
|
-
) ->
|
|
133
|
+
) -> dict[str, datetime]:
|
|
134
134
|
opts = {}
|
|
135
135
|
prefix = prefix.lower() or ""
|
|
136
136
|
if self.report_datetime:
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Tuple
|
|
4
|
-
|
|
5
3
|
from django import forms
|
|
6
4
|
from django.conf import settings
|
|
5
|
+
|
|
7
6
|
from edc_dx_review.utils import raise_if_clinical_review_does_not_exist
|
|
8
7
|
from edc_form_validators import INVALID_ERROR, FormValidator
|
|
9
8
|
from edc_utils import convert_php_dateformat
|
|
@@ -13,7 +12,7 @@ from ..diagnoses import ClinicalReviewBaselineRequired, Diagnoses, InitialReview
|
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
class ResultFormValidatorMixin(FormValidator):
|
|
16
|
-
dx:
|
|
15
|
+
dx: tuple[str, str] # e.g. (HIV, "HIV Infection")
|
|
17
16
|
|
|
18
17
|
def clean(self):
|
|
19
18
|
raise_if_baseline(self.cleaned_data.get("subject_visit"))
|
|
@@ -50,16 +49,15 @@ class ResultFormValidatorMixin(FormValidator):
|
|
|
50
49
|
raise forms.ValidationError(
|
|
51
50
|
f"A {dx_msg_label} diagnosis has not been reported for this subject."
|
|
52
51
|
)
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
"
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
)
|
|
52
|
+
if dx_date > self.cleaned_data.get(drawn_date_fld):
|
|
53
|
+
formatted_date = dx_date.strftime(
|
|
54
|
+
convert_php_dateformat(settings.SHORT_DATE_FORMAT)
|
|
55
|
+
)
|
|
56
|
+
raise forms.ValidationError(
|
|
57
|
+
{
|
|
58
|
+
"drawn_date": (
|
|
59
|
+
"Invalid. Subject was diagnosed with "
|
|
60
|
+
f"{dx_msg_label} on {formatted_date}."
|
|
61
|
+
)
|
|
62
|
+
}
|
|
63
|
+
)
|
edc_dx_review/medical_date.py
CHANGED
|
@@ -4,6 +4,7 @@ from datetime import date, datetime
|
|
|
4
4
|
|
|
5
5
|
from django.conf import settings
|
|
6
6
|
from django.core.exceptions import ValidationError
|
|
7
|
+
|
|
7
8
|
from edc_constants.constants import GT, GTE, LT, LTE
|
|
8
9
|
from edc_model import estimated_date_from_ago
|
|
9
10
|
from edc_utils import convert_php_dateformat
|
|
@@ -23,7 +24,7 @@ class MedicalDateError(ValidationError):
|
|
|
23
24
|
|
|
24
25
|
@property
|
|
25
26
|
def message_dict(self):
|
|
26
|
-
|
|
27
|
+
self.error_dict
|
|
27
28
|
return {k: v[0] for k, v in dict(self).items()}
|
|
28
29
|
|
|
29
30
|
|