meta-edc 0.3.38__py3-none-any.whl → 0.3.39__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.
Files changed (85) hide show
  1. meta_analytics/__init__.py +0 -2
  2. meta_analytics/dataframes/__init__.py +1 -0
  3. meta_analytics/dataframes/get_last_imp_visits_df.py +101 -0
  4. meta_auth/auth_objects.py +1 -0
  5. meta_consent/consents.py +6 -0
  6. meta_consent/locale/lg/LC_MESSAGES/django.po +69 -0
  7. meta_consent/locale/sw/LC_MESSAGES/django.po +12 -12
  8. meta_dashboard/locale/lg/LC_MESSAGES/django.po +30 -0
  9. meta_dashboard/locale/sw/LC_MESSAGES/django.po +11 -2
  10. meta_dashboard/navbars.py +2 -0
  11. meta_dashboard/tests/urls.py +0 -1
  12. meta_dashboard/view_utils/subject_screening_button.py +2 -2
  13. meta_edc/__init__.py +3 -10
  14. meta_edc/{celery/debug.py → celery.py} +2 -2
  15. meta_edc/navbars.py +2 -0
  16. meta_edc/settings/debug.py +4 -0
  17. meta_edc/settings/defaults.py +29 -16
  18. meta_edc/templates/meta_edc/bootstrap3/home.html +1 -1
  19. meta_edc/urls.py +1 -0
  20. {meta_edc-0.3.38.dist-info → meta_edc-0.3.39.dist-info}/METADATA +6 -6
  21. {meta_edc-0.3.38.dist-info → meta_edc-0.3.39.dist-info}/RECORD +70 -59
  22. {meta_edc-0.3.38.dist-info → meta_edc-0.3.39.dist-info}/WHEEL +1 -1
  23. meta_pharmacy/admin/__init__.py +0 -1
  24. meta_pharmacy/admin/actions.py +38 -0
  25. meta_pharmacy/admin_site.py +5 -1
  26. meta_pharmacy/apps.py +2 -0
  27. meta_pharmacy/forms/__init__.py +2 -0
  28. meta_pharmacy/forms/rx_form.py +16 -0
  29. meta_pharmacy/{forms.py → forms/substitutions_form.py} +1 -14
  30. meta_pharmacy/label_configs.py +30 -0
  31. meta_pharmacy/labels/__init__.py +3 -1
  32. meta_pharmacy/labels/draw_label_for_subject_with_barcode.py +58 -0
  33. meta_pharmacy/labels/draw_label_for_subject_with_code128.py +14 -0
  34. meta_pharmacy/labels/draw_label_with_test_data.py +26 -0
  35. meta_pharmacy/labels/label_data.py +14 -0
  36. meta_pharmacy/labels/print_sheets.py +22 -11
  37. meta_pharmacy/list_data.py +8 -0
  38. meta_pharmacy/management/commands/__init__.py +0 -0
  39. meta_pharmacy/management/commands/update_initial_pharmacy_data.py +10 -0
  40. meta_pharmacy/migrations/0002_initial.py +7 -5
  41. meta_pharmacy/migrations/0008_remove_lotnumber_medication_and_more.py +390 -0
  42. meta_pharmacy/migrations/0009_remove_historicalrx_slug.py +17 -0
  43. meta_pharmacy/models/__init__.py +1 -2
  44. meta_pharmacy/models/label_data.py +38 -0
  45. meta_pharmacy/models/{label.py → rx_label.py} +8 -19
  46. meta_pharmacy/utils/__init__.py +1 -0
  47. meta_pharmacy/utils/update_initial_pharmacy_data.py +146 -0
  48. meta_prn/admin/pregnancy_notification_admin.py +6 -2
  49. meta_reports/admin/__init__.py +1 -0
  50. meta_reports/admin/dbviews/glucose_summary_admin.py +1 -1
  51. meta_reports/admin/last_imp_refill_admin.py +181 -0
  52. meta_reports/migrations/0052_lastimpvisit.py +57 -0
  53. meta_reports/migrations/0053_rename_lastimpvisit_lastimprefill_and_more.py +31 -0
  54. meta_reports/models/__init__.py +1 -0
  55. meta_reports/models/last_imp_refill.py +34 -0
  56. meta_subject/admin/study_medication_admin.py +10 -0
  57. meta_subject/forms/study_medication_form.py +35 -0
  58. meta_subject/locale/lg/LC_MESSAGES/django.po +470 -0
  59. meta_subject/locale/sw/LC_MESSAGES/django.po +191 -89
  60. meta_subject/metadata_rules/predicates.py +34 -7
  61. meta_subject/migrations/0214_historicalstudymedication_stock_codes_and_more.py +44 -0
  62. meta_subject/migrations/0215_alter_historicalstudymedication_stock_codes_and_more.py +46 -0
  63. meta_subject/tests/tests/test_mnsi.py +180 -113
  64. meta_visit_schedule/visit_schedules/phase_three/crfs.py +18 -6
  65. tests/test_settings.py +4 -1
  66. meta_edc/celery/__init__.py +0 -2
  67. meta_edc/celery/live.py +0 -17
  68. meta_edc/celery/uat.py +0 -17
  69. meta_pharmacy/admin/lot_number_admin.py +0 -43
  70. meta_pharmacy/labels/get_label_data.py +0 -30
  71. meta_pharmacy/models/lot_number.py +0 -25
  72. meta_reports/models/unmanaged/README +0 -14
  73. meta_reports/models/unmanaged/patient_history_missing_baseline_cd4.py +0 -26
  74. meta_reports/models/unmanaged/patient_history_missing_baseline_cd4.sql +0 -10
  75. meta_reports/models/unmanaged/unattended_three_in_row.py +0 -24
  76. meta_reports/models/unmanaged/unattended_three_in_row.sql +0 -19
  77. meta_reports/models/unmanaged/unattended_three_in_row2.py +0 -24
  78. meta_reports/models/unmanaged/unattended_three_in_row2.sql +0 -39
  79. meta_reports/models/unmanaged/unattended_two_in_row.py +0 -22
  80. meta_reports/models/unmanaged/unattended_two_in_row.sql +0 -19
  81. {meta_reports/models/unmanaged → meta_edc/migrations}/__init__.py +0 -0
  82. {meta_edc-0.3.38.dist-info → meta_edc-0.3.39.dist-info}/AUTHORS +0 -0
  83. {meta_edc-0.3.38.dist-info → meta_edc-0.3.39.dist-info}/LICENSE +0 -0
  84. {meta_edc-0.3.38.dist-info → meta_edc-0.3.39.dist-info}/top_level.txt +0 -0
  85. /meta_pharmacy/{admin/label_admin.py → management/__init__.py} +0 -0
@@ -82,12 +82,13 @@ meta_ae/tests/urls.py,sha256=BKiCB7JZCxtZFh6Ym-Y-Hdq92NECIt-GqMDyt6_B7o0,260
82
82
  meta_ae/tests/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
83
  meta_ae/tests/tests/test_actions.py,sha256=W4UglCSs4GLU0_I5grpCz3xprk2OQso2Q6c_9aYWiu8,4915
84
84
  meta_analytics/README.rst,sha256=x5KDks1P2bSPdyq3f9CNkynAAgJaXl7AX_3rnmC16HU,357
85
- meta_analytics/__init__.py,sha256=O4Fkrtyo15GEfghFcb5u_5MRt5J0BvKvtU_mqUX5_yU,116
85
+ meta_analytics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
86
  meta_analytics/constants.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
87
  meta_analytics/get_tables.py,sha256=3jFmvLXWHY3FPd1u5OPVpAKWUcruCH0-A0KdKiiFGpc,2219
88
- meta_analytics/dataframes/__init__.py,sha256=lTRGk8ctu02SFDTVLoLOUHja2_bzvTQyRgqqUuvCWfg,488
88
+ meta_analytics/dataframes/__init__.py,sha256=DHO81CYc5foDgy2HBEnlaHRtohMo-blvSvZPMDQaHUk,547
89
89
  meta_analytics/dataframes/constants.py,sha256=Wcub_3U5xHa027ykotySiUxMECjmswGIADVeT0iJXXs,792
90
90
  meta_analytics/dataframes/get_eos_df.py,sha256=YJ0YB93FkqwpNfWDphzFbX6B7BannbvfScc0WEgtn2w,778
91
+ meta_analytics/dataframes/get_last_imp_visits_df.py,sha256=ROBsYzJvlmSk86jA35dq-hK-2r7Nh6XSyAY8m1Zl93Q,3756
91
92
  meta_analytics/dataframes/utils.py,sha256=2V3nFFnaysuJvNrcHUOLqOk8e_3aP71079kB_YBXcQw,2014
