clinicedc 2.0.12__py3-none-any.whl → 2.0.13__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 (101) hide show
  1. {clinicedc-2.0.12.dist-info → clinicedc-2.0.13.dist-info}/METADATA +2 -1
  2. {clinicedc-2.0.12.dist-info → clinicedc-2.0.13.dist-info}/RECORD +101 -24
  3. edc_action_item/migrations/0017_auto_20190305_0123.py +1 -1
  4. edc_action_item/migrations/0030_edcpermissions.py +1 -1
  5. edc_adverse_event/migrations/0001_initial.py +1 -1
  6. edc_adverse_event/migrations/0002_auto_20190802_0059.py +1 -1
  7. edc_adverse_event/migrations/0008_auto_20220825_0451.py +1 -1
  8. edc_adverse_event/migrations/0009_auto_20220907_0157.py +1 -1
  9. edc_adverse_event/model_mixins/hospitaization/hospitalization_model_mixin.py +1 -3
  10. edc_analytics/__init__.py +3 -0
  11. edc_analytics/apps.py +8 -0
  12. edc_analytics/constants.py +26 -0
  13. edc_analytics/custom_tables/__init__.py +11 -0
  14. edc_analytics/custom_tables/age.py +72 -0
  15. edc_analytics/custom_tables/art.py +88 -0
  16. edc_analytics/custom_tables/bmi.py +125 -0
  17. edc_analytics/custom_tables/bp.py +103 -0
  18. edc_analytics/custom_tables/fasting.py +126 -0
  19. edc_analytics/custom_tables/fbg.py +98 -0
  20. edc_analytics/custom_tables/fbg_ogtt.py +384 -0
  21. edc_analytics/custom_tables/gender.py +12 -0
  22. edc_analytics/custom_tables/hba1c.py +87 -0
  23. edc_analytics/custom_tables/ogtt.py +95 -0
  24. edc_analytics/custom_tables/waist.py +105 -0
  25. edc_analytics/data.py +36 -0
  26. edc_analytics/row/__init__.py +4 -0
  27. edc_analytics/row/row_definition.py +43 -0
  28. edc_analytics/row/row_definitions.py +32 -0
  29. edc_analytics/row/row_statistics.py +88 -0
  30. edc_analytics/row/row_statistics_with_gender.py +115 -0
  31. edc_analytics/stata/__init__.py +1 -0
  32. edc_analytics/stata/get_stata_labels_from_model.py +44 -0
  33. edc_analytics/styler.py +93 -0
  34. edc_analytics/table.py +108 -0
  35. edc_analytics/urls.py +6 -0
  36. edc_appointment/migrations/0018_auto_20190305_0123.py +1 -1
  37. edc_auth/migrations/0001_squashed_0033_alter_userprofile_is_multisite_viewer.py +1 -1
  38. edc_auth/migrations/0012_auto_20191026_0034.py +1 -1
  39. edc_auth/migrations/0013_auto_20191026_0055.py +1 -1
  40. edc_auth/migrations/0025_permissions.py +1 -1
  41. edc_consent/migrations/0001_initial.py +1 -1
  42. edc_dashboard/migrations/0001_initial.py +1 -1
  43. edc_data_manager/migrations/0001_initial.py +1 -1
  44. edc_data_manager/migrations/0025_edcpermissions.py +1 -1
  45. edc_dx/__init__.py +6 -0
  46. edc_dx/apps.py +5 -0
  47. edc_dx/diagnoses.py +250 -0
  48. edc_dx/form_validators/__init__.py +2 -0
  49. edc_dx/form_validators/diagnosis_form_validator_mixin.py +54 -0
  50. edc_dx/form_validators/result_form_validator_mixin.py +65 -0
  51. edc_dx/utils.py +42 -0
  52. edc_dx_review/__init__.py +0 -0
  53. edc_dx_review/apps.py +5 -0
  54. edc_dx_review/auth_objects.py +13 -0
  55. edc_dx_review/auths.py +12 -0
  56. edc_dx_review/choices.py +24 -0
  57. edc_dx_review/constants.py +7 -0
  58. edc_dx_review/fieldsets.py +47 -0
  59. edc_dx_review/form_mixins/__init__.py +3 -0
  60. edc_dx_review/form_mixins/clinical_review_baseline_required_form_mixin.py +25 -0
  61. edc_dx_review/form_validator_mixins/__init__.py +6 -0
  62. edc_dx_review/form_validator_mixins/clinical_review_baseline_form_validator_mixin.py +7 -0
  63. edc_dx_review/form_validator_mixins/clinical_review_followup_form_validator_mixin.py +25 -0
  64. edc_dx_review/list_data.py +19 -0
  65. edc_dx_review/medical_date.py +195 -0
  66. edc_dx_review/migrations/0001_initial.py +307 -0
  67. edc_dx_review/migrations/0002_diagnosislocations_extra_value_and_more.py +32 -0
  68. edc_dx_review/migrations/0003_alter_diagnosislocations_options_and_more.py +148 -0
  69. edc_dx_review/migrations/0004_remove_diagnosislocations_edc_dx_revi_name_a39b40_idx_and_more.py +20 -0
  70. edc_dx_review/migrations/__init__.py +0 -0
  71. edc_dx_review/model_mixins/__init__.py +20 -0
  72. edc_dx_review/model_mixins/clinical_review_baseline_model_mixin.py +25 -0
  73. edc_dx_review/model_mixins/clinical_review_followup/__init__.py +5 -0
  74. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_chol_model_mixin.py +54 -0
  75. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_dm_model_mixin.py +54 -0
  76. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_hiv_model_mixin.py +54 -0
  77. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_htn_model_mixin.py +56 -0
  78. edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_model_mixin.py +25 -0
  79. edc_dx_review/model_mixins/dx_location_model_mixin.py +17 -0
  80. edc_dx_review/model_mixins/factory/__init__.py +4 -0
  81. edc_dx_review/model_mixins/factory/baseline_review_model_mixin_factory.py +55 -0
  82. edc_dx_review/model_mixins/factory/calculate_date.py +43 -0
  83. edc_dx_review/model_mixins/factory/dx_initial_review_model_mixin_factory.py +97 -0
  84. edc_dx_review/model_mixins/factory/followup_review_model_mixin_factory.py +39 -0
  85. edc_dx_review/model_mixins/factory/rx_initial_review_model_mixin_factory.py +69 -0
  86. edc_dx_review/model_mixins/followup_review/__init__.py +2 -0
  87. edc_dx_review/model_mixins/followup_review/followup_review_model_mixin.py +22 -0
  88. edc_dx_review/model_mixins/followup_review/hiv_followup_review_model_mixin.py +32 -0
  89. edc_dx_review/model_mixins/initial_review/__init__.py +6 -0
  90. edc_dx_review/model_mixins/initial_review/chol_initial_review_model_mixin.py +34 -0
  91. edc_dx_review/model_mixins/initial_review/hiv_initial_model_mixins.py +119 -0
  92. edc_dx_review/model_mixins/initial_review/ncd_initial_review_model_mixin.py +42 -0
  93. edc_dx_review/models.py +20 -0
  94. edc_dx_review/radio_fields.py +30 -0
  95. edc_dx_review/utils.py +220 -0
  96. edc_export/migrations/0004_auto_20190305_0123.py +1 -1
  97. edc_export/migrations/0013_edcpermissions.py +1 -1
  98. edc_facility/migrations/0005_healthfacility_healthfacilitytypes_and_more.py +1 -1
  99. edc_vitals/model_mixins/blood_pressure_model_mixin.py +1 -0
  100. {clinicedc-2.0.12.dist-info → clinicedc-2.0.13.dist-info}/WHEEL +0 -0
  101. {clinicedc-2.0.12.dist-info → clinicedc-2.0.13.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clinicedc
3
- Version: 2.0.12
3
+ Version: 2.0.13
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
@@ -45,6 +45,7 @@ Requires-Dist: gunicorn>=23.0.0
45
45
  Requires-Dist: inflect>=7.5.0
46
46
  Requires-Dist: mempass>=0.1.2
47
47
  Requires-Dist: mysqlclient>=2.2.7
48
+ Requires-Dist: psycopg2>=2.9.10
48
49
  Requires-Dist: pycups>=2.0.4
49
50
  Requires-Dist: pypdf>=5.9.0
50
51
  Requires-Dist: python-dateutil>=2.9.0.post0
@@ -44,7 +44,7 @@ edc_action_item/migrations/0013_auto_20181108_0353.py,sha256=JOUKOlTR-fvNtgMMppR
44
44
  edc_action_item/migrations/0014_auto_20181121_1738.py,sha256=45ihVf3QsHy7Ocq14QR8uWpfNzAswQPCoZIYKEuiMO4,611
45
45
  edc_action_item/migrations/0015_auto_20190114_0250.py,sha256=oggOoB5_pYPYkz0idveOxj_RkqLOVWLlQ7xHzchVLcw,9263
46
46
  edc_action_item/migrations/0016_auto_20190131_2004.py,sha256=MZJ_2X5gk9B_GvziNb1dcWEL8gAVaWGIPfiL7ApXN8M,1161
47
- edc_action_item/migrations/0017_auto_20190305_0123.py,sha256=nqJtVDH2pfsb5Vgu5jKzNZzte-xe3cqnuXPHyGl-VTo,7792
47
+ edc_action_item/migrations/0017_auto_20190305_0123.py,sha256=jl-lCkNGclVaDzPJz6zU8N3OYJ2vBbxkju9FZ4VWVMc,7769
48
48
  edc_action_item/migrations/0018_auto_20190626_1629.py,sha256=5RdQ1pBtjDPeICK9yl1cQ8QQhVjtVKnOCGpvvQZU0Po,591
49
49
  edc_action_item/migrations/0019_auto_20190627_2257.py,sha256=EhpKUebZJIdjOicohEuYMFQfnr1YzmCsJGdXFYSjEo0,478
50
50
  edc_action_item/migrations/0020_auto_20190628_2113.py,sha256=LL-ax_Vyq0Iz24qJPjkaFMFRkE_Yd9zqR01mhSWv9jA,476
@@ -57,7 +57,7 @@ edc_action_item/migrations/0026_auto_20200729_2240.py,sha256=VqaO9eZAFm4hn1pBJQ4
57
57
  edc_action_item/migrations/0027_auto_20210120_0005.py,sha256=EGnchxrv33J-HxebqZJa_egJ8UBMTSY8iN3TkCcdsJ0,1118
58
58
  edc_action_item/migrations/0028_auto_20210203_0706.py,sha256=kfK0PFhmUxXHHYeaveqs5SSTcMZqPwLxVeFukcCnV7M,2777
59
59
  edc_action_item/migrations/0029_auto_20220704_1841.py,sha256=qcYDroqRpSucw_wXD211J8tDaAKEh2Tz00Q_gF0yfOc,1345
60
- edc_action_item/migrations/0030_edcpermissions.py,sha256=WmDKlssaI8Y1gY1qoeT2-QxFz6bbPUzqSdcqG1PcRqQ,3698
60
+ edc_action_item/migrations/0030_edcpermissions.py,sha256=uBN2VHHjUsEABR1MMsdMjyHS3Ssfp-tZJ3Agr1bnpfQ,3675
61
61
  edc_action_item/migrations/0031_auto_20220922_2236.py,sha256=z9h21cWmrwBlbiN2vqm2UigWdPLi8P8h58e6LE_RNSg,753
62
62
  edc_action_item/migrations/0032_alter_actionitem_options_alter_actiontype_options_and_more.py,sha256=51f6K_nXBb7sfx63mlxrcHrgkYsbp0RiEprCtsQnlOw,1825
63
63
  edc_action_item/migrations/0033_alter_actionitem_managers.py,sha256=nIETM7JWhIBvICmbW0vl0whKuTcFDyLa17zRw-gNomA,640
@@ -162,15 +162,15 @@ edc_adverse_event/get_ae_model.py,sha256=uxitKMKOBLGP0tAefampIUqgTC_z2Mv4Na6I4LY
162
162
  edc_adverse_event/list_data.py,sha256=GZrv4q1LzPaorNSV9EhgPcKqT20Pq4oZsEViMw1kvvw,881
163
163
  edc_adverse_event/locale/sw/LC_MESSAGES/django.po,sha256=AESJLig3gz3V__-cqDShiziutN_E-7l7W_lYSLD28Zo,699
164
164
  edc_adverse_event/middleware.py,sha256=3xuZxoUX-0-POtxG4NtdxshnwJSpDHsM7RaMNf2U-T4,757
165
- edc_adverse_event/migrations/0001_initial.py,sha256=Z4qdi52UN54j7Ol-HXorZyQB5zOn_hI2Wr6dVebXrkQ,10205
166
- edc_adverse_event/migrations/0002_auto_20190802_0059.py,sha256=peHAIha2i8izYrWoZguiI1x84Q_XZRU3Nz_p6bnuryg,5363
165
+ edc_adverse_event/migrations/0001_initial.py,sha256=3Io5vqToLJFEtmAYsDba-MnL4f57AZ1ulA2GhdVGzjk,10182
166
+ edc_adverse_event/migrations/0002_auto_20190802_0059.py,sha256=SkO_MaNnjdjMY6Mm1BwTgqcFLY_68z-5tlpMJtwgep4,5340
167
167
  edc_adverse_event/migrations/0003_auto_20191026_2231.py,sha256=FnbB748QESTfYA8j7nxTDsNUtXaqUmwVsTZmEeq8YwE,2390
168
168
  edc_adverse_event/migrations/0004_auto_20200513_0023.py,sha256=FnK8z4tjx-VPshKfZVw9S-N0gobSkOSJA8jqah8GKso,1486
169
169
  edc_adverse_event/migrations/0005_auto_20210120_0005.py,sha256=TclCGVoMZTtvJOAIo0CTuqUhLXfpz1j-JjUmZU9DLqw,693
170
170
  edc_adverse_event/migrations/0006_auto_20210425_1628.py,sha256=q1E55EX5Pyl9WCLx8HITN6eyw-FP4kWaOCit3iG9oHI,1162
171
171
  edc_adverse_event/migrations/0007_edcpermissions.py,sha256=utKAXBOr1ixYgJGe4C0LgAg7XSZKLSJpnCngqVwIxlM,582
172
- edc_adverse_event/migrations/0008_auto_20220825_0451.py,sha256=T4iHsP9RqzGNkIHkgBj0O3MSz7xW6RCO10V9__yNGws,3774
173
- edc_adverse_event/migrations/0009_auto_20220907_0157.py,sha256=zF2JoF9mNpPgYrfo6hEFU6DM4gtg5FOsx5iRTrExJA8,5772
172
+ edc_adverse_event/migrations/0008_auto_20220825_0451.py,sha256=C1rn8RJ4wt8UEy0t8GyL2F0JvDBAMQQ_S3eDsyqsKLw,3751
173
+ edc_adverse_event/migrations/0009_auto_20220907_0157.py,sha256=cEhujlQ1xDoyXX7_QXzpRXn7iNXUluwxAioqXnlX7Pw,5749
174
174
  edc_adverse_event/migrations/0010_auto_20220913_2139.py,sha256=95UgfbqroX7tY_abxOklLdizcH0cUyAgsYeiHhNOG_Y,1062
175
175
  edc_adverse_event/migrations/0011_alter_aeactionclassification_options_and_more.py,sha256=1fZiY5ehYaB3_zb18CDI_KS5YlRBoYMkCKXb7Cn3o-0,2297
176
176
  edc_adverse_event/migrations/0012_aeactionclassification_extra_value_and_more.py,sha256=4G6819kLptyvBh3c-Q90DDEvDojwdm7aLXubz7PnZN0,976
@@ -212,7 +212,7 @@ edc_adverse_event/model_mixins/death_report/death_report_tmg_model_mixin.py,sha2
212
212
  edc_adverse_event/model_mixins/death_report/death_report_tmg_second_model_mixin.py,sha256=mOwF83K8z0Mt8M7JljIxH5gefwBX1JgQVZdtFNiUxTc,977
213
213
  edc_adverse_event/model_mixins/death_report/simple_death_report_model_mixin.py,sha256=fO_zC6YUrOhVCjDtxnJEtvoc7BmyVWgty2_C0-l7nSw,1809
214
214
  edc_adverse_event/model_mixins/hospitaization/__init__.py,sha256=sl28Md5JfzhozA-Zcx5OPgKbViTaX74jExWqnzAh9u4,67
215
- edc_adverse_event/model_mixins/hospitaization/hospitalization_model_mixin.py,sha256=HeN8w1j_BA70AcKvxdO-GUSbvim1kH9HYXCoVQC4jQs,2122
215
+ edc_adverse_event/model_mixins/hospitaization/hospitalization_model_mixin.py,sha256=BOm9ERT8uI1nWP5LBTQkJV_c3zOd9H9XkEWlOtuiOTo,2117
216
216
  edc_adverse_event/modeladmin_mixins/__init__.py,sha256=PbIQgn0V2iTN2W0C-Otu86-jD0t-HMXYCYDi1SCKXuk,638
217
217
  edc_adverse_event/modeladmin_mixins/ae_followup_admin_mixin.py,sha256=5gb5ByNCRrdpdIkOiKWhRPco-cFd0patSwcme15PzTw,2903
218
218
  edc_adverse_event/modeladmin_mixins/ae_initial_admin_mixin.py,sha256=4TTmkuPSO-t_EryEs1-UOxBI068WIdXLVo1qWRLiqmc,5118
@@ -292,6 +292,32 @@ edc_adverse_event/views/tmg/death_listboard_view.py,sha256=D9gCAaUlZzLTaNr4j41re
292
292
  edc_adverse_event/views/tmg/home_view.py,sha256=WVCfacZEmZ30J0cVx8OjEK5KlAmVe45h6zLgyWMs5Ds,2976
293
293
  edc_adverse_event/views/tmg/status_listboards.py,sha256=XmUZ5lG_wLlwEeBcTB7-nEwsfcxsA9FcvLgiz02j2aI,787
294
294
  edc_adverse_event/views/tmg/summary_listboard_view.py,sha256=j7ucQInwEAUxxI8uDW2ReKJ1tH8uNzrXSt48isdNXN0,2160
295
+ edc_analytics/__init__.py,sha256=Tne7Oyy6wpFVNcFoEpurXJ4_I3Tz93jvqOMmTTXW_X0,123
296
+ edc_analytics/apps.py,sha256=bZ9Gtr1YdBX2Q1nkrzOi7wG9_Ri3vUj8ZOATve3hDzo,229
297
+ edc_analytics/constants.py,sha256=a8aUKrhSWKFfLBm9e7CFQk0mEdkFNbGbAxpUrqaTXjw,481
298
+ edc_analytics/custom_tables/__init__.py,sha256=TVI12TnJ5aMqTW2liyS4AjfLAIgg5rY8W_4WBsWfNw8,330
299
+ edc_analytics/custom_tables/age.py,sha256=8XH1uYf8fLyH0kKLmtO5bpRcXBWH_Ytovj9bC33Spos,2614
300
+ edc_analytics/custom_tables/art.py,sha256=6o9ILFdO9uT0oioqZNtEr4fwOpwcXvO4qDR7JmDXD90,2716
301
+ edc_analytics/custom_tables/bmi.py,sha256=ugLtbQ-UOaSTlhfgkhIlW5i3T48z6WeHb8-LMlf8EWc,3843
302
+ edc_analytics/custom_tables/bp.py,sha256=Tu6tMY2PuBVce_eziR4x8j3Iz4CecJyWSqN3DuBfgFc,3188
303
+ edc_analytics/custom_tables/fasting.py,sha256=kCOOFF9B6mM8z4mcd1ykNVdwbstTAmaqACKdtN_sZ34,3992
304
+ edc_analytics/custom_tables/fbg.py,sha256=96a8cIo7Cny-pOGy9ZzhLcnHKhfbY8vgheyBRfl8XJ4,2966
305
+ edc_analytics/custom_tables/fbg_ogtt.py,sha256=4xEh5c08uaUhe7vWJ8ll_1xhyzJ6tD4M0-hAi1ItIE8,12127
306
+ edc_analytics/custom_tables/gender.py,sha256=lLPggxFYv-G0hnY_Bkl3rAdAitCNJ6KEud2FOGfaubQ,252
307
+ edc_analytics/custom_tables/hba1c.py,sha256=cSQ_jgBvh8UVUaRr-yGJpprKuH9R_JESlXAn0MQcKcs,2620
308
+ edc_analytics/custom_tables/ogtt.py,sha256=b1i5QLIz7B5erAOelMocGPgQ4kbia7lxVa4VAkvQwog,2887
309
+ edc_analytics/custom_tables/waist.py,sha256=-XV3ZVmmdQg_ff7ckSdtSDxYHxgsnfQVtHrF5FVenyw,3144
310
+ edc_analytics/data.py,sha256=yaa7Hi9bQMhFKt_7wWDFZYsfU-tAKoE-gsm97_5vSco,1032
311
+ edc_analytics/row/__init__.py,sha256=oBRBcrTeWr77ZfvsSnCGKbrHS0-qY26yt4EDn_hxllA,192
312
+ edc_analytics/row/row_definition.py,sha256=me9QGvDb7aijLPoRD_jey1cLkJ3TuBLkF6IpzoyV_Y4,1434
313
+ edc_analytics/row/row_definitions.py,sha256=NuNWmXSxBY2PSKep9EV5bRYyKJ1sRAWjjcOevMTHAgQ,953
314
+ edc_analytics/row/row_statistics.py,sha256=M5zjBCbguVOxOp2Lmla9JUkZA9bG3V8aanY6zswDRL0,2897
315
+ edc_analytics/row/row_statistics_with_gender.py,sha256=P20IiMnz11AzmvtwUsAMGzn_lgPoyUdvigcr8lhIOzg,3210
316
+ edc_analytics/stata/__init__.py,sha256=fzENxSjaoxaXbSeafnaNXOPO85aXWbObQBnYfhAJI6w,69
317
+ edc_analytics/stata/get_stata_labels_from_model.py,sha256=3EjENwn-ACITNYQvkwahdvdMsefSR4V077EH43zF5ls,1463
318
+ edc_analytics/styler.py,sha256=IvuKalHPSJLZTjzOKAt7wK2kCRRvZGL9_PxM70Vo68Q,3086
319
+ edc_analytics/table.py,sha256=yt1XvKYJvk_VjsBl324iCRJNGofkq9yg0u0h5ZHVnvw,3752
320
+ edc_analytics/urls.py,sha256=NR4c2ybRQNjbtJwi-PTsYB9oacVuVZsIRHo7ZnA0WIc,118
295
321
  edc_appconfig/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
296
322
  edc_appconfig/apps.py,sha256=eMQEa-pQzqWyuBGbpWWNJwgmbc7oSZ3d0FNFdd_08ik,11211
297
323
  edc_appconfig/migrations/__init__.py,sha256=DLA-hDdFszAVNCe1sZqVoLmIXifFW0HeZsipP9D1Ic4,46
@@ -355,7 +381,7 @@ edc_appointment/migrations/0014_auto_20180116_1411.py,sha256=pG_uGk4xV0Ix75Fg6V5
355
381
  edc_appointment/migrations/0015_auto_20180706_1519.py,sha256=lIGHuihQBwv9ZOe6l5Pzwj1h0LCwhIGe9YKOenJ5MkQ,513
356
382
  edc_appointment/migrations/0016_auto_20181108_0353.py,sha256=nPCRjp_ogiAk5z9bGTd0ECxvTU7USx8_LxGJTxuhXrI,495
357
383
  edc_appointment/migrations/0017_auto_20190201_0446.py,sha256=TIKyvuwgHVGEjX7zlNmSRYuCjj-Wv6aGl8Ssh4kkrXI,679
358
- edc_appointment/migrations/0018_auto_20190305_0123.py,sha256=KrT6x3jU47FMjlzRSMH-19YlBAkM5buBfJZz65q7cik,3388
384
+ edc_appointment/migrations/0018_auto_20190305_0123.py,sha256=jvFRjUcRGOAPpkIs0V6ktWHDxQn2k47qWbR_xmAiHJY,3365
359
385
  edc_appointment/migrations/0019_auto_20190627_2257.py,sha256=R4O6FzvB8SpyeWrNYCmP2nhepLeigurFPKkKMwRexf8,680
360
386
  edc_appointment/migrations/0020_auto_20190922_0439.py,sha256=mM9HZOjjUtE-DoL_Umz41jz1SyRTFo7uomB_Pbp8zQ4,575
361
387
  edc_appointment/migrations/0021_auto_20191024_1000.py,sha256=o20Mp80PyF1yix9m1Kw80TbwO875qjM4uxhLPfI7Dzg,601
@@ -461,7 +487,7 @@ edc_auth/management/commands/fix_export_permissions.py,sha256=hM0OZ4Iw0NnvOMMXR1
461
487
  edc_auth/management/commands/import_users.py,sha256=fSjUsJlVtDQDi7r1ACAt53OvWrGQpoRDEf34BtuwDZY,2261
462
488
  edc_auth/management/commands/reset_password.py,sha256=iLddV7yGAcT-uncusmr1RmrHZ-9Hsp2_8CDzkBVVAhE,1161
463
489
  edc_auth/migrations/0001_initial.py,sha256=WngjFQWRyFpZTErODm6LFXJc06xwu7YHjWLpI5l9F08,2716
464
- edc_auth/migrations/0001_squashed_0033_alter_userprofile_is_multisite_viewer.py,sha256=w0CnnmefLskIvIwDiD3IKOW2QIuwQupE8NWcKgZBr4M,23115
490
+ edc_auth/migrations/0001_squashed_0033_alter_userprofile_is_multisite_viewer.py,sha256=qxASSPcKICTYa3ZYveS9hp1CFF879WIYDmxOe73ITm0,23092
465
491
  edc_auth/migrations/0002_auto_20180803_0515.py,sha256=6Ch7NyVYqefgT_0v-weOAUwRUuEDhaLSeA0_NnXxKjM,638
466
492
  edc_auth/migrations/0003_auto_20180803_0532.py,sha256=j-jfp4bfCD4D3Cy3ndwWSombDH1ABfRxWVDYTY5k0CI,392
467
493
  edc_auth/migrations/0004_auto_20180804_2041.py,sha256=ck_GbmYszO2HfVMhvegPehE2T4lsQyYNuGeG2zr-S2M,530
@@ -472,8 +498,8 @@ edc_auth/migrations/0008_auto_20191022_0134.py,sha256=EJgN9_pzR6ZP6j6DWSY9q8dhPz
472
498
  edc_auth/migrations/0009_userprofile_alternate_email.py,sha256=vRueOEzp5f2fvq38llSKcr3S98khzaTatVi98WI5W1U,466
473
499
  edc_auth/migrations/0010_auto_20191022_0422.py,sha256=dXS1_EEiKYH0ugpVL-_jszPc67N89SPXTsbhYfwYQus,537
474
500
  edc_auth/migrations/0011_auto_20191025_2335.py,sha256=lmZmvCM9haFv95Tga5D2-zQFvfwaLhIKm3QhHMr6-bI,988
475
- edc_auth/migrations/0012_auto_20191026_0034.py,sha256=FSQeIsM59kMaicOXaFrPL-wGs-JmMNrF5hH5mKuj5Nw,5357
476
- edc_auth/migrations/0013_auto_20191026_0055.py,sha256=w4NITkJ0eN9VLXTBWi-3SQzrcv_sWVLu9u_udsDFb9c,5755
501
+ edc_auth/migrations/0012_auto_20191026_0034.py,sha256=KWuacEZzNLmaJ_QXRK2QwP90inwi6LjIsZRKtrwe8u8,5334
502
+ edc_auth/migrations/0013_auto_20191026_0055.py,sha256=0IG22yVit375TtrA0ykQZx9ctXOYciHdpMzM9X5AtRU,5732
477
503
  edc_auth/migrations/0014_auto_20191026_1841.py,sha256=g8gb7rNJDDE91P_l5YhqxItpf1qjSeILrjWjoVTgiTE,330
478
504
  edc_auth/migrations/0015_auto_20191026_2149.py,sha256=DrGk3aSXX5CRKhJ1cH-5DxiDrd2bxDsQYc-6yOfs3uM,895
479
505
  edc_auth/migrations/0016_auto_20191026_2153.py,sha256=u-Ph4iTGMYT-XJbHQwyaKJ2MbliLDeI9-XWGmvo4ngM,661
@@ -485,7 +511,7 @@ edc_auth/migrations/0021_auto_20210125_0421.py,sha256=1yAFQtL75t7bfcnrrIqDIVcFCI
485
511
  edc_auth/migrations/0022_auto_20210125_2214.py,sha256=3LYBxz-alGQNZxI1Z4A1GKA6aPRFUPhQHpQguwAhxfU,924
486
512
  edc_auth/migrations/0023_auto_20210423_1451.py,sha256=giC7OfA0KvwWRQEx0U7Lzy2sf4afnUr3eeQc6I8LOHo,407
487
513
  edc_auth/migrations/0024_alter_userprofile_export_format.py,sha256=nTpbe5aZ-JhIicK5xM-H390-RTeEjNzdBFDbYa34xBU,925
488
- edc_auth/migrations/0025_permissions.py,sha256=GetuH-TjliGB3UoGTtz-irlqGuwG_goQS0eQvuDxuUg,3927
514
+ edc_auth/migrations/0025_permissions.py,sha256=aAazWUPuNtJJ5nQpWwa0h1mulcoTEVHP-bO3a0z8lI0,3904
489
515
  edc_auth/migrations/0026_rename_permissions_edcpermissions.py,sha256=sLjWpZUDCp5ynsk1dC5MVCuJ9SVG8kD2zGXIF8pbxRk,337
490
516
  edc_auth/migrations/0027_alter_edcpermissions_options.py,sha256=IcLwiUe4uh8WVeZCwaKZ7WvmakfopWnJIxedY66f5xk,471
491
517
  edc_auth/migrations/0028_alter_role_options.py,sha256=4Ob3NvQCYInz06JH9UFfIVGTZYV7afqATjbn_Ye1Zj4,740
@@ -544,7 +570,7 @@ edc_consent/form_validators/consent_definition_form_validator_mixin.py,sha256=eN
544
570
  edc_consent/form_validators/subject_consent_form_validator.py,sha256=lB9q71GHDMz_2ujMvKkR-IC4qv27_9U346QFatPWnDM,5136
545
571
  edc_consent/forms.py,sha256=P514brMWBljsQIIUpLNr5LpWiM0WTqiihxZ0gq-FLs0,1266
546
572
  edc_consent/managers.py,sha256=2dha4c3TQWAITyklq4djBmTPKegGRaeZDq80rKNKuk8,1298
547
- edc_consent/migrations/0001_initial.py,sha256=HNLX2wzHJRZOUeJONktV6LcqMX3ANacbY7QBTSuqcXU,3657
573
+ edc_consent/migrations/0001_initial.py,sha256=JHqok8yTA7zj20BphXZNbLhjrRWdbvBAAX8LguXykiE,3634
548
574
  edc_consent/migrations/0002_alter_edcpermissions_device_created_and_more.py,sha256=paH1V4RR3KaLYQHvpDnbnSzpAfsXB3jjWD51qL_OJv0,1534
549
575
  edc_consent/migrations/0003_edcpermissions_locale_created_and_more.py,sha256=RhjGmLpjbhhaDNKCzoLgxIUzBteVlSEZNn5Ve24CqA0,976
550
576
  edc_consent/migrations/0004_alter_edcpermissions_options_and_more.py,sha256=8g4GHIuyvUl8vNQzNSlpqhtRJfJSSVm616Ve0LWcQN4,1227
@@ -649,7 +675,7 @@ edc_dashboard/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
649
675
  edc_dashboard/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
650
676
  edc_dashboard/management/commands/update_search_slugs.py,sha256=qY1qPgef62ClDMYT7E_Y8DCtYic6rGS4fm_G6L-lJ9g,2400
651
677
  edc_dashboard/middleware.py,sha256=vZi-aBYwsz_i6pLqNV0EelBWak8qyxlyBbJfxaT4eio,1000
652
- edc_dashboard/migrations/0001_initial.py,sha256=HNLX2wzHJRZOUeJONktV6LcqMX3ANacbY7QBTSuqcXU,3657
678
+ edc_dashboard/migrations/0001_initial.py,sha256=JHqok8yTA7zj20BphXZNbLhjrRWdbvBAAX8LguXykiE,3634
653
679
  edc_dashboard/migrations/0002_auto_20220910_0214.py,sha256=iNohlSyjr_97U8j-nmHRCibN0d41aadOgs4De4jPoU4,495
654
680
  edc_dashboard/migrations/0003_alter_edcpermissions_device_created_and_more.py,sha256=YRLPeqmGt9wp5CV9h9EvkayEkcR_o6hlcMgOas3_pJw,1547
655
681
  edc_dashboard/migrations/0004_edcpermissions_locale_created_and_more.py,sha256=ixiVtOAtw69-fvHW3aHQSF7Yk-GFwBj2KFTM_RbJgE8,978
@@ -744,7 +770,7 @@ edc_data_manager/manage.py,sha256=pV4MLvXxfLY2kHuwjFxpZSf6jtcs8iYiuu1bDNT_32Y,63
744
770
  edc_data_manager/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
745
771
  edc_data_manager/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
746
772
  edc_data_manager/management/commands/run_query_rules.py,sha256=z-HoP0Np02owWSbs55KKK3eGYFAcrlWaq7g9z0YR8nI,1000
747
- edc_data_manager/migrations/0001_initial.py,sha256=0C1yMjXYhY29WV9IhOlXJaztrteE83SbcewFkZ2Ehz0,59046
773
+ edc_data_manager/migrations/0001_initial.py,sha256=peL0TZNrJBVNn_mOY_yRKrNL1Tm53lC_hsfJbP9R2U0,59023
748
774
  edc_data_manager/migrations/0002_auto_20190725_1822.py,sha256=bKwLRpbVzXuk52v-sw1rjygt54rDqaFZR--EKFVC1c0,1143
749
775
  edc_data_manager/migrations/0003_auto_20190806_1749.py,sha256=ffSUz25krODYdvbFRpuaQDvMGjiPHuQRr46rzz7C5Bg,4167
750
776
  edc_data_manager/migrations/0004_auto_20190806_1750.py,sha256=0vBbstoKIDJK_rWVizWxuOXlHNC8xKw0nrCrhe8m5A8,388
@@ -768,7 +794,7 @@ edc_data_manager/migrations/0021_auto_20210929_2343.py,sha256=C7g6ozh5Ern-sbUyt3
768
794
  edc_data_manager/migrations/0022_alter_dataquery_recipients_and_more.py,sha256=4NowxWGnjew67l1Mq9RNmBCC079q5sPDZ0XfMdkcLR4,2298
769
795
  edc_data_manager/migrations/0023_auto_20220704_1841.py,sha256=B2tgV3XB7BEKnWtvwTciyjN-YYoFoafkTpDE6HW1jl8,1943
770
796
  edc_data_manager/migrations/0024_alter_dataquery_action_identifier_and_more.py,sha256=yzzkHecsRBBXhflfbW_iDIgUoBdBzwROWGZ0XDbHepk,637
771
- edc_data_manager/migrations/0025_edcpermissions.py,sha256=Xvj_a1XrE8ySb9V6zZIZtPOs--dFJK8jmmc-AIlTXeA,3723
797
+ edc_data_manager/migrations/0025_edcpermissions.py,sha256=wloVx5dK_xqzhWJOhl2b3d1Q4GbigLKvg7eZUGfDEA8,3700
772
798
  edc_data_manager/migrations/0026_auto_20220826_0258.py,sha256=-g2mfVIzbW3p9yJjY5VtHCNNXqL9GGBkqidWaYDXXAk,656
773
799
  edc_data_manager/migrations/0027_alter_dataquery_dm_user.py,sha256=0xlpITk89fDNkciJa9MdSW4Xs2Ovf-t7-IG3eodOAtY,741
774
800
  edc_data_manager/migrations/0028_alter_dataquery_options_alter_queryrule_options_and_more.py,sha256=EcA00ACxPHSuLJvcHEfWjQzJzs9FVBKvSSFrtflLHpA,1736
@@ -846,6 +872,57 @@ edc_document_status/modeladmin_mixins.py,sha256=tLLzAjKVC8vi8sawOovfXOKPd9uFqxAh
846
872
  edc_document_status/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
847
873
  edc_document_status/models/signals.py,sha256=yZmZiYD3c2QDqUUTdTN087Fc3_B2-Vi-983kArz52KY,1328
848
874
  edc_document_status/urls.py,sha256=Hgg7_Kjo7c1aFcXBB8kuOJIvW5IY7Do7z5vkeBAWEDQ,213
875
+ edc_dx/__init__.py,sha256=im7QJgvIrK5LLffGaTEL5v_TT81Io51SjF3cjPwPHnk,156
876
+ edc_dx/apps.py,sha256=L9jTcNHWXli9vYd5FPnyc7SXOj-qs_3ntVJ549nJ0XE,109
877
+ edc_dx/diagnoses.py,sha256=N99awNy9ZReb4Ko5oBqJN6CfF-jL3wIpnsPYe3Yttgs,9071
878
+ edc_dx/form_validators/__init__.py,sha256=0Xdntahcc_2lYyYIdigkkcZMtfGTa1qX3C1zo0NW-eo,138
879
+ edc_dx/form_validators/diagnosis_form_validator_mixin.py,sha256=a5pyop7VIjMe1Tjj_FY2TDtkyUmxk66Rms_4qvpIQSo,1925
880
+ edc_dx/form_validators/result_form_validator_mixin.py,sha256=4Yby5_ZZyNmqAanJENcQh-c_yMybi7JjI20_SbtCHu4,2492
881
+ edc_dx/utils.py,sha256=tHhSJgXYz_DwP9Ujhi4MVLFc2Sz-oxcOQEpDO9elz5w,1223
882
+ edc_dx_review/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
883
+ edc_dx_review/apps.py,sha256=kgCI6K_HKHiKb1MfblBJSr-naZk7bABgMWhtpmIl1wg,116
884
+ edc_dx_review/auth_objects.py,sha256=fir01mK9KQt6puhTrRvMVLSPsj9cKp96ljsJBzo0e_o,521
885
+ edc_dx_review/auths.py,sha256=8fhtn7J3YSJMxGFu3ZzuBrBoi_dCgohXe1oIWGSdtdY,360
886
+ edc_dx_review/choices.py,sha256=AufGpbPViQ6eA0TJxfod3g9Y8T-aLvr6tulAHL3AQtc,643
887
+ edc_dx_review/constants.py,sha256=1l1n556hBzL5M_fbnQkxK4dXzYH_35pem42QZVWHslk,204
888
+ edc_dx_review/fieldsets.py,sha256=aLgxJqfz8XsoK9dXI4wa8v9qS_GD1KQbO0b2pVg_ClA,1276
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=A9Q4aTzwPR4hg48LmUztoH56hsaRxsa93at8lJXGiMg,942
891
+ edc_dx_review/form_validator_mixins/__init__.py,sha256=qlmi4uKl-Dqtliyw42ZfldMkYhdgAs4xOwK9isYGEMA,218
892
+ edc_dx_review/form_validator_mixins/clinical_review_baseline_form_validator_mixin.py,sha256=KFc4PwH2__fo4OvHrBtNTuYApliVuiD-VT1RRnmqcCw,226
893
+ edc_dx_review/form_validator_mixins/clinical_review_followup_form_validator_mixin.py,sha256=fNZF9TJrak9e9yUb8VJNLElLThWLGma3Wun5-DP6OtA,1097
894
+ edc_dx_review/list_data.py,sha256=Igsmks2rDC95PDMWZmWLynhvQ6dBL2K0qazwtEDDXOc,711
895
+ edc_dx_review/medical_date.py,sha256=CHRJsiKuZUpyJeEVOqc0A9jGFE2lsZByKTzzi9jl5DQ,6907
896
+ edc_dx_review/migrations/0001_initial.py,sha256=0BmL_Pj5j-lRlR_IBzwDqGH96pIOT8mlf3huCK43Jlk,11691
897
+ edc_dx_review/migrations/0002_diagnosislocations_extra_value_and_more.py,sha256=I8wCv3MXFzDufDC9fksSfKjDNi5TK_whkWN0Jc6a4Pg,965
898
+ edc_dx_review/migrations/0003_alter_diagnosislocations_options_and_more.py,sha256=xeaCnYnmqFnVemeqNhuIc8-o9SAKZpguZHd4QTinr7c,5011
899
+ edc_dx_review/migrations/0004_remove_diagnosislocations_edc_dx_revi_name_a39b40_idx_and_more.py,sha256=a0yE-oHCphIt9-PjfMa5qLb1FNBoMbcq1qliyw6MGVQ,524
900
+ edc_dx_review/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
901
+ edc_dx_review/model_mixins/__init__.py,sha256=-Yga4EAzAyBO9Q6Wmtj9bfKujnVBFPxklp98pkhvijw,700
902
+ edc_dx_review/model_mixins/clinical_review_baseline_model_mixin.py,sha256=Pt_P8wejad66krsuiYLjm6rWaWmdK8oM3xTfFjg3qHk,926
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=0926O-SKcTRLv06bCx-6VZSQXFryH5-W818_vakDRDA,1677
905
+ edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_dm_model_mixin.py,sha256=LanclLOeI_FE85YeyuQk4_fmTVCHg8qoo3SJ3lEHrGw,1653
906
+ edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_hiv_model_mixin.py,sha256=JDQX4YoDCKbFOMRr2yB-G3qBaHuhr9PefFYgnHrzuu0,1680
907
+ edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_htn_model_mixin.py,sha256=6NtMzddh3eQjGpZwU7TmXbvKQ_XB7jZ0tb3KteMyqQA,1738
908
+ edc_dx_review/model_mixins/clinical_review_followup/clinical_review_followup_model_mixin.py,sha256=UoH1P_MHw4XL46FTLa4juYK9iYbXeki0OdicdTkBeS8,892
909
+ edc_dx_review/model_mixins/dx_location_model_mixin.py,sha256=aJYuHDUrJ8TPpMIuhBMT3QyIAVKua5bWrWyVhzKXYQE,425
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=mPdS6lOhlZ1e21ikxBkKjjqjg4ba9Oad3tiCgfJ_l3E,1746
912
+ edc_dx_review/model_mixins/factory/calculate_date.py,sha256=wBLnTj3-JN70fp58uLvukmr0zfzVlVpYFut3-cXNdjM,1526
913
+ edc_dx_review/model_mixins/factory/dx_initial_review_model_mixin_factory.py,sha256=FVf2NcwpA0rDBJNX_f5KSv0i7VmsEM47kIn7Zf500kw,3222
914
+ edc_dx_review/model_mixins/factory/followup_review_model_mixin_factory.py,sha256=rlsct84TTyfbHkB1hdsHKEHE_FC_0TA1f_xgc_n7ufs,1246
915
+ edc_dx_review/model_mixins/factory/rx_initial_review_model_mixin_factory.py,sha256=a98icJL6J31xEyYQ1eppVYTte-jPQdo9C2KdgpmwZ4g,2376
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=41DfNIvUUd6NUbbjCMbC-5dBA5KEV3JQfTmtob88oSM,673
918
+ edc_dx_review/model_mixins/followup_review/hiv_followup_review_model_mixin.py,sha256=HLTl0wUV4FUY5_uwww79ZzwircfQyjZ7FbV29lenrmc,1034
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=efe7lG6HiUPVROZNl9GYuUi_wRO0mBTkVHetwG48gCk,1000
921
+ edc_dx_review/model_mixins/initial_review/hiv_initial_model_mixins.py,sha256=V99wib43CfTFdFB9-U7EAbpPbXDWHHJdHQcYkWODTX0,3641
922
+ edc_dx_review/model_mixins/initial_review/ncd_initial_review_model_mixin.py,sha256=4EKYkCUGEBmLhH1gs2CikFAh7jP6aJWHfNBu9zc841o,1192
923
+ edc_dx_review/models.py,sha256=j270tH76Fb-WYMc7nR_4JfIT9An5QQ-FSTiiGer4YUE,610
924
+ edc_dx_review/radio_fields.py,sha256=bbQrzZoWtbQ7ywP3e8yR0d_uzW5rloqpgZT0zuLzbQ4,833
925
+ edc_dx_review/utils.py,sha256=i3dmJLzyaGwLlCY9GMDpDx8zWMCcFzcWA5zqSXOSiKo,6985
849
926
  edc_egfr/__init__.py,sha256=q9hW6cas07gJxgElFaN7AtUGzwTwHuXvexxGFej3_pQ,56
850
927
  edc_egfr/admin/__init__.py,sha256=X4SsX1UIcGwxzNHH2uG4rnLxLQiYcLJeGLi4agxnkEQ,79
851
928
  edc_egfr/admin/egfr_drop_notification_admin_mixin.py,sha256=Chet4mYDfZI4ohYrAyyf4CymZE6jCkYUB7y7uSAP-rs,2431
@@ -894,7 +971,7 @@ edc_export/managers.py,sha256=piE9G2TVtGc6nWKF7C-J7SEdyub-2f9bCpeID2upeWU,1202
894
971
  edc_export/migrations/0001_initial.py,sha256=9DbV6QOtBpi7XRBueAdcw4YZkKeOJY2O6jhoWAbS1QU,59347
895
972
  edc_export/migrations/0002_auto_20180922_1843.py,sha256=0Qu02ZQcroXd0JNufE0H5QRpNcl2t3BXlmcOnt2DUNg,495
896
973
  edc_export/migrations/0003_auto_20181108_0353.py,sha256=EOKWHz85wvsdy2MVsfuZxPYiNEDiW7uCUSOaW1_Y5gU,1520
897
- edc_export/migrations/0004_auto_20190305_0123.py,sha256=AV3QOrvFl63UlYyIj925uJ1DShRuF5JALo7QaX77gEM,18278
974
+ edc_export/migrations/0004_auto_20190305_0123.py,sha256=VuxCw4ki_uS_Jnyx7gMsFMSaGDnDQSCmCQ-28qHg8Vs,18255
898
975
  edc_export/migrations/0005_exportdata_importdata.py,sha256=wwmna0PSA8EIsWFaYZ3KrtlNK3_88Hd-0Ob8kI8tVTo,1293
899
976
  edc_export/migrations/0006_auto_20200512_0208.py,sha256=64dWWC__7Q7y6Ofnrp3EtGUMm1mN8QXBdo90LX4jAJ8,869
900
977
  edc_export/migrations/0007_auto_20200512_0452.py,sha256=bArviQEPu0y1XR3oqJNUn7TjIb-quc3RDIiTO2komtw,673
@@ -903,7 +980,7 @@ edc_export/migrations/0009_auto_20210510_2036.py,sha256=F5wk4LVc5NHM1Xq1gOojB0oj
903
980
  edc_export/migrations/0010_auto_20210910_1636.py,sha256=eiIpAJIAe63p9rgHZrmD1k-A-AlJtXYZCPJMAgNwYwo,641
904
981
  edc_export/migrations/0011_auto_20220215_2308.py,sha256=6OERqWBbmshSSmrhHknTytD2I_KYGcVBv-jd9QSar_g,1301
905
982
  edc_export/migrations/0012_auto_20220704_1841.py,sha256=-cSkGlWNAyeDGrYBvxbrtdcVtwmRwxs3Br6VCVTXwOQ,3017
906
- edc_export/migrations/0013_edcpermissions.py,sha256=llIK_9gGtvAsmvevJz7ZIbWCljpTAD20n2DuTP5PCks,3693
983
+ edc_export/migrations/0013_edcpermissions.py,sha256=vU4YDZE29mPob-U_vPkuHOx_LEVCy8G6bc-JE5_kkMI,3670
907
984
  edc_export/migrations/0014_alter_plan_options.py,sha256=JYJ1qFQKIi1AuPcr-vLID1z6_P4CRN_muy7lMfpTZaI,720
908
985
  edc_export/migrations/0015_alter_datarequest_managers_and_more.py,sha256=z-a8J09rXJM4147Km4yW6s6sqybBzZ9fvrQiQbdjvKQ,1834
909
986
  edc_export/migrations/0016_alter_datarequest_device_created_and_more.py,sha256=VEBDPVGzGBgt9NDpr6ceSI6xsOr2XKiCLjW9GsMq1Mw,16453
@@ -976,7 +1053,7 @@ edc_facility/migrations/0001_initial.py,sha256=lez34ZmETFkmkJFGKAgyKOZcMWIXm90lY
976
1053
  edc_facility/migrations/0002_auto_20180102_1158.py,sha256=7euFTkf0JP5C3-SzRcgys-fQoBTWz24SNRHIJVHFz3o,1180
977
1054
  edc_facility/migrations/0003_auto_20190901_1100.py,sha256=9FCKSWu5F7Jhiq3lwtbR7wiLMpP8D3a_Re6nCSWKsJs,479
978
1055
  edc_facility/migrations/0004_auto_20210423_1451.py,sha256=GmDtxRVp8jk-aQePPXfsHy2TzsNueY3bI51iPTLpBTQ,410
979
- edc_facility/migrations/0005_healthfacility_healthfacilitytypes_and_more.py,sha256=hGJQKbxY8yfqSImiLa309OHycWi0YUDh5puGz0SI6IU,17960
1056
+ edc_facility/migrations/0005_healthfacility_healthfacilitytypes_and_more.py,sha256=t_zdWZUEwGW0BL1Sft_rnphFtN7n5OYPaEzKx1K9_VA,17937
980
1057
  edc_facility/migrations/0006_alter_healthfacility_health_facility_type.py,sha256=tL0ha1D_E9o4wvr9_J1VEPNrwYScnMSEoXmHmQNCjxY,674
981
1058
  edc_facility/migrations/0007_healthfacilitytypes_extra_value.py,sha256=6hKkWs0Xi1_t2AG8n3_BSUN1kup5lczbh8zmW2Yr0Ws,441
982
1059
  edc_facility/migrations/0008_alter_healthfacility_device_created_and_more.py,sha256=GeN_8KUMIIhIPPiyHoOHLJAOmiJopMfes4ug85Z0i9M,2831
@@ -3316,7 +3393,7 @@ edc_vitals/form_validators/bmi_form_validator_mixin.py,sha256=rQMLHMOkqLUGT9c2-D
3316
3393
  edc_vitals/form_validators/weight_height_with_bmi_form_validator_mixin.py,sha256=cZDmENLbwnuKQd7jirq-oxkeTKU9wYNd0x-DTrf_ldk,553
3317
3394
  edc_vitals/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3318
3395
  edc_vitals/model_mixins/__init__.py,sha256=Nvu9-rNd0P5efB7KS74OHUE_AMJL_qtjUepEt0BuT8I,177
3319
- edc_vitals/model_mixins/blood_pressure_model_mixin.py,sha256=vJbZyjetpoYhDOe3Em-uYXXUTAJhx57TAWLidXlvdhY,2034
3396
+ edc_vitals/model_mixins/blood_pressure_model_mixin.py,sha256=BP9-rns3xDG40DoIFbkpzTSc78u68vNNddRxh8EXOEY,2054
3320
3397
  edc_vitals/model_mixins/weight_height_bmi_model_mixin.py,sha256=tI-F5wU3hMXbxWRIEWsOF0bbwt_JdBFgMYiluwn7JxA,1096
3321
3398
  edc_vitals/models/__init__.py,sha256=kojBDnW6CZiBORa4hn7CtVl0D6pku3i7M1t8uVoVhWg,210
3322
3399
  edc_vitals/models/fields/__init__.py,sha256=2mpaP8hoI0-4c5vlZZVoUFvGuy9rjfT7im3k8jykDyU,327
@@ -3329,7 +3406,7 @@ edc_vitals/models/fields/waist_circumference.py,sha256=fZcHFDdEwWLjIVLktKrFCD9UU
3329
3406
  edc_vitals/models/fields/weight.py,sha256=zo9_9e3Cpu0UqoRbWS-iDkcDo6fK80b1dDQy4x4MyxE,921
3330
3407
  edc_vitals/utils.py,sha256=vXid44KUXxeaSyund_y5MNXc5DFJs052_PwUAjszE2k,1384
3331
3408
  edc_vitals/validators.py,sha256=vNiElWMs0rRnHRNuVoPLRf0rW_C_0xcfUyep1Y_Si5s,156
3332
- clinicedc-2.0.12.dist-info/licenses/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
3333
- clinicedc-2.0.12.dist-info/WHEEL,sha256=-neZj6nU9KAMg2CnCY6T3w8J53nx1kFGw_9HfoSzM60,79
3334
- clinicedc-2.0.12.dist-info/METADATA,sha256=AUDiyVHpPZRoJussiIZmp8tig69uq7oiSYes4es_8UY,15892
3335
- clinicedc-2.0.12.dist-info/RECORD,,
3409
+ clinicedc-2.0.13.dist-info/licenses/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
3410
+ clinicedc-2.0.13.dist-info/WHEEL,sha256=-neZj6nU9KAMg2CnCY6T3w8J53nx1kFGw_9HfoSzM60,79
3411
+ clinicedc-2.0.13.dist-info/METADATA,sha256=Qe7GZ-I1dQExgWXJk70U7IJrafjScA4vbPGAEDwP75s,15924
3412
+ clinicedc-2.0.13.dist-info/RECORD,,
@@ -2,7 +2,7 @@
2
2
 
3
3
  import django_audit_fields.fields.hostname_modification_field
4
4
  import django_audit_fields.fields.userfield
5
- import django_audit_fields.models.audit_model_mixin
5
+ import django.utils.timezone
6
6
  from django.db import migrations, models
7
7
  import django.utils.timezone
8
8
 
@@ -4,7 +4,7 @@ import _socket
4
4
  import django_audit_fields.fields.hostname_modification_field
5
5
  import django_audit_fields.fields.userfield
6
6
  import django_audit_fields.fields.uuid_auto_field
7
- import django_audit_fields.models.audit_model_mixin
7
+ import django.utils.timezone
8
8
  import django_revision.revision_field
9
9
  from django.db import migrations, models
10
10
  import django.utils.timezone
@@ -4,7 +4,7 @@ import _socket
4
4
  import django_audit_fields.fields.hostname_modification_field
5
5
  import django_audit_fields.fields.userfield
6
6
  import django_audit_fields.fields.uuid_auto_field
7
- import django_audit_fields.models.audit_model_mixin
7
+ import django.utils.timezone
8
8
  import django_revision.revision_field
9
9
  from django.db import migrations, models
10
10
  import django.utils.timezone
@@ -4,7 +4,7 @@ import _socket
4
4
  import django_audit_fields.fields.hostname_modification_field
5
5
  import django_audit_fields.fields.userfield
6
6
  import django_audit_fields.fields.uuid_auto_field
7
- import django_audit_fields.models.audit_model_mixin
7
+ import django.utils.timezone
8
8
  import django_revision.revision_field
9
9
  from django.db import migrations, models
10
10
  import django.utils.timezone
@@ -4,7 +4,7 @@ import _socket
4
4
  import django_audit_fields.fields.hostname_modification_field
5
5
  import django_audit_fields.fields.userfield
6
6
  import django_audit_fields.fields.uuid_auto_field
7
- import django_audit_fields.models.audit_model_mixin
7
+ import django.utils.timezone
8
8
  import django_revision.revision_field
9
9
  from django.db import migrations, models
10
10
  import django.utils.timezone
@@ -4,7 +4,7 @@ import _socket
4
4
  import django_audit_fields.fields.hostname_modification_field
5
5
  import django_audit_fields.fields.userfield
6
6
  import django_audit_fields.fields.uuid_auto_field
7
- import django_audit_fields.models.audit_model_mixin
7
+ import django.utils.timezone
8
8
  import django_revision.revision_field
9
9
  from django.db import migrations, models
10
10
  import django.utils.timezone
@@ -54,9 +54,7 @@ class HospitalizationModelMixin(NonUniqueSubjectIdentifierFieldMixin, models.Mod
54
54
  )
55
55
 
56
56
  narrative = models.TextField(
57
- verbose_name="Narrative",
58
- max_length=500,
59
- blank=True,
57
+ verbose_name="Narrative", max_length=500, blank=True, default=""
60
58
  )
61
59
 
62
60
  class Meta(NonUniqueSubjectIdentifierFieldMixin.Meta):
@@ -0,0 +1,3 @@
1
+ from .row import RowDefinition, RowStatistics, RowStatisticsWithGender
2
+ from .styler import Styler
3
+ from .table import Table
edc_analytics/apps.py ADDED
@@ -0,0 +1,8 @@
1
+ from django.apps import AppConfig as DjangoAppConfig
2
+
3
+
4
+ class AppConfig(DjangoAppConfig):
5
+ name = "edc_analytics"
6
+ verbose_name = "Edc Analytics"
7
+ has_exportable_data = False
8
+ include_in_administration_section = False
@@ -0,0 +1,26 @@
1
+ MEAN_95CI = "mean_95ci"
2
+ MEAN_RANGE = "mean_range"
3
+ MEAN_SD = "mean_sd"
4
+ MEDIAN_IQR = "median_iqr"
5
+ MEDIAN_RANGE = "median_range"
6
+ N_MEAN = "n_mean"
7
+ N_ONLY = "n_only"
8
+ N_RANGE = "n_range"
9
+ N_WITH_COL_PROP = "n_with_col_prop"
10
+ N_WITH_ROW_PROP: str = "n_with_row_prop"
11
+
12
+ COUNT_COLUMN = "count"
13
+ TITLE_COLUMN = "title"
14
+
15
+ STATISTICS = [
16
+ MEAN_95CI,
17
+ MEAN_RANGE,
18
+ MEAN_SD,
19
+ MEDIAN_IQR,
20
+ MEDIAN_RANGE,
21
+ N_MEAN,
22
+ N_ONLY,
23
+ N_RANGE,
24
+ N_WITH_COL_PROP,
25
+ N_WITH_ROW_PROP,
26
+ ]
@@ -0,0 +1,11 @@
1
+ from .age import AgeTable
2
+ from .art import ArtTable
3
+ from .bmi import BmiTable
4
+ from .bp import BpTable
5
+ from .fasting import FastingTable
6
+ from .fbg import FbgTable
7
+ from .fbg_ogtt import FbgOgttTable
8
+ from .gender import GenderTable
9
+ from .hba1c import HbA1cTable
10
+ from .ogtt import OgttTable
11
+ from .waist import WaistCircumferenceTable
@@ -0,0 +1,72 @@
1
+ import pandas as pd
2
+ from edc_constants.constants import FEMALE, MALE
3
+
4
+ from ..constants import MEDIAN_RANGE, N_ONLY, N_WITH_COL_PROP, N_WITH_ROW_PROP
5
+ from ..row import RowDefinition, RowDefinitions
6
+ from ..table import Table
7
+
8
+
9
+ class AgeTable(Table):
10
+
11
+ col_a = FEMALE
12
+ col_b = MALE
13
+ column_name = "gender"
14
+
15
+ def __init__(self, main_df: pd.DataFrame = None):
16
+ super().__init__(colname="age_in_years", main_df=main_df, title="Age (years)")
17
+
18
+ @property
19
+ def row_definitions(self) -> RowDefinitions:
20
+ df_tmp = self.main_df.copy()
21
+ row_defs = RowDefinitions(reverse_rows=False)
22
+ row0 = RowDefinition(
23
+ title=self.title,
24
+ label=self.default_sublabel,
25
+ condition=(df_tmp[self.column_name].notna()),
26
+ columns={
27
+ self.col_a: (N_ONLY, 2),
28
+ self.col_b: (N_ONLY, 2),
29
+ "All": (N_ONLY, 2),
30
+ },
31
+ drop=False,
32
+ )
33
+ row_defs.add(row0)
34
+ columns = {
35
+ self.col_a: (N_WITH_COL_PROP, 2),
36
+ self.col_b: (N_WITH_COL_PROP, 2),
37
+ "All": (N_WITH_ROW_PROP, 2),
38
+ }
39
+ bin1 = (df_tmp[self.colname] >= 18) & (df_tmp[self.colname] < 35)
40
+ bin2 = (df_tmp[self.colname] >= 35) & (df_tmp[self.colname] < 50)
41
+ bin3 = (df_tmp[self.colname] >= 50) & (df_tmp[self.colname] < 65)
42
+ bin4 = df_tmp[self.colname] >= 65
43
+ row_defs.add(RowDefinition(label="18-34", condition=bin1, columns=columns, drop=False))
44
+ row_defs.add(RowDefinition(label="35-49", condition=bin2, columns=columns, drop=False))
45
+ row_defs.add(RowDefinition(label="50-64", condition=bin3, columns=columns, drop=False))
46
+ row_defs.add(
47
+ RowDefinition(label="65 and older", condition=bin4, columns=columns, drop=False)
48
+ )
49
+ if len(df_tmp[df_tmp[self.colname].isna()]) > 0:
50
+ row_defs.add(
51
+ RowDefinition(
52
+ colname="age_in_years",
53
+ label="not recorded",
54
+ condition=(df_tmp[self.colname].isna()),
55
+ columns=columns,
56
+ drop=False,
57
+ )
58
+ )
59
+ columns = {
60
+ self.col_a: (MEDIAN_RANGE, 2),
61
+ self.col_b: (MEDIAN_RANGE, 2),
62
+ "All": (MEDIAN_RANGE, 2),
63
+ }
64
+ row_defs.add(
65
+ RowDefinition(
66
+ colname="age_in_years",
67
+ label="Median (range)",
68
+ condition=(self.main_df[self.colname].notna()),
69
+ columns=columns,
70
+ )
71
+ )
72
+ return row_defs
@@ -0,0 +1,88 @@
1
+ import pandas as pd
2
+ from edc_constants.constants import FEMALE, MALE
3
+
4
+ from ..constants import N_ONLY, N_WITH_COL_PROP, N_WITH_ROW_PROP
5
+ from ..row import RowDefinition, RowDefinitions
6
+ from ..table import Table
7
+
8
+
9
+ class ArtTable(Table):
10
+ def __init__(self, main_df: pd.DataFrame = None):
11
+ super().__init__(colname=None, main_df=main_df, title="HIV Care")
12
+
13
+ @property
14
+ def row_definitions(self) -> RowDefinitions:
15
+ df_tmp = self.main_df.copy()
16
+ row_defs = RowDefinitions(reverse_rows=False)
17
+ row0 = RowDefinition(
18
+ title=self.title,
19
+ label=self.default_sublabel,
20
+ condition=(df_tmp["gender"].notna()),
21
+ columns={FEMALE: (N_ONLY, 2), MALE: (N_ONLY, 2), "All": (N_ONLY, 2)},
22
+ drop=False,
23
+ )
24
+ row_defs.add(row0)
25
+ columns = {
26
+ FEMALE: (N_WITH_COL_PROP, 2),
27
+ MALE: (N_WITH_COL_PROP, 2),
28
+ "All": (N_WITH_ROW_PROP, 2),
29
+ }
30
+
31
+ cond_art_stable = (
32
+ (df_tmp["on_rx_stable"] == "Yes")
33
+ & (df_tmp["vl_undetectable"] == "Yes")
34
+ & (df_tmp["art_six_months"] == "Yes")
35
+ )
36
+ row_defs.add(
37
+ RowDefinition(
38
+ label="Stable on ART (6m)",
39
+ condition=cond_art_stable,
40
+ columns=columns,
41
+ drop=True,
42
+ )
43
+ )
44
+
45
+ # look for anyone that is not stable by these three values
46
+ condition_partially_stable = (
47
+ (df_tmp["on_rx_stable"] == "Yes")
48
+ | (df_tmp["vl_undetectable"] == "Yes")
49
+ | (df_tmp["art_six_months"] == "Yes")
50
+ )
51
+ row_defs.add(
52
+ RowDefinition(
53
+ label="Other stable (`VL` or `on ART` or `stable 6m`)",
54
+ condition=condition_partially_stable,
55
+ columns=columns,
56
+ drop=True,
57
+ )
58
+ )
59
+
60
+ condition_other = (
61
+ (df_tmp["on_rx_stable"] == "No")
62
+ | (df_tmp["vl_undetectable"] == "No")
63
+ | (df_tmp["art_six_months"] == "No")
64
+ )
65
+
66
+ row_defs.add(
67
+ RowDefinition(
68
+ label="Other",
69
+ condition=condition_other,
70
+ columns=columns,
71
+ drop=True,
72
+ )
73
+ )
74
+
75
+ condition_not_recorded = (
76
+ (df_tmp["on_rx_stable"].isna())
77
+ & (df_tmp["vl_undetectable"].isna())
78
+ & (df_tmp["art_six_months"].isna())
79
+ )
80
+ row_defs.add(
81
+ RowDefinition(
82
+ label="Not recorded",
83
+ condition=condition_not_recorded,
84
+ columns=columns,
85
+ drop=True,
86
+ )
87
+ )
88
+ return row_defs