clinicedc 2.0.40__py3-none-any.whl → 2.0.42__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.

Files changed (347) hide show
  1. {clinicedc-2.0.40.dist-info → clinicedc-2.0.42.dist-info}/METADATA +3 -1
  2. {clinicedc-2.0.40.dist-info → clinicedc-2.0.42.dist-info}/RECORD +338 -344
  3. edc_action_item/action.py +1 -1
  4. edc_action_item/action_item_notification.py +1 -1
  5. edc_action_item/choices.py +1 -1
  6. edc_action_item/data_fixers.py +1 -2
  7. edc_action_item/delete_action_item.py +1 -2
  8. edc_action_item/forms/action_item_form.py +1 -1
  9. edc_action_item/models/action_item.py +1 -1
  10. edc_action_item/models/action_type.py +1 -1
  11. edc_action_item/models/signals.py +1 -1
  12. edc_action_item/templatetags/action_item_extras.py +1 -1
  13. edc_action_item/utils.py +1 -2
  14. edc_action_item/view_mixins/action_item_view_mixin.py +1 -1
  15. edc_adherence/choices.py +1 -1
  16. edc_adherence/form_validator_mixin.py +1 -2
  17. edc_adherence/list_data.py +1 -1
  18. edc_adherence/model_mixins.py +1 -1
  19. edc_adverse_event/action_items/ae_followup_action.py +9 -9
  20. edc_adverse_event/action_items/ae_initial_action.py +12 -16
  21. edc_adverse_event/action_items/ae_susar_action.py +2 -1
  22. edc_adverse_event/action_items/ae_tmg_action.py +6 -4
  23. edc_adverse_event/action_items/death_report_action.py +7 -7
  24. edc_adverse_event/action_items/death_report_tmg_action.py +2 -1
  25. edc_adverse_event/action_items/death_report_tmg_second_action.py +2 -1
  26. edc_adverse_event/action_items/hospitalization_action.py +2 -1
  27. edc_adverse_event/auths.py +3 -1
  28. edc_adverse_event/choices.py +13 -6
  29. edc_adverse_event/constants.py +1 -23
  30. edc_adverse_event/form_validator_mixins/death_report_form_validator.py +1 -1
  31. edc_adverse_event/form_validator_mixins/requires_death_report_form_validator_mixin.py +1 -2
  32. edc_adverse_event/form_validators/ae_followup.py +2 -3
  33. edc_adverse_event/form_validators/ae_initial.py +2 -1
  34. edc_adverse_event/form_validators/ae_tmg.py +2 -1
  35. edc_adverse_event/form_validators/death_report_tmg.py +1 -1
  36. edc_adverse_event/form_validators/hospitalization.py +2 -1
  37. edc_adverse_event/list_data.py +1 -1
  38. edc_adverse_event/model_mixins/ae_followup/ae_followup_fields_model_mixin.py +1 -1
  39. edc_adverse_event/model_mixins/ae_followup/ae_followup_methods_model_mixin.py +1 -2
  40. edc_adverse_event/model_mixins/ae_initial/ae_initial_fields_model_mixin.py +1 -1
  41. edc_adverse_event/model_mixins/ae_initial/ae_initial_susar_model_mixin.py +2 -2
  42. edc_adverse_event/model_mixins/ae_susar/ae_susar_methods_model_mixin.py +1 -2
  43. edc_adverse_event/model_mixins/ae_tmg/ae_tmg_fields_model_mixin.py +1 -1
  44. edc_adverse_event/model_mixins/hospitaization/hospitalization_model_mixin.py +1 -1
  45. edc_adverse_event/modeladmin_mixins/ae_initial_admin_mixin.py +1 -1
  46. edc_adverse_event/modeladmin_mixins/ae_tmg_admin_mixin.py +1 -1
  47. edc_adverse_event/modeladmin_mixins/death_report_admin_mixin.py +1 -1
  48. edc_adverse_event/modeladmin_mixins/death_report_tmg_admin_mixin.py +1 -1
  49. edc_adverse_event/modelform_mixins/ae_followup_modelform_mixin.py +1 -2
  50. edc_adverse_event/modelform_mixins/ae_initial_modelform_mixin.py +1 -2
  51. edc_adverse_event/models/signals.py +2 -2
  52. edc_adverse_event/pdf_reports/ae_pdf_report.py +3 -2
  53. edc_adverse_event/pdf_reports/death_pdf_report.py +3 -2
  54. edc_adverse_event/templatetags/edc_adverse_event_extras.py +2 -3
  55. edc_adverse_event/urls.py +1 -0
  56. edc_adverse_event/utils.py +11 -14
  57. edc_adverse_event/view_mixins/ae/ae_listboard_view_mixin.py +3 -3
  58. edc_adverse_event/view_mixins/ae/death_report_listboard_view_mixin.py +1 -1
  59. edc_adverse_event/view_mixins/tmg/tmg_ae_listboard_view_mixin.py +2 -1
  60. edc_adverse_event/views/home_view.py +1 -0
  61. edc_adverse_event/views/tmg/home_view.py +1 -1
  62. edc_adverse_event/views/tmg/status_listboards.py +1 -1
  63. edc_analytics/custom_tables/age.py +1 -2
  64. edc_analytics/custom_tables/art.py +1 -2
  65. edc_analytics/custom_tables/bmi.py +1 -3
  66. edc_analytics/custom_tables/bp.py +1 -3
  67. edc_analytics/custom_tables/fasting.py +1 -2
  68. edc_analytics/custom_tables/fbg.py +1 -2
  69. edc_analytics/custom_tables/fbg_ogtt.py +1 -2
  70. edc_analytics/custom_tables/hba1c.py +1 -2
  71. edc_analytics/custom_tables/ogtt.py +1 -2
  72. edc_analytics/custom_tables/waist.py +1 -2
  73. edc_analytics/row/row_statistics_with_gender.py +1 -2
  74. edc_analytics/table.py +1 -2
  75. edc_appointment/admin/actions.py +1 -1
  76. edc_appointment/admin/appointment_admin.py +1 -1
  77. edc_appointment/appointment_reason_updater.py +1 -1
  78. edc_appointment/choices.py +1 -2
  79. edc_appointment/form_validator_mixins/next_appointment_crf_form_validator_mixin.py +1 -1
  80. edc_appointment/list_data.py +2 -3
  81. edc_appointment/model_mixins/missed_appointment_model_mixin.py +1 -1
  82. edc_appointment/model_mixins/next_appointment_crf_model_mixin.py +1 -2
  83. edc_appointment/modeladmin_mixins/next_appointment_crf_modeladmin_mixin.py +1 -1
  84. edc_appointment/models/signals.py +1 -1
  85. edc_appointment/utils.py +4 -2
  86. edc_auth/constants.py +3 -0
  87. edc_consent/choices.py +1 -1
  88. edc_consent/consent_definition.py +1 -1
  89. edc_consent/consent_definition_extension.py +1 -1
  90. edc_consent/field_mixins/citizen_fields_mixin.py +3 -3
  91. edc_consent/model_mixins/consent_model_mixin.py +1 -1
  92. edc_consent/modelform_mixins/consent_modelform_mixin/consent_modelform_validation_mixin.py +1 -1
  93. edc_consent/modelform_mixins/consent_modelform_mixin/review_fields_modelform_mixin.py +1 -2
  94. edc_consent/validators.py +5 -10
  95. edc_constants/__init__.py +0 -3
  96. edc_constants/choices.py +2 -3
  97. edc_constants/context_processor.py +2 -3
  98. edc_constants/utils.py +2 -3
  99. edc_crf/model_mixins/crf_status_model_mixin.py +1 -1
  100. edc_crf/model_mixins/singleton_crf_model_mixin.py +0 -1
  101. edc_crf/update_crf_status_command.py +1 -2
  102. edc_crf/update_crf_status_for_instance.py +1 -2
  103. edc_dashboard/url_config.py +1 -2
  104. edc_dashboard/views/administration_view.py +1 -0
  105. edc_data_manager/action_items.py +7 -7
  106. edc_data_manager/admin/actions.py +1 -1
  107. edc_data_manager/admin/data_query_admin.py +10 -10
  108. edc_data_manager/choices.py +1 -1
  109. edc_data_manager/forms/data_query.py +1 -1
  110. edc_data_manager/handlers/handlers.py +1 -1
  111. edc_data_manager/migrations/0043_alter_historicalqueryrule_comment_and_more.py +51 -0
  112. edc_data_manager/models/data_query.py +1 -1
  113. edc_data_manager/models/model_mixins.py +1 -2
  114. edc_data_manager/models/query_rule.py +1 -1
  115. edc_data_manager/view_mixins/data_manager_view_mixin.py +1 -1
  116. edc_document_status/model_mixins.py +1 -1
  117. edc_document_status/models/signals.py +1 -2
  118. edc_dx/diagnoses.py +2 -3
  119. edc_dx/form_validators/diagnosis_form_validator_mixin.py +1 -2
  120. edc_dx_review/choices.py +1 -1
  121. edc_dx_review/form_validator_mixins/clinical_review_followup_form_validator_mixin.py +2 -1
  122. edc_dx_review/list_data.py +1 -1
  123. edc_dx_review/medical_date.py +1 -1
  124. edc_dx_review/model_mixins/clinical_review_baseline_model_mixin.py +1 -1
  125. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_chol_model_mixin.py +1 -1
  126. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_dm_model_mixin.py +1 -1
  127. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_hiv_model_mixin.py +1 -1
  128. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_htn_model_mixin.py +1 -1
  129. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_model_mixin.py +1 -1
  130. edc_dx_review/model_mixins/factory/baseline_review_model_mixin_factory.py +1 -1
  131. edc_dx_review/model_mixins/factory/calculate_date.py +1 -1
  132. edc_dx_review/model_mixins/factory/dx_initial_review_model_mixin_factory.py +1 -1
  133. edc_dx_review/model_mixins/factory/followup_review_model_mixin_factory.py +1 -1
  134. edc_dx_review/model_mixins/factory/rx_initial_review_model_mixin_factory.py +1 -1
  135. edc_dx_review/model_mixins/followup_review/followup_review_model_mixin.py +1 -1
  136. edc_dx_review/model_mixins/followup_review/hiv_followup_review_model_mixin.py +1 -1
  137. edc_dx_review/model_mixins/initial_review/chol_initial_review_model_mixin.py +1 -1
  138. edc_dx_review/model_mixins/initial_review/hiv_initial_model_mixins.py +2 -3
  139. edc_dx_review/model_mixins/initial_review/ncd_initial_review_model_mixin.py +1 -1
  140. edc_dx_review/utils.py +1 -1
  141. edc_egfr/__init__.py +0 -1
  142. edc_egfr/egfr.py +23 -15
  143. edc_egfr/form_validator_mixins/egfr_form_validator_mixins.py +30 -25
  144. edc_egfr/model_mixins/egfr_drop_notification_model_mixin.py +8 -2
  145. edc_egfr/model_mixins/egfr_model_mixin.py +2 -2
  146. edc_export/management/commands/import_receipts.py +1 -2
  147. edc_export/model_exporter/object_history_helpers.py +1 -2
  148. edc_export/models/object_history.py +1 -1
  149. edc_export/models/upload_export_receipt_file.py +1 -1
  150. edc_facility/list_data.py +1 -1
  151. edc_fieldsets/fieldsets_modeladmin_mixin.py +1 -2
  152. edc_form_validators/applicable_field_validator.py +1 -1
  153. edc_form_validators/date_validator.py +1 -1
  154. edc_form_validators/many_to_many_field_validator.py +1 -2
  155. edc_form_validators/other_specify_field_validator.py +1 -2
  156. edc_form_validators/required_field_validator.py +1 -2
  157. edc_glucose/form_validators/fasting_form_validator.py +1 -1
  158. edc_glucose/form_validators/glucose_form_validator.py +3 -3
  159. edc_glucose/form_validators/glucose_form_validator_mixin.py +1 -2
  160. edc_glucose/form_validators/ogtt_form_validator_mixin.py +1 -2
  161. edc_glucose/model_mixin_factories/fasting_model_mixin_factory.py +1 -1
  162. edc_glucose/model_mixin_factories/fbg_model_mixin_factory.py +1 -2
  163. edc_glucose/model_mixin_factories/glucose_model_mixin_factory.py +1 -1
  164. edc_glucose/model_mixin_factories/ogtt_model_mixin_factory.py +1 -2
  165. edc_glucose/model_mixins/hba1c_model_mixin.py +1 -3
  166. edc_glucose/utils.py +2 -2
  167. edc_identifier/model_mixins.py +1 -2
  168. edc_identifier/models.py +1 -1
  169. edc_identifier/simple_identifier.py +1 -2
  170. edc_lab/admin/modeladmin_mixins.py +1 -1
  171. edc_lab/choices.py +7 -10
  172. edc_lab/constants.py +0 -2
  173. edc_lab/form_validators/crf_requisition_form_validator_mixin.py +1 -0
  174. edc_lab/form_validators/requisition_form_validator_mixin.py +1 -1
  175. edc_lab/lab/specimen.py +1 -2
  176. edc_lab/model_mixins/requisition/requisition_identifier_mixin.py +1 -1
  177. edc_lab/model_mixins/requisition/requisition_model_mixin.py +1 -1
  178. edc_lab/model_mixins/shipping/manifest_model_mixin.py +1 -1
  179. edc_lab/model_mixins/shipping/verify_model_mixin.py +1 -2
  180. edc_lab/models/box.py +1 -1
  181. edc_lab_dashboard/middleware.py +1 -0
  182. edc_lab_dashboard/urls.py +1 -0
  183. edc_lab_dashboard/view_mixins/form_action_view_mixin.py +1 -0
  184. edc_lab_dashboard/view_mixins/process_requisition_view_mixin.py +1 -1
  185. edc_lab_dashboard/views/action_views/manage_box_item_view.py +1 -0
  186. edc_lab_dashboard/views/action_views/receive_view.py +1 -1
  187. edc_lab_dashboard/views/listboard_views/manage_box_listboard_view.py +1 -0
  188. edc_lab_dashboard/views/listboard_views/pack_listboard_view.py +1 -1
  189. edc_lab_dashboard/views/listboard_views/process_listboard_view.py +2 -1
  190. edc_lab_dashboard/views/listboard_views/receive_listboard_view.py +2 -1
  191. edc_lab_dashboard/views/listboard_views/requisition_listboard_view.py +1 -2
  192. edc_lab_dashboard/views/listboard_views/verify_box_listboard_view.py +1 -0
  193. edc_lab_results/action_items.py +1 -1
  194. edc_lab_results/form_validator_mixins/blood_results_fbg_form_validator_mixin.py +1 -1
  195. edc_lab_results/form_validator_mixins/blood_results_form_validator_mixin.py +2 -1
  196. edc_lab_results/model_mixin_factories/field_attrs.py +1 -1
  197. edc_lab_results/model_mixins/electrolytes_model_mixins.py +2 -2
  198. edc_lab_results/model_mixins/fbc_model_mixins.py +9 -8
  199. edc_lab_results/model_mixins/fbg_model_mixin.py +2 -7
  200. edc_lab_results/model_mixins/glucose_model_mixin.py +2 -7
  201. edc_lab_results/model_mixins/insulin_model_mixin.py +2 -1
  202. edc_lab_results/model_mixins/lft_model_mixins.py +7 -6
  203. edc_lab_results/model_mixins/lipid_model_mixins.py +1 -2
  204. edc_lab_results/model_mixins/proteinuria_model_mixin.py +1 -2
  205. edc_lab_results/model_mixins/rft_model_mixins.py +5 -3
  206. edc_listboard/views/screen/screening_listboard_view.py +1 -1
  207. edc_locator/action_items.py +2 -1
  208. edc_locator/forms/subject_locator_form_validator.py +1 -1
  209. edc_locator/modeladmin_mixins.py +1 -1
  210. edc_ltfu/action_items.py +2 -1
  211. edc_ltfu/choices.py +1 -1
  212. edc_ltfu/constants.py +0 -2
  213. edc_ltfu/forms/ltfu_form_validator.py +2 -1
  214. edc_ltfu/forms/ltfu_form_validator_mixin.py +1 -1
  215. edc_ltfu/modelform_mixins.py +2 -5
  216. edc_metadata/admin/modeladmin_mixins.py +4 -4
  217. edc_model/choices.py +1 -1
  218. edc_model/models/fields/date_estimated.py +1 -1
  219. edc_model_admin/context_processors.py +1 -1
  220. edc_model_admin/list_filters/future_date_list_filter.py +6 -7
  221. edc_model_admin/list_filters/list_field_with_other_list_filter.py +1 -1
  222. edc_model_admin/list_filters/past_date_list_filter.py +6 -7
  223. edc_model_admin/mixins/model_admin_redirect_on_delete_mixin.py +1 -0
  224. edc_model_admin/templatetags/edc_admin_modify.py +1 -1
  225. edc_model_fields/fields/date_estimated.py +1 -1
  226. edc_model_to_dataframe/model_to_dataframe.py +1 -1
  227. edc_navbar/navbar_item.py +1 -0
  228. edc_navbar/system_checks.py +3 -0
  229. edc_offstudy/action_items.py +2 -1
  230. edc_offstudy/choices.py +2 -1
  231. edc_pdf_reports/crf_pdf_report.py +9 -7
  232. edc_pdutils/dataframes/get_subject_consent.py +1 -2
  233. edc_pdutils/dataframes/get_subject_visit.py +1 -11
  234. edc_pdutils/helper.py +1 -2
  235. edc_pdutils/mappings.py +1 -1
  236. edc_pdutils/tables/crf.py +1 -2
  237. edc_pdutils/tables/requisition.py +1 -2
  238. edc_pdutils/utils/__init__.py +1 -0
  239. edc_pdutils/utils/convert_visit_code_to_float.py +8 -0
  240. edc_pdutils/utils/decrypt.py +5 -4
  241. edc_pdutils/utils/missing_subject_identifiers.py +5 -4
  242. edc_pharmacy/action_items.py +2 -1
  243. edc_pharmacy/admin/list_filters.py +1 -1
  244. edc_pharmacy/admin/stock/allocation_admin.py +1 -1
  245. edc_pharmacy/admin/stock/order_item_admin.py +1 -1
  246. edc_pharmacy/admin/stock/stock_request_admin.py +1 -1
  247. edc_pharmacy/admin/stock/stock_transfer_admin.py +1 -1
  248. edc_pharmacy/admin/stock/stock_transfer_item_admin.py +1 -1
  249. edc_pharmacy/choices.py +1 -2
  250. edc_pharmacy/form_validators/crf/study_medication_form_validator.py +1 -1
  251. edc_pharmacy/list_data.py +1 -1
  252. edc_pharmacy/model_mixins/study_medication_crf_model_mixin.py +1 -1
  253. edc_pharmacy/model_mixins/study_medication_refill_model_mixin.py +1 -1
  254. edc_pharmacy/models/model_mixins.py +1 -2
  255. edc_pharmacy/models/prescription/rx.py +1 -1
  256. edc_pharmacy/models/signals.py +1 -1
  257. edc_pharmacy/models/stock/order.py +1 -1
  258. edc_pharmacy/models/stock/order_item.py +1 -2
  259. edc_pharmacy/models/stock/stock_request.py +1 -1
  260. edc_pharmacy/views/confirm_stock_from_queryset_view.py +2 -1
  261. edc_pharmacy/views/confirmation_at_site_view.py +1 -1
  262. edc_prn/models.py +1 -2
  263. edc_protocol_incident/action_items.py +2 -1
  264. edc_protocol_incident/choices.py +1 -1
  265. edc_protocol_incident/form_validators/mixins.py +2 -1
  266. edc_protocol_incident/form_validators/protocol_deviation_violation_form_validator.py +2 -1
  267. edc_protocol_incident/form_validators/protocol_incident_form_validator.py +2 -1
  268. edc_protocol_incident/list_data.py +1 -1
  269. edc_protocol_incident/model_mixins/protocol_deviation_violation_model_mixin.py +1 -1
  270. edc_protocol_incident/modeladmin_mixins.py +1 -1
  271. edc_qareports/choices.py +1 -1
  272. edc_qareports/migrations/0017_auto_20240816_0256.py +1 -2
  273. edc_qareports/modeladmin_mixins/list_filters.py +1 -2
  274. edc_qareports/modeladmin_mixins/qa_report_modeladmin_mixin.py +1 -1
  275. edc_qareports/sql_generator/requisition_subquery.py +1 -1
  276. edc_refusal/forms.py +2 -1
  277. edc_refusal/list_data.py +1 -1
  278. edc_registration/model_mixins/updates_or_creates_registered_subject_model_mixin.py +1 -1
  279. edc_registration/models/registered_subject.py +1 -1
  280. edc_reportable/__init__.py +0 -35
  281. edc_reportable/choices.py +8 -3
  282. edc_reportable/constants.py +0 -7
  283. edc_reportable/data/__init__.py +0 -1
  284. edc_reportable/data/grading_data/ctcae_v5.py +1 -2
  285. edc_reportable/data/grading_data/daids_july_2017.py +7 -6
  286. edc_reportable/data/normal_data/africa.py +6 -5
  287. edc_reportable/exceptions.py +0 -4
  288. edc_reportable/forms/reportables_form_validator_mixin.py +2 -1
  289. edc_reportable/formula.py +1 -1
  290. edc_reportable/post_migrate_signals.py +1 -1
  291. edc_reportable/reference_range_evaluator.py +8 -2
  292. edc_reportable/units.py +2 -23
  293. edc_reportable/utils/__init__.py +1 -1
  294. edc_reportable/utils/get_mw.py +20 -0
  295. edc_reportable/utils/get_normal_data_or_raise.py +1 -1
  296. edc_review_dashboard/auths.py +1 -1
  297. edc_review_dashboard/middleware.py +1 -0
  298. edc_review_dashboard/urls.py +1 -0
  299. edc_review_dashboard/views/subject_review_listboard_view.py +1 -0
  300. edc_screening/choices.py +1 -1
  301. edc_screening/gender_evaluator.py +1 -1
  302. edc_screening/model_mixins/screening_fields_model_mixin.py +1 -1
  303. edc_screening/modelform_mixins.py +1 -1
  304. edc_screening/screening_eligibility.py +1 -2
  305. edc_sites/models/site_profile.py +1 -2
  306. edc_sites/site.py +1 -1
  307. edc_subject_dashboard/requisition_labels.py +1 -1
  308. edc_subject_dashboard/requisition_report.py +1 -1
  309. edc_subject_dashboard/requisition_verifier.py +1 -1
  310. edc_subject_dashboard/urls.py +1 -0
  311. edc_subject_dashboard/view_utils/go_to_forms_button.py +1 -1
  312. edc_subject_dashboard/views/requisition_print_actions_view.py +1 -1
  313. edc_subject_dashboard/views/subject_dashboard_view.py +1 -0
  314. edc_transfer/action_items.py +2 -1
  315. edc_transfer/choices.py +1 -1
  316. edc_transfer/form_validators.py +1 -1
  317. edc_transfer/list_data.py +1 -1
  318. edc_unblinding/action_items.py +2 -1
  319. edc_unblinding/models/unblinding_request.py +1 -1
  320. edc_unblinding/models/unblinding_review.py +1 -1
  321. edc_visit_schedule/action_items.py +2 -1
  322. edc_visit_schedule/admin/subject_schedule_history_admin.py +1 -0
  323. edc_visit_tracking/action_items.py +2 -1
  324. edc_visit_tracking/choices.py +1 -1
  325. edc_visit_tracking/form_validators/visit_form_validator.py +1 -1
  326. edc_visit_tracking/form_validators/visit_missed_form_validator.py +2 -1
  327. edc_visit_tracking/managers.py +1 -2
  328. edc_visit_tracking/model_mixins/subject_visit_missed_model_mixin.py +1 -1
  329. edc_visit_tracking/model_mixins/visit_model_mixin/caretaker_fields_mixin.py +1 -1
  330. edc_visit_tracking/model_mixins/visit_model_mixin/visit_model_fields_mixin.py +1 -1
  331. edc_visit_tracking/model_mixins/visit_model_mixin/visit_model_mixin.py +1 -1
  332. edc_visit_tracking/modeladmin_mixins/crf_model_admin_mixin.py +2 -1
  333. edc_visit_tracking/modeladmin_mixins/visit_model_admin_mixin.py +1 -1
  334. edc_visit_tracking/models/signals.py +1 -1
  335. edc_visit_tracking/view_utils/related_visit_button.py +1 -1
  336. edc_vitals/form_validators/blood_pressure_form_validator_mixin.py +1 -2
  337. edc_constants/constants.py +0 -250
  338. edc_constants/disease_constants.py +0 -22
  339. edc_egfr/calculators/__init__.py +0 -4
  340. edc_egfr/calculators/base_egrfr.py +0 -56
  341. edc_egfr/calculators/egfr_ckd_epi.py +0 -68
  342. edc_egfr/calculators/egfr_cockcroft_gault.py +0 -62
  343. edc_egfr/calculators/percent_change.py +0 -7
  344. edc_reportable/data/molecular_weights.py +0 -11
  345. edc_reportable/utils/convert_units.py +0 -163
  346. {clinicedc-2.0.40.dist-info → clinicedc-2.0.42.dist-info}/WHEEL +0 -0
  347. {clinicedc-2.0.40.dist-info → clinicedc-2.0.42.dist-info}/licenses/LICENSE +0 -0