92
93
  meta_analytics/dataframes/enrolled/__init__.py,sha256=uKniE7L86umlSmGOjAFuwwsbyZj31mELGUpY3hByo4s,43
93
94
  meta_analytics/dataframes/enrolled/get_glucose_df.py,sha256=L4gzszNjYzu-QmYu4gs1c7_Edcv7FgAjucihxHtANSY,5004
@@ -106,7 +107,7 @@ meta_analytics/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
106
107
  meta_analytics/tests/test_endpoints_by_date.py,sha256=43uBO5VTcF5zq9I5ow9f6Isn-xs7Km_qOrXELJjaew4,3034
107
108
  meta_auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
109
  meta_auth/apps.py,sha256=AcVJmdM3EuebpqB7A1vXRfYBcovgsqPvE71lnGuM-qo,298
109
- meta_auth/auth_objects.py,sha256=C9ANQTiqML8oH8DharMc8JQYYKV0At9kGCysehcrTfU,2539
110
+ meta_auth/auth_objects.py,sha256=iMbkkeSs_Oua53KBmdIHpsFB52CEopzyQoHq2Okq1sA,2608
110
111
  meta_auth/auths.py,sha256=EBdK6b5b2yduDvqYmnmJFRvuJ0fLDQ_q226iuwHA_QU,3008
111
112
  meta_auth/urls.py,sha256=_sVCnQeiAFRYKhxga3_DjoKj_4bgs1s2gjcynDiapvA,111
112
113
  meta_consent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -114,7 +115,7 @@ meta_consent/action_items.py,sha256=JIU5DCNeenaOk0PVTsDkAvFmHCquXBeFZf4Vw7JONl0,
114
115
  meta_consent/admin_site.py,sha256=r5FtGwonVpqhyGekVNplmHr2mwbEGilJBiyvsIz2_lY,169
115
116
  meta_consent/apps.py,sha256=asTFgxJ1PmX7FkcqjvC5_GkcZVuI5grNx-1qrgNrcyM,282
116
117
  meta_consent/baker_recipes.py,sha256=F0AcBhCJhF2cVDG6EAMoq633I8q005B799yJ6S_Sz1k,1343
117
- meta_consent/consents.py,sha256=EsMjCErt9gUb_NjMF4RcwknJHxbYFhwVSvY_cJfM1DY,552
118
+ meta_consent/consents.py,sha256=dtMsE-uTIwW5m1Uf1gtC8vZtPaK99-MYugXFFZsSQyM,755
118
119
  meta_consent/constants.py,sha256=NezBNv0UVC3ZyG9NRN5Q9Inos8ukd1LoWbLVaGVQ0us,31
119
120
  meta_consent/urls.py,sha256=YXQLoyH5tFMPUK9PTk33Yve_HCWw-rhUrlXegbadxlw,206
120
121
  meta_consent/admin/__init__.py,sha256=dkdGNzXrJ0uBOwFFsmamJ65UAWm1e-CJm3QhuD9kIJE,115
@@ -129,7 +130,8 @@ meta_consent/forms/__init__.py,sha256=rk8VofOfyy4Eybh_gOJCXIRzu1tn57hd82yHUmuF9K
129
130
  meta_consent/forms/subject_consent_form.py,sha256=Dwnwn7y-8AABvzgTa1zfs2b2Mli0OKnNMsx0VOxO9n0,1293
130
131
  meta_consent/forms/subject_consent_v1_form.py,sha256=XHrklzP-wh6ny3VJ2Bf9v7BTaUlfTToYVrpIAm3JZFc,766
131
132
  meta_consent/forms/subject_reconsent_form.py,sha256=lJAaVb3TXwTFjg8-iAJo836wAw2D3ofsfgGUZu_svb0,1306
132
- meta_consent/locale/sw/LC_MESSAGES/django.po,sha256=RzVxgOtTXGX5pWTXogP4ZlkzkMkeEhXdt_HBBW6-isw,1845
133
+ meta_consent/locale/lg/LC_MESSAGES/django.po,sha256=qWq1GuH-sIg05d2vydpYIxS71-fjutlJTPiLEJ905rw,1969
134
+ meta_consent/locale/sw/LC_MESSAGES/django.po,sha256=2xMMhgncC2222wfCMuVBZVi69asNlVq5Z0Z6XtCrVpw,2016
133
135
  meta_consent/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
134
136
  meta_consent/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
135
137
  meta_consent/management/commands/create_missing_prescriptions.py,sha256=h1dMyxfnuVGAQd0mdpzXmdMuvpxK5d7Gnxgd0pumd7U,1438
@@ -173,10 +175,11 @@ meta_consent/tests/tests/test_form_validators.py,sha256=wfDtChl3xxexb9moDJrE586d
173
175
  meta_consent/tests/tests/test_subject_consent.py,sha256=WIWhSDNdJ_dMDw1pwIW75Nfdxje1-Anc7Ic7fYyedhk,376
174
176
  meta_dashboard/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
175
177
  meta_dashboard/apps.py,sha256=xTdgYwloNayjOFxtsxEjSSrn50CqD_xWMe5B6SWEaO4,313
176
- meta_dashboard/navbars.py,sha256=PQg6J4Ho4hnnXYObBJM1MpYHtaHjD_m6rkPOqJ42ZVI,1168
178
+ meta_dashboard/navbars.py,sha256=WJvZI5i3IsOA9PLqn_usUHrwMRzr-hILLeCfmDCneP4,1260
177
179
  meta_dashboard/patterns.py,sha256=y5Of5zem791RMcTLj8YGFE1HkROuAwbGIWy0VtLwloI,47
178
180
  meta_dashboard/urls.py,sha256=Nr9bQyY82rzsYecbD2hClGsiAfcT5UQIiwbKSalbHyg,1193
179
- meta_dashboard/locale/sw/LC_MESSAGES/django.po,sha256=fC_uvrM8tAoFxf2NRNvWqZ0cwC9aYpLgYtUbft21lTk,698
181
+ meta_dashboard/locale/lg/LC_MESSAGES/django.po,sha256=k_8rNvTYu-a1KsGfcGsJ-cx65vxa67yhkTJUVu5mP64,836
182
+ meta_dashboard/locale/sw/LC_MESSAGES/django.po,sha256=lL2_fidRWe_Zv2Q8t_lCfx6GtBNtlSwybL0xm7CLbGA,883
180
183
  meta_dashboard/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
181
184
  meta_dashboard/templates/meta_dashboard/bootstrap3/buttons/add_consent_button.html,sha256=6keqMZ7NrAvcCcl4Dx0dDn0MASj_cAd2IpaXK1ZglK4,447
182
185
  meta_dashboard/templates/meta_dashboard/bootstrap3/buttons/dashboard_button.html,sha256=xGuwTLyegM1kVrFkRlDpXkzD7mcRVfSeO6ZVlQ6A_k8,280
@@ -192,10 +195,10 @@ meta_dashboard/templatetags/meta_dashboard_extras.py,sha256=d_jtyuxSbIhSpKkA5uI5
192
195
  meta_dashboard/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
193
196
  meta_dashboard/tests/admin.py,sha256=4k_kM3YURLIInujRNpPRql3rLxODOZQhCXueoUdU064,716
194
197
  meta_dashboard/tests/holidays.csv,sha256=LIEIm79wHRzbfXcFW_2ogFOYEZaWEGF1hwgOzZy2y34,538
195
- meta_dashboard/tests/urls.py,sha256=MU7MdHlU2VZusGC5cPlrosTulbyut9q-ck9iHv7lreg,2751
198
+ meta_dashboard/tests/urls.py,sha256=FJlQvMLAMbR7UBW2Kl6VQXW9XmYOvqXnZJ4SeQh535E,2674
196
199
  meta_dashboard/tests/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
197
200
  meta_dashboard/view_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
198
- meta_dashboard/view_utils/subject_screening_button.py,sha256=VgCw-5YcygNAuq31QbPxVBS7cbAfGND8e67RUpbVsBg,3370
201
+ meta_dashboard/view_utils/subject_screening_button.py,sha256=NEDMydqrz7FoYMXViOpnvGpFzcRer_I_cfBkt3Mx-84,3327
199
202
  meta_dashboard/views/__init__.py,sha256=TWsNFphAI57Bw2d-X-fy7yayR8AlbtWJ5Wx3YjZPntQ,222
200
203
  meta_dashboard/views/ae/__init__.py,sha256=YjsScDD8GqpXOwZGMgAWZfo64JSc117no6pCt3uGDBo,113
201
204
  meta_dashboard/views/ae/ae_listboard_view.py,sha256=Hwe_alqfy6H4etYqCkKJamT2aJiEqLw6tzJmX1j8Yj8,452
@@ -211,35 +214,33 @@ meta_data_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
211
214
  meta_data_manager/apps.py,sha256=xpcMy8CxRMgyWiKmD2JhbfKgPKTgs42wD4AdNwZJANI,233
212
215
  meta_data_manager/data_manager.py,sha256=T9SWFI0iTSDjff-WX-exBNa3I2d985o-JjyCkrHL1FM,167
213
216
  meta_data_manager/handlers.py,sha256=UMeO8WYs6aVVPtLmnyatT42N9zc7NZI9V1Y6Up08WDA,952
214
- meta_edc/__init__.py,sha256=eJj81bDocr5aG01KG8Ictg5oEnozqtpn6wFZ0Befwrw,600
217
+ meta_edc/__init__.py,sha256=2J3-xicgO6hqSC5ec6bRfCUTlFrouiF_zLHC-sq0eSY,343
215
218
  meta_edc/admin.py,sha256=pbISDsySzbQxK8VFvFncxDXy_ackWj6c7z2H0PYCQGA,845
216
219
  meta_edc/apps.py,sha256=vg5C0EBve4bOFwwPee-boI4qA5geShGcD-DHkpGkWTU,450
217
220
  meta_edc/asgi.py,sha256=jDODkEq-jgxRwl2BL1cDAjOAcoNtvlTIC7MlzBr7FS8,175
221
+ meta_edc/celery.py,sha256=fVeob70iU1S9N3DsVR6RzXSRQiehgvQST7bdH92_LHk,426
218
222
  meta_edc/meta_version.py,sha256=8IASYGnr43t18oDhNAPNnQoKvFYVAUnPILl6a05HAoc,211
219
223
  meta_edc/model_callers.py,sha256=PjQEW7Kp5HHcUMdmz7dvxg53HvGJHXUKr6QTd-4hsyE,1339
220
224
  meta_edc/models.py,sha256=DLA-hDdFszAVNCe1sZqVoLmIXifFW0HeZsipP9D1Ic4,46
221
- meta_edc/navbars.py,sha256=1E7JzjI9NUGKwOVvyMGE2Gs2FM40vImMcuB_01t5FTs,1099
222
- meta_edc/urls.py,sha256=BpDuV2XX7Qe8xkSgjhT7ehiZ7QCVtQwzQiY2YPhta_I,3534
225
+ meta_edc/navbars.py,sha256=XOuo4QEUCBtabYpW0IorT4Hs6GtJgVk7NkB0H_Bb7Vs,1191
226
+ meta_edc/urls.py,sha256=hLeGIjUDoYiCFOao3jCpFL6nkBllEyJ-oV07xR_tsYc,3578
223
227
  meta_edc/utils.py,sha256=FdGGHT0zCUM9FLovLanH_ultcxbVitCvvPAwq0U3yYc,342
224
228
  meta_edc/wsgi.py,sha256=Ns9vu_jcEqpOLM5tb-hwVUh3ciInocrG3kUPAxh7nJg,165
225
229
  meta_edc/wsgi_live.py,sha256=EprgdsDiEvNN033w6lUQHaS8Y3ntpPrWHDTOgZcjaCQ,164
226
230
  meta_edc/wsgi_uat.py,sha256=xZj3TGy1XEi-3OTYvyZzdhgWQu52sYZw-Gt3ZSMKQc4,163
227
- meta_edc/celery/__init__.py,sha256=yeeXVNISo_WG2xDNgPeSg10KyLBQ4btuGw4sSEznrTE,66
228
- meta_edc/celery/debug.py,sha256=zQsPL504VBSdqkSNYlBxldeSKflOj2O5THfvJwVd6bg,432
229
- meta_edc/celery/live.py,sha256=tNk-sb3B5rZb8Yh0lkeSwXx7QHJn-1SWKT7gJuYtvVE,431
230
- meta_edc/celery/uat.py,sha256=m2QXih9y2ePHF5ve84KQ_LunCpjxHNBW4IgAFw4ze6E,430
231
231
  meta_edc/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
232
  meta_edc/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
233
233
  meta_edc/management/commands/update_forms_reference.py,sha256=_DiCqhHUk8lGhDGlsjOA069EE-g7UBDlZQCH6L1xiHo,1003
234
+ meta_edc/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
234
235
  meta_edc/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
235
- meta_edc/settings/debug.py,sha256=-PvZN-nPpEBr49ndpBHFcV71SDu1tAXmVfKESDFIr4Q,947
236
- meta_edc/settings/defaults.py,sha256=Q1WJEfWQF5A-IvFoMeyQi0n5BaPmXSgpfAkJ011B_SY,18764
236
+ meta_edc/settings/debug.py,sha256=BAM92tixl3zuBypdK2aiBrAnQJTXH_X1HbxLj1m-jZI,1152
237
+ meta_edc/settings/defaults.py,sha256=pUyhSJdaYlvpoEPuU0mAWB3XFUL8xjblhald4DjZ3gs,19165
237
238
  meta_edc/settings/live.py,sha256=uLTlsIc3H6gdE_7pkL6vyOVa6V_74hnXFkiojqGFAYY,264
238
239
  meta_edc/settings/logging.py,sha256=6qVUE37OMkf5rzwTmMq4krFsZ2jcyCpWdFtGih_Cs4U,1938
239
240
  meta_edc/settings/minimal.py,sha256=3z-7GBluflnUkuSotKZlYvpL34NZ6tfFNuQNJLCyflo,592
240
241
  meta_edc/settings/uat.py,sha256=P1hovGPgCnuyiVZ-RuZfoEskAEz39hkMAVGjEeP7RDM,270
241
242
  meta_edc/templates/meta_edc/bootstrap3/base.html,sha256=8Agovk1eTpW-2oAgVGsYwL_DAD6zB3DNwGGpPJ2bx-g,165
242
- meta_edc/templates/meta_edc/bootstrap3/home.html,sha256=hHy9fQYEfN_oqsuyC3s-smX7eWf_520t-zBlIs6pcZE,4585
243
+ meta_edc/templates/meta_edc/bootstrap3/home.html,sha256=7dZi4nPEslUm6WwAmE_ow-BT9sOyxRefMmk1PU_4Ez0,4588
243
244
  meta_edc/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
244
245
  meta_edc/tests/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
245
246
  meta_edc/tests/tests/test_endpoints.py,sha256=Vo7rOuBUqCwVWBLSPgwRBqiyU6o4Wc-7Em84PBwFJw0,23497
@@ -290,33 +291,46 @@ meta_lists/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
290
291
  meta_lists/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
291
292
  meta_lists/tests/test_lists.py,sha256=qcp2emRyd5-cP2oLluy8MpUucBDQ8_GdUxjh2KbZPv4,212
292
293
  meta_pharmacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
293
- meta_pharmacy/admin_site.py,sha256=Ekq8Z13f1w4Llm6exO5w4Jk4Bvt-5WN1ydy_BS2rbdI,171
294
- meta_pharmacy/apps.py,sha256=VNiKT23F5d5nkXxzu1L-kAqovNOdfxzp-cUC6qcioVQ,732
294
+ meta_pharmacy/admin_site.py,sha256=rFJDvq7WzcQR7_Tc83k5XtTyLZJBy0tp4h8C0cmvUU4,211
295
+ meta_pharmacy/apps.py,sha256=xjzNu2UMNqR1W2pmJDc-JRTUXKgO5IvRWW3kZBza2XQ,804
295
296
  meta_pharmacy/constants.py,sha256=d3NAZwpxCDm9LLQ_QGKBG2txooYg748Ajh8a2deF0kw,263
296
- meta_pharmacy/forms.py,sha256=4BX6rB7FWBWYlOB2BX4hh3scz5eeKaxt2OCyQBCBO-E,2162
297
+ meta_pharmacy/label_configs.py,sha256=BOblOFyNQsYin8GCs_UeYBn62CnaJQr2EIfff6B-a-I,816
298
+ meta_pharmacy/list_data.py,sha256=HB_TuRUEq01tG-KB1gGzT1V84m4JGYiMT9IoqJInEVc,210
297
299
  meta_pharmacy/prepare_meta_pharmacy.py,sha256=5gNiPkmOzWwCW-_q6hgIzj_0tnPuN4Tl1lVI6FygNgs,2945
298
300
  meta_pharmacy/urls.py,sha256=jncXssL_SeRhb_OJVXLdGFvPT3BqtrkSPdq-eyJnGfY,207