@@ -4,10 +4,10 @@ from dataclasses import KW_ONLY, dataclass, field
4
4
  from datetime import datetime
5
5
  from typing import TYPE_CHECKING
6
6
 
7
+ from clinicedc_constants import YES
7
8
  from django.apps import apps as django_apps
8
9
  from django.core.exceptions import ObjectDoesNotExist
9
10
 
10
- from edc_constants.constants import YES
11
11
  from edc_protocol.research_protocol_config import ResearchProtocolConfig
12
12
  from edc_sites import site_sites
13
13
  from edc_utils import formatted_date
@@ -1,7 +1,7 @@
1
+ from clinicedc_constants import NOT_APPLICABLE
1
2
  from django.db import models
2
3
 
3
4
  from edc_constants.choices import YES_NO, YES_NO_NA
4
- from edc_constants.constants import NOT_APPLICABLE
5
5
 
6
6
 
7
7
  class CitizenFieldsMixin(models.Model):
@@ -13,7 +13,7 @@ class CitizenFieldsMixin(models.Model):
13
13
 
14
14
  legal_marriage = models.CharField(
15
15
  verbose_name=(
16
- "If not a citizen, is the participant legally " "married to a Botswana citizen?"
16
+ "If not a citizen, is the participant legally married to a Botswana citizen?"
17
17
  ),
18
18
  max_length=3,
19
19
  choices=YES_NO_NA,
@@ -25,7 +25,7 @@ class CitizenFieldsMixin(models.Model):
25
25
 
26
26
  marriage_certificate = models.CharField(
27
27
  verbose_name=(
28
- "[Interviewer] Has the participant produced " "the marriage certificate as proof? "
28
+ "[Interviewer] Has the participant produced the marriage certificate as proof? "
29
29
  ),
30
30
  max_length=3,
31
31
  choices=YES_NO_NA,
@@ -1,10 +1,10 @@
1
1
  from uuid import uuid4
2
2
 
3
+ from clinicedc_constants import OPEN
3
4
  from django.db import models
4
5
  from django.db.models import UniqueConstraint
5
6
  from django_crypto_fields.fields import EncryptedTextField
6
7
 
7
- from edc_constants.constants import OPEN
8
8
  from edc_data_manager.get_data_queries import get_data_queries
9
9
  from edc_model.validators import datetime_not_future
10
10
  from edc_protocol.validators import datetime_not_before_study_start
@@ -3,10 +3,10 @@ from __future__ import annotations
3
3
  from datetime import datetime
4
4
  from typing import TYPE_CHECKING, Any
5
5
 
6
+ from clinicedc_constants import NO, YES
6
7
  from dateutil.relativedelta import relativedelta
7
8
  from django import forms
8
9
 
9
- from edc_constants.constants import NO, YES
10
10
  from edc_model_form.utils import get_field_or_raise
11
11
  from edc_utils.age import AgeValueError, age, formatted_age
12
12
 
@@ -1,7 +1,6 @@
1
+ from clinicedc_constants import NO, YES
1
2
  from django import forms
2
3
 
3
- from edc_constants.constants import NO, YES
4
-
5
4
  ___all__ = ["ReviewFieldsModelFormMixin"]
6
5
 
7
6
 
edc_consent/validators.py CHANGED
@@ -1,10 +1,9 @@
1
1
  import re
2
2
 
3
+ from clinicedc_constants import DECLINED, MALE, NEG, NO, POS, UNKNOWN, YES
3
4
  from django.core.exceptions import ValidationError
4
5
  from django.utils.deconstruct import deconstructible
5
6
 
6
- from edc_constants.constants import DECLINED, MALE, NEG, NO, POS, UNKNOWN, YES
7
-
8
7
 
9
8
  @deconstructible
10
9
  class SubjectTypeValidator:
@@ -14,7 +13,7 @@ class SubjectTypeValidator:
14
13
  def __call__(self, value):
15
14
  if value not in self.subject_types:
16
15
  raise ValidationError(
17
- "Undefined subject type. Expected one of '{subject_types}'. " "Got '{value}'.",
16
+ "Undefined subject type. Expected one of '{subject_types}'. Got '{value}'.",
18
17
  params={
19
18
  "subject_types": "' or '".join(self.subject_types),
20
19
  "value": value,
@@ -74,20 +73,16 @@ def eligible_if_male(value):
74
73
 
75
74
  def eligible_if_negative(value):
76
75
  if value != NEG:
77
- raise ValidationError(
78
- "Participant must be HIV Negative." "Participant is not eligible."
79
- )
76
+ raise ValidationError("Participant must be HIV Negative.Participant is not eligible.")
80
77
 
81
78
 
82
79
  def eligible_if_positive(value):
83
80
  if value != POS:
84
- raise ValidationError(
85
- "Participant must be HIV Positive." "Participant is not eligible."
86
- )
81
+ raise ValidationError("Participant must be HIV Positive.Participant is not eligible.")
87
82
 
88
83
 
89
84
  def eligible_not_positive(value):
90
85
  if value == POS:
91
86
  raise ValidationError(
92
- "Participant must be HIV Negative / Unknown." "Participant is not eligible."
87
+ "Participant must be HIV Negative / Unknown.Participant is not eligible."
93
88
  )
edc_constants/__init__.py CHANGED
@@ -1,3 +0,0 @@
1
- # from importlib.metadata import version
2
- #
3
- # __version__ = version("edc_constants")
edc_constants/choices.py CHANGED
@@ -1,6 +1,4 @@
1
- from django.utils.translation import gettext_lazy as _
2
-
3
- from .constants import (
1
+ from clinicedc_constants import (
4
2
  ABNORMAL,
5
3
  ABSENT,
6
4
  AFTERNOON,
@@ -68,6 +66,7 @@ from .constants import (
68
66
  WEEKENDS,
69
67
  YES,
70
68
  )
69
+ from django.utils.translation import gettext_lazy as _
71
70
 
72
71
  ACU_EST = (
73
72
  ("Acute", _("Acute")),
@@ -1,6 +1,4 @@
1
- from django.conf import settings
2
-
3
- from .constants import (
1
+ from clinicedc_constants import (
4
2
  ABNORMAL,
5
3
  CANCELLED,
6
4
  CLOSED,
@@ -20,6 +18,7 @@ from .constants import (
20
18
  UNKNOWN,
21
19
  YES,
22
20
  )
21
+ from django.conf import settings
23
22
 
24
23
 
25
24
  def constants(request) -> dict:
edc_constants/utils.py CHANGED
@@ -1,4 +1,4 @@
1
- from .constants import QUESTION_RETIRED
1
+ from clinicedc_constants import QUESTION_RETIRED
2
2
 
3
3
 
4
4
  def get_display(choices, label) -> str | None:
@@ -13,5 +13,4 @@ def get_display(choices, label) -> str | None:
13
13
  def append_question_retired_choice(choices) -> tuple[tuple[str, str], ...]:
14
14
  choices = list(choices)
15
15
  choices.append((QUESTION_RETIRED, QUESTION_RETIRED))
16
- choices = tuple(choices)
17
- return choices
16
+ return tuple(choices)
@@ -1,9 +1,9 @@
1
+ from clinicedc_constants import INCOMPLETE
1
2
  from django.conf import settings
2
3
  from django.db import models
3
4
  from django.utils.translation import gettext_lazy as _
4
5
 
5
6
  from edc_constants.choices import DOCUMENT_STATUS
6
- from edc_constants.constants import INCOMPLETE
7
7
 
8
8
  from ..update_crf_status_for_instance import update_crf_status_for_instance
9
9
 
@@ -1,7 +1,6 @@
1
1
  from django.db import models
2
2
 
3
3
 
4
-
5
4
  class SingletonCrfModelMixin(models.Model):
6
5
  """Enforces one record per subject.
7
6
 
@@ -1,7 +1,6 @@
1
+ from clinicedc_constants import INCOMPLETE
1
2
  from django.apps import apps as django_apps
2
3
 
3
- from edc_constants.constants import INCOMPLETE
4
-
5
4
  from .model_mixins import CrfStatusModelMixin
6
5
  from .update_crf_status_for_instance import update_crf_status_for_instance
7
6
 
@@ -1,10 +1,9 @@
1
1
  from typing import Any
2
2
 
3
+ from clinicedc_constants import COMPLETE, INCOMPLETE
3
4
  from django.apps import apps as django_apps
4
5
  from django.core.exceptions import ObjectDoesNotExist
5
6
 
6
- from edc_constants.constants import COMPLETE, INCOMPLETE
7
-
8
7
 
9
8
  def update_crf_status_for_instance(instance: Any) -> None:
10
9
  """Only works for CRFs, e.g. have related_visit."""
@@ -2,10 +2,9 @@ from __future__ import annotations
2
2
 
3
3
  from typing import TYPE_CHECKING
4
4
 
5
+ from clinicedc_constants import UUID_PATTERN
5
6
  from django.urls.conf import re_path
6
7
 
7
- from edc_constants.constants import UUID_PATTERN
8
-
9
8
  from .url_names import url_names
10
9
 
11
10
  if TYPE_CHECKING:
@@ -1,5 +1,6 @@
1
1
  from django.conf import settings
2
2
  from django.views.generic import TemplateView
3
+
3
4
  from edc_navbar import NavbarViewMixin
4
5
 
5
6
  from ..view_mixins import AdministrationViewMixin, EdcViewMixin
@@ -1,10 +1,4 @@
1
- from django.conf import settings
2
- from django.template.loader import render_to_string
3
- from django.utils import timezone
4
-
5
- from edc_action_item.action import Action
6
- from edc_action_item.site_action_items import site_action_items
7
- from edc_constants.constants import (
1
+ from clinicedc_constants import (
8
2
  CLOSED,
9
3
  FEEDBACK,
10
4
  HIGH_PRIORITY,
@@ -12,6 +6,12 @@ from edc_constants.constants import (
12
6
  NORMAL,
13
7
  RESOLVED,
14
8
  )
9
+ from django.conf import settings
10
+ from django.template.loader import render_to_string
11
+ from django.utils import timezone
12
+
13
+ from edc_action_item.action import Action
14
+ from edc_action_item.site_action_items import site_action_items
15
15
 
16
16
  from .constants import CLOSED_WITH_ACTION
17
17
 
@@ -1,5 +1,6 @@
1
1
  from uuid import uuid4
2
2
 
3
+ from clinicedc_constants import CLOSED, OPEN
3
4
  from django.conf import settings
4
5
  from django.contrib import admin, messages
5
6
  from django.core.exceptions import ObjectDoesNotExist
@@ -8,7 +9,6 @@ from django.utils import timezone
8
9
  from django.utils.html import format_html
9
10
  from django.utils.safestring import mark_safe
10
11
 
11
- from edc_constants.constants import CLOSED, OPEN
12
12
  from edc_utils.text import formatted_datetime
13
13
 
14
14
  from ..models import QueryRule
@@ -1,5 +1,15 @@
1
1
  from textwrap import wrap
2
2
 
3
+ from clinicedc_constants import (
4
+ CLOSED,
5
+ FEEDBACK,
6
+ HIGH_PRIORITY,
7
+ NEW,
8
+ NO,
9
+ OPEN,
10
+ RESOLVED,
11
+ YES,
12
+ )
3
13
  from django.conf import settings
4
14
  from django.contrib import admin
5
15
  from django.contrib.admin.decorators import register
@@ -11,16 +21,6 @@ from django_audit_fields.admin import audit_fieldset_tuple
11
21
 
12
22
  from edc_action_item.fieldsets import action_fields, action_fieldset_tuple
13
23
  from edc_appointment.models import Appointment
14
- from edc_constants.constants import (
15
- CLOSED,
16
- FEEDBACK,
17
- HIGH_PRIORITY,
18
- NEW,
19
- NO,
20
- OPEN,
21
- RESOLVED,
22
- YES,
23
- )
24
24
  from edc_model_admin.dashboard import ModelAdminSubjectDashboardMixin
25
25
  from edc_model_admin.history import SimpleHistoryAdmin
26
26
  from edc_sites.admin import SiteModelAdminMixin
@@ -1,4 +1,4 @@
1
- from edc_constants.constants import (
1
+ from clinicedc_constants import (
2
2
  CLOSED,
3
3
  FEEDBACK,
4
4
  HIGH_PRIORITY,
@@ -1,7 +1,7 @@
1
+ from clinicedc_constants import CLOSED, FEEDBACK, HIGH_PRIORITY, NEW, OPEN, RESOLVED
1
2
  from django import forms
2
3
 
3
4
  from edc_action_item.forms.action_item_form_mixin import ActionItemFormMixin
4
- from edc_constants.constants import CLOSED, FEEDBACK, HIGH_PRIORITY, NEW, OPEN, RESOLVED
5
5
  from edc_form_validators import FormValidator, FormValidatorMixin
6
6
 
7
7
  from ..constants import CLOSED_WITH_ACTION
@@ -4,11 +4,11 @@ from datetime import datetime
4
4
  from typing import TYPE_CHECKING
5
5
 
6
6
  import arrow
7
+ from clinicedc_constants import NO, OPEN, RESOLVED
7
8
  from django.conf import settings
8
9
  from django.core.exceptions import ObjectDoesNotExist
9
10
  from django.utils import timezone
10
11
 
11
- from edc_constants.constants import NO, OPEN, RESOLVED
12
12
  from edc_lab.utils import get_requisition_model
13
13
  from edc_metadata.constants import KEYED, REQUIRED
14
14
  from edc_metadata.models import CrfMetadata, RequisitionMetadata
@@ -0,0 +1,51 @@
1
+ # Generated by Django 5.2.7 on 2025-10-24 04:17
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ("edc_data_manager", "0042_alter_datadictionary_revision_and_more"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name="historicalqueryrule",
15
+ name="comment",
16
+ field=models.TextField(blank=True, default=""),
17
+ ),
18
+ migrations.AlterField(
19
+ model_name="historicalqueryrule",
20
+ name="query_text",
21
+ field=models.TextField(
22
+ blank=True,
23
+ default="",
24
+ help_text="Generic query text for auto-generated queries.",
25
+ ),
26
+ ),
27
+ migrations.AlterField(
28
+ model_name="historicalqueryrule",
29
+ name="reference_model",
30
+ field=models.CharField(default="", editable=False, max_length=150),
31
+ ),
32
+ migrations.AlterField(
33
+ model_name="queryrule",
34
+ name="comment",
35
+ field=models.TextField(blank=True, default=""),
36
+ ),
37
+ migrations.AlterField(
38
+ model_name="queryrule",
39
+ name="query_text",
40
+ field=models.TextField(
41
+ blank=True,
42
+ default="",
43
+ help_text="Generic query text for auto-generated queries.",
44
+ ),
45
+ ),
46
+ migrations.AlterField(
47
+ model_name="queryrule",
48
+ name="reference_model",
49
+ field=models.CharField(default="", editable=False, max_length=150),
50
+ ),
51
+ ]
@@ -1,5 +1,6 @@
1
1
  from uuid import uuid4
2
2
 
3
+ from clinicedc_constants import CLOSED, RESOLVED
3
4
  from django.core.exceptions import ObjectDoesNotExist
4
5
  from django.core.validators import MaxValueValidator, MinValueValidator
5
6
  from django.db import models
@@ -9,7 +10,6 @@ from django.urls.base import reverse
9
10
  from django.utils import timezone
10
11
 
11
12
  from edc_action_item.models.action_model_mixin import ActionModelMixin
12
- from edc_constants.constants import CLOSED, RESOLVED
13
13
  from edc_dashboard.url_names import InvalidDashboardUrlName, url_names
14
14
  from edc_model.models import BaseUuidModel
15
15
  from edc_sites.managers import CurrentSiteManager
@@ -1,9 +1,8 @@
1
+ from clinicedc_constants import CLOSED, NEW, NORMAL, OPEN, RESOLVED
1
2
  from django.db import models
2
3
  from django.db.models import PROTECT
3
4
  from django.utils import timezone
4
5
 
5
- from edc_constants.constants import CLOSED, NEW, NORMAL, OPEN, RESOLVED
6
-
7
6
  from ..choices import DM_STATUS, QUERY_PRIORITY, RESPONSE_STATUS
8
7
  from ..constants import CLOSED_WITH_ACTION
9
8
  from .user import DataManagerUser, QueryUser
@@ -1,5 +1,6 @@
1
1
  from uuid import uuid4
2
2
 
3
+ from clinicedc_constants import NORMAL, NULL_STRING
3
4
  from django.apps import apps as django_apps
4
5
  from django.conf import settings
5
6
  from django.contrib.sites.models import Site
@@ -7,7 +8,6 @@ from django.db import models
7
8
  from django.db.models.deletion import PROTECT
8
9
  from django.template.loader import render_to_string
9
10
 
10
- from edc_constants.constants import NORMAL, NULL_STRING
11
11
  from edc_model.models import BaseUuidModel, HistoricalRecords
12
12
  from edc_visit_schedule.constants import DAYS, HOURS, MONTHS, WEEKS
13
13
 
@@ -1,9 +1,9 @@
1
1
  from typing import Any
2
2
 
3
+ from clinicedc_constants import NEW, OPEN, RESOLVED
3
4
  from django.db.models import QuerySet
4
5
 
5
6
  from edc_action_item.models import ActionItem
6
- from edc_constants.constants import NEW, OPEN, RESOLVED
7
7
  from edc_data_manager.models import DataQuery
8
8
  from edc_sites.site import sites
9
9
 
@@ -1,9 +1,9 @@
1
1
  from typing import Any
2
2
 
3
+ from clinicedc_constants import COMPLETE
3
4
  from django.db import models
4
5
 
5
6
  from edc_constants.choices import DOCUMENT_STATUS
6
- from edc_constants.constants import COMPLETE
7
7
 
8
8
 
9
9
  class DocumentStatusModelMixin(models.Model):
@@ -1,9 +1,8 @@
1
+ from clinicedc_constants import INCOMPLETE
1
2
  from django.core.exceptions import ObjectDoesNotExist
2
3
  from django.db.models.signals import post_save
3
4
  from django.dispatch import receiver
4
5
 
5
- from edc_constants.constants import INCOMPLETE
6
-
7
6
 
8
7
  @receiver(
9
8
  post_save,
edc_dx/diagnoses.py CHANGED
@@ -2,9 +2,9 @@ from __future__ import annotations
2
2
 
3
3
  from datetime import date, datetime
4
4
 
5
+ from clinicedc_constants import YES
5
6
  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,
10
10
  get_clinical_review_model_cls,
@@ -183,8 +183,7 @@ class Diagnoses:
183
183
  subject_visit = self.initial_diagnosis_visit(name)
184
184
  if subject_visit:
185
185
  visit_label = (
186
- f"{subject_visit.visit_code}."
187
- f"{subject_visit.visit_code_sequence}"
186
+ f"{subject_visit.visit_code}.{subject_visit.visit_code_sequence}"
188
187
  )
189
188
  extra_msg = f"{description} was reported on visit {visit_label}. "
190
189
  raise InitialReviewRequired(
@@ -1,7 +1,6 @@
1
+ from clinicedc_constants import YES
1
2
  from django import forms
2
3
 
3
- from edc_constants.constants import YES
4
-
5
4
  from ..diagnoses import (
6
5
  ClinicalReviewBaselineRequired,
7
6
  Diagnoses,
edc_dx_review/choices.py CHANGED
@@ -1,4 +1,4 @@
1
- from edc_constants.constants import NOT_APPLICABLE, OTHER
1
+ from clinicedc_constants import NOT_APPLICABLE, OTHER
2
2
 
3
3
  from .constants import DIET_LIFESTYLE, DRUGS, INSULIN, THIS_CLINIC
4
4
 
@@ -1,4 +1,5 @@
1
- from edc_constants.constants import OTHER, YES
1
+ from clinicedc_constants import OTHER, YES
2
+
2
3
  from edc_dx import get_diagnosis_labels
3
4
  from edc_dx.form_validators import DiagnosisFormValidatorMixin
4
5
  from edc_visit_schedule.utils import raise_if_baseline
@@ -1,4 +1,4 @@
1
- from edc_constants.constants import OTHER, UNKNOWN
1
+ from clinicedc_constants import OTHER, UNKNOWN
2
2
 
3
3
  list_data = {
4
4
  "edc_dx_review.diagnosislocations": [
@@ -2,10 +2,10 @@ from __future__ import annotations
2
2
 
3
3
  from datetime import date, datetime
4
4
 
5
+ from clinicedc_constants import GT, GTE, LT, LTE
5
6
  from django.conf import settings
6
7
  from django.core.exceptions import ValidationError
7
8
 
8
- from edc_constants.constants import GT, GTE, LT, LTE
9
9
  from edc_model import estimated_date_from_ago
10
10
  from edc_utils.text import convert_php_dateformat
11
11
 
@@ -1,7 +1,7 @@
1
+ from clinicedc_constants import YES
1
2
  from django.db import models
2
3
 
3
4
  from edc_constants.choices import YES_NO
4
- from edc_constants.constants import YES
5
5
  from edc_crf.model_mixins import SingletonCrfModelMixin
6
6
  from edc_dx import raise_on_unknown_diagnosis_labels
7
7
  from edc_visit_schedule.utils import raise_if_not_baseline
@@ -1,9 +1,9 @@
1
+ from clinicedc_constants import NOT_APPLICABLE
1
2
  from django.db import models
2
3
  from django.utils.html import format_html
3
4
  from django.utils.safestring import mark_safe
4
5
 
5
6
  from edc_constants.choices import YES_NO_NA
6
- from edc_constants.constants import NOT_APPLICABLE
7
7
  from edc_model import models as edc_models
8
8
 
9
9
  from ...utils import get_list_model_app
@@ -1,9 +1,9 @@
1
+ from clinicedc_constants import NOT_APPLICABLE
1
2
  from django.db import models
2
3
  from django.utils.html import format_html
3
4
  from django.utils.safestring import mark_safe
4
5
 
5
6
  from edc_constants.choices import YES_NO_NA
6
- from edc_constants.constants import NOT_APPLICABLE
7
7
  from edc_model import models as edc_models
8
8
 
9
9
  from ...utils import get_list_model_app
@@ -1,9 +1,9 @@
1
+ from clinicedc_constants import NOT_APPLICABLE
1
2
  from django.db import models
2
3
  from django.utils.html import format_html
3
4
  from django.utils.safestring import mark_safe
4
5
 
5
6
  from edc_constants.choices import YES_NO_NA
6
- from edc_constants.constants import NOT_APPLICABLE
7
7
  from edc_model import models as edc_models
8
8
 
9
9
  from ...utils import get_list_model_app
@@ -1,9 +1,9 @@
1
+ from clinicedc_constants import NOT_APPLICABLE
1
2
  from django.db import models
2
3
  from django.utils.html import format_html
3
4
  from django.utils.safestring import mark_safe
4
5
 
5
6
  from edc_constants.choices import YES_NO_NA
6
- from edc_constants.constants import NOT_APPLICABLE
7
7
  from edc_model import models as edc_models
8
8
 
9
9
  from ...utils import get_list_model_app
@@ -1,7 +1,7 @@
1
+ from clinicedc_constants import YES
1
2
  from django.db import models
2
3
 
3
4
  from edc_constants.choices import YES_NO
4
- from edc_constants.constants import YES
5
5
  from edc_crf.model_mixins import SingletonCrfModelMixin
6
6
  from edc_dx import raise_on_unknown_diagnosis_labels
7
7
  from edc_visit_schedule.utils import raise_if_baseline
@@ -1,9 +1,9 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from clinicedc_constants import CHOL, DM, HIV, HTN, NO
3
4
  from django.db import models
4
5
 
5
6
  from edc_constants.choices import YES_NO
6
- from edc_constants.constants import CHOL, DM, HIV, HTN, NO
7
7
  from edc_dx import get_diagnosis_labels
8
8
 
9
9
  default_prompts = {
@@ -2,9 +2,9 @@ from __future__ import annotations
2
2
 
3
3
  from datetime import date
4
4
 
5
+ from clinicedc_constants import NO, NOT_APPLICABLE, YES
5
6
  from django.db import models
6
7
 
7
- from edc_constants.constants import NO, NOT_APPLICABLE, YES
8
8
  from edc_model import duration_to_date
9
9
 
10
10
 
@@ -2,10 +2,10 @@ from __future__ import annotations
2
2
 
3
3
  from datetime import date
4
4
 
5
+ from clinicedc_constants import NOT_APPLICABLE, YES
5
6
  from django.db import models
6
7
 
7
8
  from edc_constants.choices import YES_NO
8
- from edc_constants.constants import NOT_APPLICABLE, YES
9
9
  from edc_dx import Diagnoses
10
10
  from edc_model.models import DurationYMDField
11
11
  from edc_model.utils import get_report_datetime_field_name
@@ -1,9 +1,9 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from clinicedc_constants import CHOL, DM, HIV, HTN, NOT_APPLICABLE
3
4
  from django.db import models
4
5
 
5
6
  from edc_constants.choices import YES_NO_NA
6
- from edc_constants.constants import CHOL, DM, HIV, HTN, NOT_APPLICABLE
7
7
  from edc_dx import get_diagnosis_labels
8
8
 
9
9
  default_prompts = {