299
- meta_pharmacy/admin/__init__.py,sha256=64RWTeC6qO1G800qe2V7vgeQQ5qo5yEKXTnvviKUBQ4,127
300
- meta_pharmacy/admin/label_admin.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
301
- meta_pharmacy/admin/lot_number_admin.py,sha256=q35jVWzqyqup_NtLUa0b_c3_3H3S30U5DroCdbGkyy0,981
301
+ meta_pharmacy/admin/__init__.py,sha256=ZnYHFOt9xatSSEhPoGtWC6zCvsaygIJX3qJy7iZ9qWk,82
302
+ meta_pharmacy/admin/actions.py,sha256=wRVN7mmZDT0w8FpBLPPZhkTc72WFFd-xGxzsFpcm5Fs,1314
302
303
  meta_pharmacy/admin/rx_admin.py,sha256=SQGsugSnhbU3YUk_ssSTMmCH6no8ZkHoqLLkbZbBbk0,1851
303
304
  meta_pharmacy/admin/substitutions_admin.py,sha256=N2WcuC4REAEX0zrNqQHsPbZI82I4T5UM7EP-ohDOSSI,1934
304
- meta_pharmacy/labels/__init__.py,sha256=fT7pVRKOJGbW4RLqfTP1UsdmZpI1k2tG1G53XVKQZHw,82
305
- meta_pharmacy/labels/get_label_data.py,sha256=QsveAPMlb_LKnltP5Hxsk1mdCkSGhn-cQ_nDkHE3QD0,1088
306
- meta_pharmacy/labels/print_sheets.py,sha256=Z72s2Uu-nWSk2ETlkc6TA59XHgrloIh4t5F9jihoCuU,2540
305
+ meta_pharmacy/forms/__init__.py,sha256=5d28GOPegzZ9ptI-tVx_E19yPTrJ_wQh16xr9ivmS6M,78
306
+ meta_pharmacy/forms/rx_form.py,sha256=zqt45XGAv2Zj4p7k-CDGUHF0LKoeYnncHJBZ3MmN4qI,319
307
+ meta_pharmacy/forms/substitutions_form.py,sha256=f37xagh6D00w3iu6zvh45UWX_L9oD0FsW_0fTsB7540,1894
308
+ meta_pharmacy/labels/__init__.py,sha256=2HgWs6k0cwsAEbwazzorAW-T00238zNBJ111TxM5Gso,223
309
+ meta_pharmacy/labels/draw_label_for_subject_with_barcode.py,sha256=RWJDIoiHZQp8e5N2LEW2Mu8qwI6qAkxfOPALf52TlZI,2155
310
+ meta_pharmacy/labels/draw_label_for_subject_with_code128.py,sha256=dK1F_N91Fhw8rtKi3GWRjbYw5V-XfOjzpF2UDBsE65M,459
311
+ meta_pharmacy/labels/draw_label_with_test_data.py,sha256=KQeQZEka3-2FL1hLIr7Sn9XQX6eXLOOJUlbS612AORA,1188
312
+ meta_pharmacy/labels/label_data.py,sha256=K6kgU3oc8n8NNJLjUZUbvyXakx38V1QL1GgOgWCMzZw,365
313
+ meta_pharmacy/labels/print_sheets.py,sha256=a-qMddeIwY9YIZonBkRXtbxUKBCuMo4FylvIbBeTJc4,2771
314
+ meta_pharmacy/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
315
+ meta_pharmacy/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
316
+ meta_pharmacy/management/commands/update_initial_pharmacy_data.py,sha256=g6_TxYzkqpKLMHORcitQZzjEAb12tezFHKwzS16BzbA,241
307
317
  meta_pharmacy/migrations/0001_initial.py,sha256=2uyWhZ-Qkjum1gJJA5v-BWUdpmKhkf8BcuDQMl8895s,1115
308
- meta_pharmacy/migrations/0002_initial.py,sha256=zkPXmGhdEi-EM0HJRBaTUAltdiLRjW1BhU4GEydoBM8,27355
318
+ meta_pharmacy/migrations/0002_initial.py,sha256=SrbCf6knF3Q_qTzh59wrAiQBhobJf3VjkktoRMlsPDs,27397
309
319
  meta_pharmacy/migrations/0003_auto_20240909_2335.py,sha256=_hbzV6HaBm-VS_jQMhl3w5srvyaYOQclLBvr_8f79uk,2227
310
320
  meta_pharmacy/migrations/0004_alter_historicalsubstitutions_report_datetime_and_more.py,sha256=33SpQ4UtFs3gblj4WG3KtKtalo8Wynv3uyUOqBe7_Zo,585
311
321
  meta_pharmacy/migrations/0005_auto_20240911_0352.py,sha256=ZwjFlBX_ubNDbTnDny7cvgCb4aSiqhVKhTYDWd6oQmg,534
312
322
  meta_pharmacy/migrations/0006_lotnumber_label.py,sha256=hdxvRC-v6appuLFzBJg-PAY30qgkdA_XdAZP6mwq7Mo,11279
313
323
  meta_pharmacy/migrations/0007_lotnumber_medication.py,sha256=uTR_ZYm22n8C1uiWJGfWgtEcYBQ8DdEGvNhQAH_PqNA,646
324
+ meta_pharmacy/migrations/0008_remove_lotnumber_medication_and_more.py,sha256=Wqm3ekvrwEgxo9IqWE6QvUkoB9la9Y6TFd0vVQ4PuA0,15420
325
+ meta_pharmacy/migrations/0009_remove_historicalrx_slug.py,sha256=_f0fDBxRCZeB9irk0KouqPgeJljq41dXr2TBmTNPTXs,356
314
326
  meta_pharmacy/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
315
- meta_pharmacy/models/__init__.py,sha256=lMchriYF--D3oW_nFVd9n6VuFNRdDbrlWQj8ARyyVuA,130
316
- meta_pharmacy/models/label.py,sha256=FlnBQyXZmPUrT_Ibg0L-FQ6oPwBGxFWvf_pMSKDxs-s,1546
317
- meta_pharmacy/models/lot_number.py,sha256=JUT-TXsM_2U3UO6VDz7D10WTNupIjYYAlBVBlzi2VmU,693
327
+ meta_pharmacy/models/__init__.py,sha256=KToZJXSsHyBIN-o7Qzpuxt7I79DsPkp3T9iRg8Ycle8,105
328
+ meta_pharmacy/models/label_data.py,sha256=dV8fpmJ6QpKidHVRfN3IdWEciEGQch8Q8jqJgqkqzFg,1442
318
329
  meta_pharmacy/models/rx.py,sha256=cx0T9j2Vb-6tEotWA7ohsn2OGHnQpxiFQnu7__hx7Ts,379
330
+ meta_pharmacy/models/rx_label.py,sha256=iBqy3c-DvoPnw1g8BAVGQcY5OpI9Ie2YT78rYY0G7WM,1202
319
331
  meta_pharmacy/models/substitutions.py,sha256=9FjjD4x66B8SxABZR5atan2S5uE4nJH0tn0ujB4xEbA,3071
332
+ meta_pharmacy/utils/__init__.py,sha256=PiPRCZqgxPiudXWEvQmXOqFZMoj56NEiOeRuYEyE_9w,71
333
+ meta_pharmacy/utils/update_initial_pharmacy_data.py,sha256=Od0QL41unsDEGDBYsVCe8k-T3GpMae0DtHt61vz4sYM,4621
320
334
  meta_prn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
321
335
  meta_prn/action_items.py,sha256=wz6X7Ve8ibqPBO5kB6S9rYYkWfx8JxsoYRVppzIGAzk,9110
322
336
  meta_prn/admin_site.py,sha256=E4dJ6ofu9Kp-1SIWIuY3PraVPbEJSWBBqhorJPGUNqU,161
@@ -338,7 +352,7 @@ meta_prn/admin/offschedule_postnatal_admin.py,sha256=SpLsX75Q01mqKTSGKXoQ1EKUzYm
338
352
  meta_prn/admin/offschedule_pregnancy_admin.py,sha256=XHM-1EmQ6gzKL7AOf0NlMM_Pn6XOK9TtTSq36HjFY4U,1703
339
353
  meta_prn/admin/onschedule_admin.py,sha256=GX4_wSqMDtQdB_x3nhodaDZ_E3d8kPPy-Yprpp6BJOk,1440
340
354
  meta_prn/admin/onschedule_dm_referral_admin.py,sha256=gfWE-NpHC4ICjKb1Fhb5XZUQ5syTp0s0_9IU1-ZTp0k,1470
341
- meta_prn/admin/pregnancy_notification_admin.py,sha256=GhLyllX8VWmzsu6Uxn218WZork1ljwEXdhMvmyYLLZU,2144
355
+ meta_prn/admin/pregnancy_notification_admin.py,sha256=fIAbpU1QEVAGeewxc2xcRu7aipz0srjzRNxPv7ZZrR8,2284
342
356
  meta_prn/admin/protocol_incident_admin.py,sha256=fTlYJAxsrPDB8skZc-_2DxKH21k_cG7UH7wCgnviBck,739
343
357
  meta_prn/admin/subject_transfer_admin.py,sha256=YKViIZLAaAquiN5RO-V6lRoGP76bYwcb_EA5QTEeI2Y,723
344
358
  meta_prn/form_validators/__init__.py,sha256=ROZbWrtQ4dLCwy-aeBcOh0mnYm12qFrvUWzV-BkGvTU,111
@@ -455,13 +469,14 @@ meta_reports/pdf_report.py,sha256=9lWnRc_BNieDFXC4VgA0QHK6g_ct58u8tupPRsbRvV0,23
455
469
  meta_reports/tasks.py,sha256=wPzfm99Hox1AIvt1KxYg1r6g9v8ta2AHOHesoN6AxEk,370
456
470
  meta_reports/urls.py,sha256=_c6AMrK4U5MsyFSU2JSPNfiZlbhuw24C7CyPNYpqGd0,206
457
471
  meta_reports/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
458
- meta_reports/admin/__init__.py,sha256=3GDQM-HA1h8FdsmGSAiPaCd1paMGGJHTq6Ivd4Ob9bA,434
472
+ meta_reports/admin/__init__.py,sha256=om3lFa4YxsZSNlYIi2sZv8li2irOMoSeBtOpPk4V3lk,488
459
473
  meta_reports/admin/endpoints_admin.py,sha256=7wZCdC-D-QHI1bb_ucgyDZYlnYD7mWtcZpcH_LftkLs,514
460
474
  meta_reports/admin/endpoints_all_admin.py,sha256=_czdezZf9fSjwZJmO-3HbmdXrXP6nk8-HdiweqUzPRE,476
475
+ meta_reports/admin/last_imp_refill_admin.py,sha256=iXXRHQa9irNWs3N6wkw-7fF4ZCyh-5mEaLRlYXOpZL0,6719
461
476
  meta_reports/admin/list_filters.py,sha256=pByBzz9-qGwqBfdZFlByxJUZDTJQXOTWfNLjmK8KF00,870
462
477
  meta_reports/admin/modeladmin_mixins.py,sha256=tEZYw0xNMfBvo2RLDrYfi_S9lbZU02dwtLxdRDZob4Q,3663
463
478
  meta_reports/admin/dbviews/__init__.py,sha256=2yPu0SO7ZX9yjan0OS9izzws14YYoXcGXmZhwJhax1I,675
464
- meta_reports/admin/dbviews/glucose_summary_admin.py,sha256=NqnDKx5l0Q-2xxRGdnf50DaRX1Sn8-DC0jHSk96LkRo,4005
479
+ meta_reports/admin/dbviews/glucose_summary_admin.py,sha256=ASvYcPIKJ0sLkRT-rwxkcpLPN36XVRs6wUg6msOaA9Y,4001
465
480
  meta_reports/admin/dbviews/imp_substitutions_admin.py,sha256=-poOw3fJK7jQERB1PNXNDrWNthwEQpiwmrxoWOsDtjI,3622
466
481
  meta_reports/admin/dbviews/patient_history_missing_baseline_cd4_admin.py,sha256=XyroEqxlX816xrdi0IVSelNPxPBWi96niKa-MQVGkck,2058
467
482
  meta_reports/admin/dbviews/unattended_three_in_row2_admin.py,sha256=0r13KRr0gsH2osmSlffRV11SpSBpWM612AYl-GOoYm0,1347
@@ -530,10 +545,13 @@ meta_reports/migrations/0048_auto_20240909_2338.py,sha256=mYAOUzJohv9eW9y93fpZTm
530
545
  meta_reports/migrations/0049_auto_20240911_0327.py,sha256=APBkFY9kwzEmhTXkK2-bu6csikh_dVEMH6t2dv_Iz9M,4760
531
546
  meta_reports/migrations/0050_alter_endpoints_created.py,sha256=nqNIgK_cek2gtEhopdy0Sm1HuIjL3-PscYPN16ma474,439
532
547
  meta_reports/migrations/0051_remove_endpoints_baseline_datetime_and_more.py,sha256=jq5N4un7QTCLe54WKJjfCL32X_QnyCiDRV3spwgseJI,1053
548
+ meta_reports/migrations/0052_lastimpvisit.py,sha256=MWQhY3-2RGjB8k-cuiEVbWxeYNL7QfbngyaWIGgEsU4,2231
549
+ meta_reports/migrations/0053_rename_lastimpvisit_lastimprefill_and_more.py,sha256=XYb3V0JQ0877DhaAaR0PxzPHdeBmmR_NQLJaGSzfHAI,887
533
550
  meta_reports/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
534
- meta_reports/models/__init__.py,sha256=8JnKMG9devIPboCCGj423x77Ylry2ROdGOnDSk5Xo4w,380
551
+ meta_reports/models/__init__.py,sha256=2F-4CS39Pu2LijF8ZkSn2nE3Lps3YEC9ZcBtNnmNXjI,423
535
552
  meta_reports/models/endpoints.py,sha256=iMx8QIi_hLANIwZmAw1OJ_jPuDdml8s181Skh8UF9bM,901
536
553
  meta_reports/models/endpoints_proxy.py,sha256=3h3JGaPmnJedFPVWGrk4idV4YtdihqiCI5W7QomwG4E,318
554
+ meta_reports/models/last_imp_refill.py,sha256=LkJtsZU7fhem5O-OqsyN-qgGQm_IUGAYEpP3ESqdm88,988
537
555
  meta_reports/models/dbviews/README,sha256=GdeboB7Xqb-Qo_rE1ondcxP8Ps93MIjLzCePQCePig0,686
538
556
  meta_reports/models/dbviews/__init__.py,sha256=C5YGOKwVAexjWxLh5vl0m561TBMWDM_yAvIrwqG_M70,559
539
557
  meta_reports/models/dbviews/glucose_summary/__init__.py,sha256=Tfgjso4TpxMCidAdRJp8g1Ykqqa43yWlQSotzAaORAo,93
@@ -566,16 +584,6 @@ meta_reports/models/dbviews/unattended_three_in_row2/view_definition.py,sha256=1
566
584
  meta_reports/models/dbviews/unattended_two_in_row/__init__.py,sha256=-ZZTOTTDZN5-zUj6gyvAyRrJgVPo0AyYZkHsgms6_Og,48
567
585
  meta_reports/models/dbviews/unattended_two_in_row/unmanaged_model.py,sha256=jrHsOHC0dhLoSQjY1PIlEQe9q_9Epv_ZNGXQtkTXbCs,870
568
586
  meta_reports/models/dbviews/unattended_two_in_row/view_definition.py,sha256=fT-LngyxVBGVc5SIF5Fb2fUskvcC6-balydSkVDtueY,1379
569
- meta_reports/models/unmanaged/README,sha256=GdeboB7Xqb-Qo_rE1ondcxP8Ps93MIjLzCePQCePig0,686
570
- meta_reports/models/unmanaged/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
571
- meta_reports/models/unmanaged/patient_history_missing_baseline_cd4.py,sha256=kyw91RklvGzBU8HrE3vEH1XLUs5X5mALdozd9nTnYsI,825
572
- meta_reports/models/unmanaged/patient_history_missing_baseline_cd4.sql,sha256=XWpZzDRzi-FCD42Ft0NjIB-T04oJJKzzSQvH19eaJA8,566
573
- meta_reports/models/unmanaged/unattended_three_in_row.py,sha256=TJxYeZ69b7uAsKs2_miWyh_oTVxlfuQLIKHiqfd5G7Y,734
574
- meta_reports/models/unmanaged/unattended_three_in_row.sql,sha256=EBF8sS-5uYGdzAqgmMd-YN-cpEd3Hh5Ja3sbw09BX3g,1135
575
- meta_reports/models/unmanaged/unattended_three_in_row2.py,sha256=6nBnEkaG4-z4Vd8ruKGVAW0q9ReRyBgVtwXuxSKDkGw,762
576
- meta_reports/models/unmanaged/unattended_three_in_row2.sql,sha256=AUPfQt_RE1QSYUQ3ODWZ1gw4FbNeY3gnkhyQ4477jVE,2221
577
- meta_reports/models/unmanaged/unattended_two_in_row.py,sha256=LofMGO9okr76riRXBxBqa25Y3SA-hkg7zMp87wzf6j0,681
578
- meta_reports/models/unmanaged/unattended_two_in_row.sql,sha256=cFBHrkbo5548JNXcHJnSZ66hvXYpAF9LADuy-EfZ9Bw,1176
579
587
  meta_reports/templates/meta_reports/endpoints_all_change_list_note.html,sha256=4tDN-rF9V2LOzQBnz-ZeMClpRQHXnGmpveDggJEVQlk,701
580
588
  meta_reports/templates/meta_reports/endpoints_change_list_note.html,sha256=3WdEHRQMFgi5xwYV8JX5CveBfaSJaFGq7NhOfVXizks,760
581
589
  meta_reports/templates/meta_reports/columns/subject_identifier_column.html,sha256=BSjZRpQOwVRQbSq5H0S4KICt1A6Ecyqti-Ut1e_9HbM,109
@@ -759,7 +767,7 @@ meta_subject/admin/patient_history_admin.py,sha256=kXglsPOngnjYY2FQYP_YHoH5IcSJu
759
767
  meta_subject/admin/physical_exam_admin.py,sha256=nCcY42CQXbZCro4vsQUfw5gQ1KKs-zjsHPqP-KtUQQc,1858
760
768
  meta_subject/admin/pregnancy_update_admin.py,sha256=-H3olHeXv4gkcUXb1Ye2DmB-X72cVFeS2arSv-C5J4I,913
761
769
  meta_subject/admin/sf12_admin.py,sha256=1PDNewdE_JDcjfyh0tb0MEWnBgpE3-7W0tkNfWkSX5U,742
762
- meta_subject/admin/study_medication_admin.py,sha256=WXFHrRHaJ5NhoYs59H84kQxuimIDAgpDieYvUR0eAo8,5983
770
+ meta_subject/admin/study_medication_admin.py,sha256=8XQL0zgc1ItRHwkz1uq2_74WfpYqvDKH7B70ADbmfxk,6289
763
771
  meta_subject/admin/subject_requisition_admin.py,sha256=qx-6AxfwzUIFMTJFO6CYOWE67wTGgQbiBofmWksXx1c,1848
764
772
  meta_subject/admin/subject_visit_admin.py,sha256=Ic3OrFtBsiHTB5sI8efWQkhPsuqu-1P1xV7eKP1F6aA,1389
765
773
  meta_subject/admin/subject_visit_missed_admin.py,sha256=vRLttLzVT1EbOHGVU1G-d5FNlySalX6g4_-0bRNr6GM,1414
@@ -810,7 +818,7 @@ meta_subject/forms/physical_exam_form.py,sha256=QgH1zAmYgp8Hi1tU-e68HaRRkZxf-6xG
810
818
  meta_subject/forms/pregnancy_update_form.py,sha256=BTiWPoQ-HYbZhW0Go2DSqYU_e51pmJ_UIxEdSNlzTwE,559
811
819
  meta_subject/forms/sf12_form.py,sha256=VDV4hyU9UckPX70isylfHWggcWZwiQfCWrpk9kGvxis,397
812
820
  meta_subject/forms/slider_widget.py,sha256=KOIyTfpl8yrcR9GZH4zrba8JUsVVEJME3AvrYiPHYJc,821
813
- meta_subject/forms/study_medication_form.py,sha256=zclTIvyh1PuRwS4_gQnq8FNH4W86wFH1VU2GhDx6whQ,1481
821
+ meta_subject/forms/study_medication_form.py,sha256=at4ee0f5NNipYD15R_T8h3B7R9EH-H0V-co_B3n12WE,2969
814
822
  meta_subject/forms/subject_requisition_form.py,sha256=BWWk1njDTxenHAX1a-VHPgz9zAGTJxMNHtVsobO7Vqo,953
815
823
  meta_subject/forms/subject_visit_form.py,sha256=Zxyjb5-7wUmcLHD-M76ofuM8Vr92yzjvXqQ7GsB3U6o,1374
816
824
  meta_subject/forms/subject_visit_missed_form.py,sha256=Qrvo2A8836CspOKll_iN3a6U6ttzz1TFNbEbJRrg62g,2275
@@ -829,13 +837,14 @@ meta_subject/forms/diabetes/dm_followup_form.py,sha256=ToJwQ1NViZn_CX-0YUyLQ5SSi
829
837
  meta_subject/forms/health_economics/__init__.py,sha256=xlJD5--IDyBs5lRrjpOpIgLHLmJgNdnR9vbwgGZbv-0,136
830
838
  meta_subject/forms/health_economics/health_economics_simple_form.py,sha256=MlPppvF8lrka9hAzmAV7aiyerjtVihxmOWpbTF-k5P8,392
831
839
  meta_subject/forms/health_economics/health_economics_update_form.py,sha256=gpdBcJxSXG8hp34JWdTQHrKT2pXeuBGAF503zCXLyEs,308
832
- meta_subject/locale/sw/LC_MESSAGES/django.po,sha256=pLMlxQZ-mLbdieZ_xevY7g1kHRRooEYClJAL5q46eKs,5685
840
+ meta_subject/locale/lg/LC_MESSAGES/django.po,sha256=rENk0A-EfLRxdK5GR05BBr7reDnp7bNy5Ton7PCtX48,11016
841
+ meta_subject/locale/sw/LC_MESSAGES/django.po,sha256=kLgzLiTOTu6Rf8J5kmFH_R9MlPWvpVSwz4g9Rl2CdOw,11063
833
842
  meta_subject/management/commands/create_missing_refills.py,sha256=IkxEOV2AHl2FYhLDtiWmiK0SoAcGFz24pLUXjNpFAAA,2432
834
843
  meta_subject/management/commands/create_missing_rx.py,sha256=jAqgz9yxhaEL1XBN9FqM-5cPv1TpNtL4XdltLPArOEA,1463
835
844
  meta_subject/management/commands/missed.py,sha256=qTHggBxlJWcEF_V4cGtxe93UJXlaW-ON6m1SOpJzmgg,8209
836
845
  meta_subject/metadata_rules/__init__.py,sha256=U8fKGiHsbSWW27dWbTp2A2pCmdcFgybbJDhazP591cE,53
837
846
  meta_subject/metadata_rules/metadata_rules.py,sha256=Pe7YK1Ss9P_0vi75ImqC0eaOi3rgEGYeukanVzyXXAY,3981
838
- meta_subject/metadata_rules/predicates.py,sha256=wDFN3-kj97jFq3PznYu1tVNAox4YdJtEGBbYbEyVmIA,8140
847
+ meta_subject/metadata_rules/predicates.py,sha256=QAaguLepmT9DQnF3TdXvdLZk0dBF7skGsZw1KnjG31g,9214
839
848
  meta_subject/migrations/0001_initial.py,sha256=UHMfeHsfaGWg97-gMxfcmD4_-xDnrj-cslhT_mZQdZw,408932
840
849
  meta_subject/migrations/0002_auto_20191021_0353.py,sha256=ekA3FFPdsAGmqWt2wrwQahzuwTE98e1VZLouXbZocrY,29351
841
850
  meta_subject/migrations/0003_auto_20191021_0534.py,sha256=Ye9au73hXxbvd1tBmrafin20NPWUZfhxj50x4S-tYqk,4024
@@ -1049,6 +1058,8 @@ meta_subject/migrations/0210_remove_dmdxresult_dm_diagnosis_and_more.py,sha256=_
1049
1058
  meta_subject/migrations/0211_dmendpoint_endpoint_reached_and_more.py,sha256=e5lG4G_F4uPR862lOvR_rACONzyMpg5duH-39QXAxLA,1615
1050
1059
  meta_subject/migrations/0212_auto_20240827_2222.py,sha256=ClHxTDTE9Ft6w8qT2LMSfDkbQko_aAKO8ULQvAIB-2E,772
1051
1060
  meta_subject/migrations/0213_rename_bloodresultslipid_bloodresultslipids_and_more.py,sha256=51UvT_rl0R2phHX0-QCdJqIPbfDcWzVMWdONwhWQ7Ws,1129
1061
+ meta_subject/migrations/0214_historicalstudymedication_stock_codes_and_more.py,sha256=Mzz4aPKvLeANXy9osTlefXXqbi-VwTA1SOBewkTLZ1I,1422
1062
+ meta_subject/migrations/0215_alter_historicalstudymedication_stock_codes_and_more.py,sha256=bUPpZPSwmRGnXOdd6kw1fmkGPEHdA0SWQ_P6wMtKyvI,1580
1052
1063
  meta_subject/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1053
1064
  meta_subject/model_mixins/__init__.py,sha256=6DdDDOwDdagrz6Q7X9lxuAVszsFWFhwPqLz4JOD85Wo,286
1054
1065
  meta_subject/model_mixins/arv_history_model_mixin.py,sha256=6ILacF2koyYmwZIFHmmQO1uIT1eWzrahXxhAlxpQiX0,2898
@@ -1117,7 +1128,7 @@ meta_subject/tests/tests/test_followup.py,sha256=rembohm-ecEp9rGFdjc2CkvXGfYZ8A8
1117
1128
  meta_subject/tests/tests/test_manager_order.py,sha256=wmVxMd85mJ6HGAL_3Z_mSp_mqeNQvK7MW_6mvQPDeO8,454
1118
1129
  meta_subject/tests/tests/test_medication_adherence.py,sha256=o-4vTFx4GdYBS_lWiKpycA8IOce9nTB1_7vAl4HAKhI,2517
1119
1130
  meta_subject/tests/tests/test_metadata_rules.py,sha256=LUBYByb9t9dClj_LKzHA-WpHQba56KwRqpr7BaCVbNI,5717
1120
- meta_subject/tests/tests/test_mnsi.py,sha256=wXEKfPsS05HzAtJc14VjXNBG02px6hVEGgzvO_Nn8Dg,9964
1131
+ meta_subject/tests/tests/test_mnsi.py,sha256=wAXHGupWJh-7vSNyeYyT1F4n6JNZFCIfDKs-M_XuPzQ,13585
1121
1132
  meta_subject/tests/tests/test_patient_history_form.py,sha256=JzqCx_-g2jeknngGl94FhZNVCl0CfnWIAZ9R11y7-wY,2827
1122
1133
  meta_subject/tests/tests/test_physical_exam.py,sha256=U3TKOPWTVu8iXxsS8LGgJJEY8e2sKJ5iTBcIWIHKCAo,2947
1123
1134
  meta_subject/tests/tests/test_sf12.py,sha256=8FMdZGG-boyu3zs37kLR8M2Wf7Xf0MevHYlQLX5Odgs,7330
@@ -1133,7 +1144,7 @@ meta_visit_schedule/tests/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
1133
1144
  meta_visit_schedule/tests/tests/test_schedule.py,sha256=858fXo-PvbppgIsCAGll05fqnuWW6f-vMIwnvRLZgnc,7351
1134
1145
  meta_visit_schedule/visit_schedules/__init__.py,sha256=j0Q8tAGhHHbFBd3R-iLRy4QB47WgtucWG7xCLLfVvFU,339
1135
1146
  meta_visit_schedule/visit_schedules/phase_three/__init__.py,sha256=18ken4S10X0dkEFHj1EFO2M4xblXD04cjfhzIEkhYUQ,74
1136
- meta_visit_schedule/visit_schedules/phase_three/crfs.py,sha256=Gi9H3RmgNbrtgNCkDwkV3EXnE0Drct8dpsVA5AQhoFs,15402
1147
+ meta_visit_schedule/visit_schedules/phase_three/crfs.py,sha256=mPfCfbwvTyWNBwZWX3_sOw6-GAAYhIydZvIElWYjhVk,16060
1137
1148
  meta_visit_schedule/visit_schedules/phase_three/crfs_pregnancy.py,sha256=_I6IVLMC3-KlpI86eii790mlx-p2vxWxvNRKD927rXo,169
1138
1149
  meta_visit_schedule/visit_schedules/phase_three/requisitions.py,sha256=Noeki8zX2MCwQVmCCWfuOyh_aN4YC-cyhUmrAZP8d5g,4579
1139
1150
  meta_visit_schedule/visit_schedules/phase_three/schedule.py,sha256=J91AMawOdKWLJz_WAH897PJYr8264_Q_b8pZhI0Pj38,8228
@@ -1142,7 +1153,7 @@ meta_visit_schedule/visit_schedules/phase_three/schedule_pregnancy.py,sha256=0V2
1142
1153
  meta_visit_schedule/visit_schedules/phase_three/visit_schedule.py,sha256=ak4qazeKlpIlvpqrK9hDDO0fwWuWyvb4Ec-JU31IJxc,654
1143
1154
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1144
1155
  tests/holidays.csv,sha256=LIEIm79wHRzbfXcFW_2ogFOYEZaWEGF1hwgOzZy2y34,538
1145
- tests/test_settings.py,sha256=US_2IOowZ_mE_yGtRzsAcCBXQXSrvKCbfETEUR0ncHA,7100
1156
+ tests/test_settings.py,sha256=4RE06P5s2RtXxR1uLogyjvuuLtf5ZPh758MpBg1BRco,7221
1146
1157
  tests/etc/randomization_list.csv,sha256=oYkac2c8AHo0gE72kjwmQ9rXNz-3EU8RKrUM3rqNk9s,5307
1147
1158
  tests/etc/randomization_list_phase_three.csv,sha256=ZPPKcePnt6BlpDkIXX6DCOAbowLzIFrgnYS8-pfForA,5794
1148
1159
  tests/etc/user-aes-local.key,sha256=qA7Oe6D5yFUSM4ZORzkrzzONedbP28MhtflyW0HAjDY,256
@@ -1153,9 +1164,9 @@ tests/etc/user-rsa-restricted-private.pem,sha256=CUcHW9bznWdmmASN00hCzvxFPAFl4N2
1153
1164
  tests/etc/user-rsa-restricted-public.pem,sha256=mt84djoL-uHw6Wc5SJh0zml6VzXulnf8eQSFg7-fheg,450
1154
1165
  tests/etc/user-salt-local.key,sha256=x5anBw9fvbHurczouT3CjrkWb_xs7Ypm1htIJsgiuiw,256
1155
1166
  tests/etc/user-salt-restricted.key,sha256=pxmpcfBRNB-4C6wTvHXz-9fOfJgKIFOjaAF8ZFfa4q4,256
1156
- meta_edc-0.3.38.dist-info/AUTHORS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1157
- meta_edc-0.3.38.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
1158
- meta_edc-0.3.38.dist-info/METADATA,sha256=7pQ_LETLSQ6O_1bbVxu21m_GUXdMm4Ef251Z1Fd_d7g,43436
1159
- meta_edc-0.3.38.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
1160
- meta_edc-0.3.38.dist-info/top_level.txt,sha256=RkzjNXwRq2kg_uZ_1bDwPUntijSXoY2YBqtByDwvvrc,244
1161
- meta_edc-0.3.38.dist-info/RECORD,,
1167
+ meta_edc-0.3.39.dist-info/AUTHORS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1168
+ meta_edc-0.3.39.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
1169
+ meta_edc-0.3.39.dist-info/METADATA,sha256=j3D64wRKMMzgZj04aExF7BIiYqchhoPycYjV0xhPaJI,43529
1170
+ meta_edc-0.3.39.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
1171
+ meta_edc-0.3.39.dist-info/top_level.txt,sha256=RkzjNXwRq2kg_uZ_1bDwPUntijSXoY2YBqtByDwvvrc,244
1172
+ meta_edc-0.3.39.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,3 +1,2 @@
1
- from .lot_number_admin import LotNumberAdmin
2
1
  from .rx_admin import RxAdmin
3
2
  from .substitutions_admin import SubstitutionsAdmin
@@ -0,0 +1,38 @@
1
+ import random
2
+
3
+ from django.contrib import messages
4
+ from django.http import FileResponse
5
+ from django.utils.translation import gettext as _
6
+ from django_pylabels.models import LabelSpecification
7
+ from edc_utils import get_utcnow
8
+ from pylabels import Sheet, Specification
9
+
10
+ from ..labels import draw_label_with_code39
11
+ from ..models import LabelData
12
+
13
+ random.seed(7825541)
14
+
15
+
16
+ def print_label_sheet(modeladmin, request, queryset):
17
+ label_data = [obj for obj in queryset]
18
+ obj = LabelSpecification.objects.get(name="meta3")
19
+ specs = Specification(**obj.as_dict)
20
+ sheet = Sheet(specs, draw_label_with_code39, border=obj.border)
21
+ sheet.add_labels(label_data)
22
+ buffer = sheet.save_to_buffer()
23
+ now = get_utcnow()
24
+ queryset.update(printed=True, printed_datetime=now)
25
+ return FileResponse(
26
+ buffer, as_attachment=True, filename=f"{obj.name}_{now.strftime("%Y-%m-%d %H:%M")}.pdf"
27
+ )
28
+
29
+
30
+ def print_label_sheet_from_batch(modeladmin, request, queryset):
31
+ if queryset.count() > 1 or queryset.count() == 0:
32
+ messages.add_message(
33
+ request,
34
+ messages.ERROR,
35
+ _("Select one and only one existing label specification"),
36
+ )
37
+ queryset = LabelData.objects.filter(label_batch=queryset.first())
38
+ return print_label_sheet(modeladmin, request, queryset)
@@ -2,4 +2,8 @@ from edc_model_admin.admin_site import EdcAdminSite
2
2
 
3
3
  from .apps import AppConfig
4
4
 
5
- meta_pharmacy_admin = EdcAdminSite(name="meta_pharmacy_admin", app_label=AppConfig.name)
5
+ meta_pharmacy_admin = EdcAdminSite(
6
+ name="meta_pharmacy_admin",
7
+ app_label=AppConfig.name,
8
+ keep_delete_action=True,
9
+ )
meta_pharmacy/apps.py CHANGED
@@ -1,6 +1,7 @@
1
1
  from django.apps import AppConfig as DjangoAppConfig
2
2
  from django.db.models.signals import post_migrate
3
3
  from django_extensions.management.color import color_style
4
+ from edc_list_data import site_list_data
4
5
 
5
6
  from .prepare_meta_pharmacy import prepare_meta_pharmacy
6
7
 
@@ -9,6 +10,7 @@ style = color_style()
9
10
 
10
11
  def post_migrate_populate_pharmacy_models(sender=None, **kwargs): # noqa
11
12
  """Create or update pharmacy static models."""
13
+ site_list_data.load_data()
12
14
  prepare_meta_pharmacy()
13
15
 
14
16
 
@@ -0,0 +1,2 @@
1
+ from .rx_form import RxForm
2
+ from .substitutions_form import SubstitutionsForm
@@ -0,0 +1,16 @@
1
+ from django import forms
2
+
3
+ from ..models import Rx
4
+
5
+
6
+ class RxForm(forms.ModelForm):
7
+
8
+ subject_identifier = forms.CharField(
9
+ label="Subject Identifier",
10
+ required=False,
11
+ widget=forms.TextInput(attrs={"readonly": "readonly"}),
12
+ )
13
+
14
+ class Meta:
15
+ model = Rx
16
+ fields = "__all__"
@@ -9,7 +9,7 @@ from edc_sites.forms import SiteModelFormMixin
9
9
 
10
10
  from meta_rando.models import RandomizationList
11
11
 
12
- from .models import Rx, Substitutions
12
+ from ..models import Rx, Substitutions
13
13
 
14
14
 
15
15
  class SubstitutionsFormValidator(PrnFormValidatorMixin, FormValidator):
@@ -52,16 +52,3 @@ class SubstitutionsForm(
52
52
  class Meta:
53
53
  model = Substitutions
54
54
  fields = "__all__"
55
-
56
-
57
- class RxForm(forms.ModelForm):
58
-
59
- subject_identifier = forms.CharField(
60
- label="Subject Identifier",
61
- required=False,
62
- widget=forms.TextInput(attrs={"readonly": "readonly"}),
63
- )
64
-
65
- class Meta:
66
- model = Rx
67
- fields = "__all__"
@@ -0,0 +1,30 @@
1
+ from edc_pharmacy.labels import (
2
+ draw_bulk_stock_label_code128,
3
+ draw_vertical_barcode_only_code128,
4
+ )
5
+ from edc_pylabels.site_label_configs import site_label_configs
6
+
7
+ from .labels import draw_label_for_subject_with_code128, draw_label_with_test_data
8
+
9
+ # create a label class to pass instead of a model
10
+
11
+ site_label_configs.register(
12
+ "stock_vertical_barcode",
13
+ draw_vertical_barcode_only_code128,
14
+ "edc_pharmacy.stock",
15
+ test_data_func=draw_label_with_test_data,
16
+ )
17
+
18
+ site_label_configs.register(
19
+ "stock_bulk_barcode",
20
+ draw_bulk_stock_label_code128,
21
+ "edc_pharmacy.stock",
22
+ test_data_func=draw_label_with_test_data,
23
+ )
24
+
25
+ site_label_configs.register(
26
+ "patient_barcode",
27
+ draw_label_for_subject_with_code128,
28
+ "edc_pharmacy.stock",
29
+ test_data_func=draw_label_with_test_data,
30
+ )
@@ -1,2 +1,4 @@
1
- from .get_label_data import get_label_data
1
+ from .draw_label_for_subject_with_code128 import draw_label_for_subject_with_code128
2
+ from .draw_label_with_test_data import draw_label_with_test_data
3
+ from .label_data import LabelData
2
4
  from .print_sheets import print_sheets
@@ -0,0 +1,58 @@
1
+ from edc_pharmacy.models import Stock
2
+ from edc_pharmacy.utils import format_qty
3
+ from edc_sites.site import sites as site_sites
4
+ from reportlab.graphics.shapes import Drawing, Group, String
5
+ from reportlab.pdfbase.pdfmetrics import stringWidth
6
+
7
+
8
+ def draw_label_for_subject_with_barcode(
9
+ barcode_cls,
10
+ barcode_opts: dict,
11
+ label: Drawing,
12
+ width: int | float,
13
+ height: int | float,
14
+ obj: Stock,
15
+ ) -> Drawing:
16
+ """Callable to draw a single study medication label given a model
17
+ instance `obj`
18
+ """
19
+ try:
20
+ single_site = site_sites.get(
21
+ obj.allocation.stock_request_item.stock_request.location.site.id
22
+ )
23
+ except AttributeError:
24
+ label.add(String(15, height - 20, "Error: Unable to generate label", fontSize=10))
25
+ label.add(String(15, height - 40, str(obj.code), fontSize=10))
26
+ label.add(String(15, height - 60, str(obj.location), fontSize=10))
27
+ else:
28
+ br = barcode_cls(**barcode_opts)
29
+ br.value = obj.code
30
+ br.x = width - 110
31
+ br.y = 40
32
+ label.add(br)
33
+
34
+ label.add(String(15, height - 35, single_site.title, fontSize=10))
35
+
36
+ label.add(String(15, height - 20, "META III Study", fontSize=12))
37
+ label.add(String(15, height - 55, "Dawa kwa ajili ya utafiti", fontSize=10))
38
+ label.add(String(15, height - 67, "wa META III.", fontSize=10))
39
+ label.add(String(15, height - 79, "Meza vidonge vinne usiku tu.", fontSize=10))
40
+
41
+ text_group = Group()
42
+ subject_identifier = (
43
+ obj.allocation.registered_subject.subject_identifier or "999-99-99999-9"
44
+ )
45
+ text_width = stringWidth(subject_identifier, "Helvetica", 12)
46
+ text_string = String(
47
+ width - text_width - 10, height - 20, subject_identifier, fontSize=12
48
+ )
49
+ text_group.add(text_string)
50
+
51
+ qty_text = f"{format_qty(obj.container.qty, obj.container)} tabs"
52
+ text_width = stringWidth(qty_text, "Helvetica", 10)
53
+ text_string = String(width - text_width - 10, height - 95, qty_text, fontSize=10)
54
+ text_group.add(text_string)
55
+
56
+ label.add(text_group)
57
+
58
+ return label
@@ -0,0 +1,14 @@
1
+ from reportlab.graphics.barcode.widgets import BarcodeCode128
2
+ from reportlab.graphics.shapes import Drawing
3
+
4
+ from .draw_label_for_subject_with_barcode import draw_label_for_subject_with_barcode
5
+
6
+
7
+ def draw_label_for_subject_with_code128(*args) -> Drawing:
8
+ barcode_opts = dict(
9
+ humanReadable=True,
10
+ barHeight=30,
11
+ barWidth=0.7,
12
+ gap=1.7,
13
+ )
14
+ return draw_label_for_subject_with_barcode(BarcodeCode128, barcode_opts, *args)
@@ -0,0 +1,26 @@
1
+ from django.apps import apps as django_apps
2
+ from edc_utils import get_utcnow
3
+
4
+
5
+ def draw_label_with_test_data() -> dict:
6
+ receive_model_cls = django_apps.get_model("edc_pharmacy.receive")
7
+ receive_item_model_cls = django_apps.get_model("edc_pharmacy.receiveitem")
8
+ location_model_cls = django_apps.get_model("edc_pharmacy.location")
9
+ lot_model_cls = django_apps.get_model("edc_pharmacy.lot")
10
+ container_type_model_cls = django_apps.get_model("edc_pharmacy.containertype")
11
+ container_model_cls = django_apps.get_model("edc_pharmacy.container")
12
+ container_type = container_type_model_cls(name="bottle")
13
+ container = container_model_cls(
14
+ name="bottle of 128", container_type=container_type, qty=128
15
+ )
16
+ return dict(
17
+ subject_identifier="999-99999-9",
18
+ code="A9B8C7",
19
+ location=location_model_cls.objects.filter(site__isnull=False).first(),
20
+ container=container,
21
+ lot=lot_model_cls(lot_no="999999999", expiration_date=get_utcnow().date()),
22
+ receive_item=receive_item_model_cls(
23
+ receive=receive_model_cls(receive_identifier="99999999"),
24
+ receive_item_identifier="99999999",
25
+ ),
26
+ )
@@ -0,0 +1,14 @@
1
+ import random
2
+ import string
3
+
4
+
5
+ class LabelData:
6
+
7
+ def __init__(self):
8
+ self.subject_identifier = "999-99-9999-9" # nosec B311
9
+ self.reference = "".join(
10
+ random.choices(string.ascii_letters.upper() + "23456789", k=6) # nosec B311
11
+ )
12
+ self.sid = "12345"
13
+ self.site_name = "AMANA"
14
+ self.pills_per_bottle = 128