OpenREM 1.0.0b2__py3-none-any.whl → 1.0.0b3__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 (279) hide show
  1. openrem/locale/de/LC_MESSAGES/django.po +1060 -1059
  2. openrem/locale/django.pot +973 -972
  3. openrem/locale/es_MX/LC_MESSAGES/django.po +1049 -1048
  4. openrem/locale/it/LC_MESSAGES/django.po +1044 -1043
  5. openrem/locale/lt/LC_MESSAGES/django.po +989 -988
  6. openrem/locale/nb_NO/LC_MESSAGES/django.po +985 -984
  7. openrem/locale/pt_BR/LC_MESSAGES/django.po +1003 -1002
  8. openrem/manage.py +10 -10
  9. openrem/openremproject/__init__.py +1 -1
  10. openrem/openremproject/local_settings.py.linux +128 -128
  11. openrem/openremproject/local_settings.py.windows +144 -144
  12. openrem/openremproject/local_settings.py.windows-sqlite3 +129 -129
  13. openrem/openremproject/settings.py +278 -278
  14. openrem/openremproject/urls.py +32 -32
  15. openrem/openremproject/wsgi.py.example +28 -28
  16. openrem/remapp/__init__.py +2 -2
  17. openrem/remapp/admin.py +31 -31
  18. openrem/remapp/exports/ct_export.py +780 -753
  19. openrem/remapp/exports/dx_export.py +817 -805
  20. openrem/remapp/exports/export_common.py +931 -951
  21. openrem/remapp/exports/export_common_pandas.py +2422 -0
  22. openrem/remapp/exports/exportviews.py +815 -860
  23. openrem/remapp/exports/mg_csv_nhsbsp.py +292 -292
  24. openrem/remapp/exports/mg_export.py +673 -510
  25. openrem/remapp/exports/nm_export.py +796 -575
  26. openrem/remapp/exports/rf_export.py +1418 -1431
  27. openrem/remapp/extractors/ct_philips.py +424 -414
  28. openrem/remapp/extractors/ct_toshiba.py +2116 -2108
  29. openrem/remapp/extractors/dx.py +1033 -952
  30. openrem/remapp/extractors/extract_common.py +817 -817
  31. openrem/remapp/extractors/import_views.py +426 -426
  32. openrem/remapp/extractors/mam.py +685 -672
  33. openrem/remapp/extractors/nm_image.py +439 -431
  34. openrem/remapp/extractors/ptsizecsv2db.py +368 -368
  35. openrem/remapp/extractors/rdsr.py +667 -654
  36. openrem/remapp/extractors/rdsr_methods.py +1771 -1768
  37. openrem/remapp/extractors/rrdsr_methods.py +630 -622
  38. openrem/remapp/fixtures/openskin_safelist.json +11 -11
  39. openrem/remapp/forms.py +2286 -2277
  40. openrem/remapp/interface/chart_functions.py +2412 -2393
  41. openrem/remapp/interface/mod_filters.py +1241 -1243
  42. openrem/remapp/migrations/0001_initial.py.1-0-upgrade +1043 -1043
  43. openrem/remapp/models.py +3418 -3407
  44. openrem/remapp/netdicom/dicomviews.py +681 -683
  45. openrem/remapp/netdicom/qrscu.py +2646 -2646
  46. openrem/remapp/netdicom/tools.py +134 -134
  47. openrem/remapp/static/css/bootstrap-theme.css +587 -587
  48. openrem/remapp/static/css/bootstrap-theme.min.css +4 -4
  49. openrem/remapp/static/css/bootstrap.css +6800 -6800
  50. openrem/remapp/static/css/bootstrap.min.css +4 -4
  51. openrem/remapp/static/css/datepicker3.css +790 -790
  52. openrem/remapp/static/css/jquery.qtip.min.css +2 -2
  53. openrem/remapp/static/css/openrem-extra.css +442 -442
  54. openrem/remapp/static/css/openrem.css +96 -96
  55. openrem/remapp/static/css/registration.css +34 -34
  56. openrem/remapp/static/fonts/glyphicons-halflings-regular.svg +287 -287
  57. openrem/remapp/static/js/bootstrap-datepicker.js +1671 -1671
  58. openrem/remapp/static/js/bootstrap.js +2363 -2363
  59. openrem/remapp/static/js/bootstrap.min.js +6 -6
  60. openrem/remapp/static/js/charts/chartCommonFunctions.js +75 -75
  61. openrem/remapp/static/js/charts/chartFullScreen.js +41 -41
  62. openrem/remapp/static/js/charts/ctChartAjax.js +331 -331
  63. openrem/remapp/static/js/charts/dxChartAjax.js +290 -290
  64. openrem/remapp/static/js/charts/mgChartAjax.js +144 -144
  65. openrem/remapp/static/js/charts/nmChartAjax.js +64 -64
  66. openrem/remapp/static/js/charts/plotly-2.35.2.min.js +8 -0
  67. openrem/remapp/static/js/charts/rfChartAjax.js +128 -128
  68. openrem/remapp/static/js/chroma.min.js +32 -32
  69. openrem/remapp/static/js/datepicker.js +5 -5
  70. openrem/remapp/static/js/dicom.js +115 -115
  71. openrem/remapp/static/js/django_reverse/reverse.js +13 -13
  72. openrem/remapp/static/js/formatDate.js +7 -7
  73. openrem/remapp/static/js/html5shiv.min.js +8 -8
  74. openrem/remapp/static/js/jquery-1.11.0.min.js +4 -4
  75. openrem/remapp/static/js/npm.js +12 -12
  76. openrem/remapp/static/js/respond.min.js +4 -4
  77. openrem/remapp/static/js/skin-dose-maps/jquery.qtip.min.js +4 -4
  78. openrem/remapp/static/js/skin-dose-maps/rfSkinDoseMap3dHUDObject.js +112 -112
  79. openrem/remapp/static/js/skin-dose-maps/rfSkinDoseMap3dObject.js +367 -367
  80. openrem/remapp/static/js/skin-dose-maps/rfSkinDoseMap3dPersonObject.js +158 -158
  81. openrem/remapp/static/js/skin-dose-maps/rfSkinDoseMapColourScaleObject.js +153 -153
  82. openrem/remapp/static/js/skin-dose-maps/rfSkinDoseMapObject.js +367 -367
  83. openrem/remapp/static/js/skin-dose-maps/rfSkinDoseMapping.js +584 -584
  84. openrem/remapp/static/js/skin-dose-maps/rfSkinDoseMapping3d.js +255 -255
  85. openrem/remapp/static/js/skin-dose-maps/rfSkinDoseMappingAjax.js +267 -212
  86. openrem/remapp/static/js/skin-dose-maps/three.min.js +835 -835
  87. openrem/remapp/static/js/sorttable.js +495 -495
  88. openrem/remapp/templates/base.html +253 -253
  89. openrem/remapp/templates/registration/changepassword.html +25 -25
  90. openrem/remapp/templates/registration/changepassworddone.html +12 -12
  91. openrem/remapp/templates/registration/login.html +42 -42
  92. openrem/remapp/templates/remapp/backgroundtaskmaximumrows_form.html +29 -29
  93. openrem/remapp/templates/remapp/base.html +1 -1
  94. openrem/remapp/templates/remapp/ctdetail.html +235 -235
  95. openrem/remapp/templates/remapp/ctfiltered.html +310 -310
  96. openrem/remapp/templates/remapp/dicomdeletesettings_form.html +31 -31
  97. openrem/remapp/templates/remapp/dicomqr.html +147 -147
  98. openrem/remapp/templates/remapp/dicomquerydetails.html +83 -83
  99. openrem/remapp/templates/remapp/dicomqueryimages.html +49 -49
  100. openrem/remapp/templates/remapp/dicomqueryseries.html +109 -109
  101. openrem/remapp/templates/remapp/dicomquerysummary.html +48 -48
  102. openrem/remapp/templates/remapp/dicomremoteqr_confirm_delete.html +60 -60
  103. openrem/remapp/templates/remapp/dicomremoteqr_form.html +32 -32
  104. openrem/remapp/templates/remapp/dicomstorescp_confirm_delete.html +53 -53
  105. openrem/remapp/templates/remapp/dicomstorescp_form.html +48 -48
  106. openrem/remapp/templates/remapp/dicomsummary.html +257 -257
  107. openrem/remapp/templates/remapp/displaychartoptions.html +184 -184
  108. openrem/remapp/templates/remapp/displayhomepageoptions.html +57 -57
  109. openrem/remapp/templates/remapp/displayname-count.html +6 -6
  110. openrem/remapp/templates/remapp/displayname-last-date.html +3 -3
  111. openrem/remapp/templates/remapp/displayname-modality.html +86 -105
  112. openrem/remapp/templates/remapp/displayname-skinmap.html +18 -18
  113. openrem/remapp/templates/remapp/displaynameupdate.html +100 -100
  114. openrem/remapp/templates/remapp/displaynameview.html +222 -219
  115. openrem/remapp/templates/remapp/dxdetail.html +176 -176
  116. openrem/remapp/templates/remapp/dxfiltered.html +324 -324
  117. openrem/remapp/templates/remapp/exports-active.html +25 -25
  118. openrem/remapp/templates/remapp/exports-complete.html +35 -35
  119. openrem/remapp/templates/remapp/exports-error.html +26 -26
  120. openrem/remapp/templates/remapp/exports-queue.html +18 -18
  121. openrem/remapp/templates/remapp/exports.html +191 -191
  122. openrem/remapp/templates/remapp/failed_summary_list.html +27 -27
  123. openrem/remapp/templates/remapp/filteredbase.html +162 -162
  124. openrem/remapp/templates/remapp/highdosemetricalertsettings_form.html +76 -76
  125. openrem/remapp/templates/remapp/home-list-modalities.html +94 -94
  126. openrem/remapp/templates/remapp/home.html +202 -202
  127. openrem/remapp/templates/remapp/list_filters.html +24 -24
  128. openrem/remapp/templates/remapp/mgdetail.html +160 -138
  129. openrem/remapp/templates/remapp/mgfiltered.html +311 -311
  130. openrem/remapp/templates/remapp/nmdetail.html +300 -300
  131. openrem/remapp/templates/remapp/nmfiltered.html +255 -255
  132. openrem/remapp/templates/remapp/notpatient.html +190 -190
  133. openrem/remapp/templates/remapp/notpatientindicators_form_base.html +81 -81
  134. openrem/remapp/templates/remapp/notpatientindicatorsid_confirm_delete.html +54 -54
  135. openrem/remapp/templates/remapp/notpatientindicatorsid_form.html +23 -23
  136. openrem/remapp/templates/remapp/notpatientindicatorsname_confirm_delete.html +54 -54
  137. openrem/remapp/templates/remapp/notpatientindicatorsname_form.html +23 -23
  138. openrem/remapp/templates/remapp/notpatientindicatorsname_form_base.html +85 -85
  139. openrem/remapp/templates/remapp/openskinsafelist_add.html +130 -130
  140. openrem/remapp/templates/remapp/openskinsafelist_confirm_delete.html +100 -100
  141. openrem/remapp/templates/remapp/openskinsafelist_form.html +207 -207
  142. openrem/remapp/templates/remapp/patientidsettings_form.html +83 -83
  143. openrem/remapp/templates/remapp/populate_summary_progress.html +83 -83
  144. openrem/remapp/templates/remapp/populate_summary_progress_error.html +36 -36
  145. openrem/remapp/templates/remapp/review_failed_imports.html +157 -157
  146. openrem/remapp/templates/remapp/review_failed_study.html +41 -41
  147. openrem/remapp/templates/remapp/review_studies_delete_button.html +20 -20
  148. openrem/remapp/templates/remapp/review_study.html +19 -19
  149. openrem/remapp/templates/remapp/review_summary_list.html +245 -245
  150. openrem/remapp/templates/remapp/rf_dose_alert_email_template.html +14 -1
  151. openrem/remapp/templates/remapp/rfalertnotificationsview.html +59 -59
  152. openrem/remapp/templates/remapp/rfdetail.html +547 -543
  153. openrem/remapp/templates/remapp/rfdetailbase.html +18 -18
  154. openrem/remapp/templates/remapp/rffiltered.html +404 -404
  155. openrem/remapp/templates/remapp/sizeimports.html +119 -119
  156. openrem/remapp/templates/remapp/sizeprocess.html +96 -96
  157. openrem/remapp/templates/remapp/sizeupload.html +110 -110
  158. openrem/remapp/templates/remapp/skindosemapcalcsettings_form.html +28 -28
  159. openrem/remapp/templates/remapp/standardname-modality.html +69 -69
  160. openrem/remapp/templates/remapp/standardnames_confirm_delete.html +71 -71
  161. openrem/remapp/templates/remapp/standardnames_form.html +87 -87
  162. openrem/remapp/templates/remapp/standardnamesettings_form.html +41 -41
  163. openrem/remapp/templates/remapp/standardnamesrefreshall.html +92 -92
  164. openrem/remapp/templates/remapp/standardnameview.html +103 -103
  165. openrem/remapp/templates/remapp/study_confirm_delete.html +147 -147
  166. openrem/remapp/templates/remapp/task_admin.html +265 -265
  167. openrem/remapp/templates/remapp/tasks.html +76 -76
  168. openrem/remapp/templatetags/formfilters.py +13 -13
  169. openrem/remapp/templatetags/proper_paginate.py +38 -38
  170. openrem/remapp/templatetags/remappduration.py +36 -36
  171. openrem/remapp/templatetags/sigdig.py +38 -38
  172. openrem/remapp/templatetags/sort_class_property_value.py +15 -15
  173. openrem/remapp/templatetags/update_variable.py +20 -20
  174. openrem/remapp/templatetags/url_replace.py +25 -25
  175. openrem/remapp/tests/test_charts_common.py +202 -202
  176. openrem/remapp/tests/test_charts_ct.py +7111 -7111
  177. openrem/remapp/tests/test_charts_dx.py +3513 -3513
  178. openrem/remapp/tests/test_charts_mg.py +1116 -1115
  179. openrem/remapp/tests/test_dcmdatetime.py +189 -189
  180. openrem/remapp/tests/test_dicom_qr.py +2580 -2580
  181. openrem/remapp/tests/test_display_name.py +274 -274
  182. openrem/remapp/tests/test_export_ct_xlsx.py +272 -248
  183. openrem/remapp/tests/test_export_dx_xlsx.py +137 -134
  184. openrem/remapp/tests/test_export_mammo_csv.py +242 -242
  185. openrem/remapp/tests/test_export_rf_xlsx.py +246 -246
  186. openrem/remapp/tests/test_files/DX-Im-DRGEM.dcm +0 -0
  187. openrem/remapp/tests/test_files/MG-RDSR-GEPristina-2D.dcm +0 -0
  188. openrem/remapp/tests/test_files/MG-RDSR-GEPristina-DBT.dcm +0 -0
  189. openrem/remapp/tests/test_files/MG-RDSR-Giotto-DBT.dcm +0 -0
  190. openrem/remapp/tests/test_files/skin_map_alphenix.py +590 -590
  191. openrem/remapp/tests/test_files/skin_map_zee.py +354 -354
  192. openrem/remapp/tests/test_filters_ct.py +321 -321
  193. openrem/remapp/tests/test_filters_dx.py +92 -92
  194. openrem/remapp/tests/test_filters_mammo.py +183 -183
  195. openrem/remapp/tests/test_filters_rf.py +118 -118
  196. openrem/remapp/tests/test_get_values.py +72 -72
  197. openrem/remapp/tests/test_hash_id.py +65 -65
  198. openrem/remapp/tests/test_import_ct_esr_ge.py +3034 -3034
  199. openrem/remapp/tests/test_import_ct_philips_rdsr.py +42 -42
  200. openrem/remapp/tests/test_import_ct_rdsr_multiple.py +256 -256
  201. openrem/remapp/tests/test_import_ct_rdsr_siemens.py +827 -827
  202. openrem/remapp/tests/test_import_ct_rdsr_spectrumdynamics.py +91 -91
  203. openrem/remapp/tests/test_import_ct_rdsr_toshiba_dosecheck.py +67 -67
  204. openrem/remapp/tests/test_import_ct_rdsr_toshiba_multivaluesd.py +33 -33
  205. openrem/remapp/tests/test_import_ct_rdsr_toshiba_pixelmed.py +118 -118
  206. openrem/remapp/tests/test_import_ct_sc_philips.py +44 -44
  207. openrem/remapp/tests/test_import_dual_rdsr.py +110 -110
  208. openrem/remapp/tests/test_import_dx.py +1267 -1191
  209. openrem/remapp/tests/test_import_dx_rdsr.py +1250 -1253
  210. openrem/remapp/tests/test_import_mam.py +438 -438
  211. openrem/remapp/tests/test_import_mg_im_hol_proj.py +46 -46
  212. openrem/remapp/tests/test_import_mg_rdsr.py +586 -586
  213. openrem/remapp/tests/test_import_nm_image.py +420 -420
  214. openrem/remapp/tests/test_import_nm_siemens_rdsr.py +396 -396
  215. openrem/remapp/tests/test_import_px.py +161 -161
  216. openrem/remapp/tests/test_import_rf_rdsr.py +420 -418
  217. openrem/remapp/tests/test_missing_date.py +42 -42
  218. openrem/remapp/tests/test_not_patient.py +60 -60
  219. openrem/remapp/tests/test_openskin.py +272 -272
  220. openrem/remapp/tests/test_patient_id_settings.py +72 -72
  221. openrem/remapp/tests/test_pt_size_import.py +232 -232
  222. openrem/remapp/tests/test_rf_detail.py +113 -113
  223. openrem/remapp/tests/test_rf_high_dose_alert.py +361 -361
  224. openrem/remapp/tools/background.py +361 -361
  225. openrem/remapp/tools/check_standard_name_status.py +47 -0
  226. openrem/remapp/tools/check_uid.py +70 -70
  227. openrem/remapp/tools/dcmdatetime.py +248 -248
  228. openrem/remapp/tools/default_import.py +44 -47
  229. openrem/remapp/tools/get_values.py +230 -230
  230. openrem/remapp/tools/hash_id.py +58 -58
  231. openrem/remapp/tools/make_skin_map.py +448 -406
  232. openrem/remapp/tools/not_patient_indicators.py +72 -72
  233. openrem/remapp/tools/openskin/calc_exp_map.py +173 -173
  234. openrem/remapp/tools/openskin/geomclass.py +475 -475
  235. openrem/remapp/tools/openskin/geomfunc.py +433 -432
  236. openrem/remapp/tools/openskin/skinmap.py +417 -417
  237. openrem/remapp/tools/populate_summary.py +185 -193
  238. openrem/remapp/tools/save_skin_map_structure.py +73 -73
  239. openrem/remapp/tools/send_high_dose_alert_emails.py +238 -207
  240. openrem/remapp/urls.py +456 -448
  241. openrem/remapp/version.py +11 -11
  242. openrem/remapp/views.py +1147 -1052
  243. openrem/remapp/views_admin.py +3876 -3936
  244. openrem/remapp/views_charts_ct.py +2110 -2058
  245. openrem/remapp/views_charts_dx.py +1906 -1836
  246. openrem/remapp/views_charts_mg.py +1349 -1196
  247. openrem/remapp/views_charts_nm.py +535 -535
  248. openrem/remapp/views_charts_rf.py +1219 -1241
  249. openrem/remapp/views_openskin.py +379 -384
  250. openrem/sample-config/openrem-consumer.service +12 -12
  251. openrem/sample-config/openrem-gunicorn.service +13 -13
  252. openrem/sample-config/openrem-server +14 -13
  253. openrem/sample-config/openrem_orthanc_config_linux.lua +454 -454
  254. openrem/sample-config/openrem_orthanc_config_windows.lua +455 -455
  255. openrem/sample-config/queue-init.bat +73 -73
  256. openrem/scripts/openrem_ctphilips.py +25 -25
  257. openrem/scripts/openrem_cttoshiba.py +28 -28
  258. openrem/scripts/openrem_dx.py +22 -22
  259. openrem/scripts/openrem_mg.py +22 -22
  260. openrem/scripts/openrem_nm.py +22 -22
  261. openrem/scripts/openrem_ptsizecsv.py +17 -17
  262. openrem/scripts/openrem_qr.py +12 -12
  263. openrem/scripts/openrem_rdsr.py +25 -25
  264. {OpenREM-1.0.0b2.dist-info → openrem-1.0.0b3.dist-info}/METADATA +39 -29
  265. openrem-1.0.0b3.dist-info/RECORD +379 -0
  266. {OpenREM-1.0.0b2.dist-info → openrem-1.0.0b3.dist-info}/WHEEL +1 -1
  267. {OpenREM-1.0.0b2.dist-info → openrem-1.0.0b3.dist-info/licenses}/COPYING-GPLv3 +674 -674
  268. {OpenREM-1.0.0b2.dist-info → openrem-1.0.0b3.dist-info/licenses}/LICENSE +22 -22
  269. OpenREM-1.0.0b2.dist-info/RECORD +0 -373
  270. openrem/remapp/static/js/charts/plotly-2.17.1.min.js +0 -8
  271. {OpenREM-1.0.0b2.data → openrem-1.0.0b3.data}/scripts/openrem_ctphilips.py +0 -0
  272. {OpenREM-1.0.0b2.data → openrem-1.0.0b3.data}/scripts/openrem_cttoshiba.py +0 -0
  273. {OpenREM-1.0.0b2.data → openrem-1.0.0b3.data}/scripts/openrem_dx.py +0 -0
  274. {OpenREM-1.0.0b2.data → openrem-1.0.0b3.data}/scripts/openrem_mg.py +0 -0
  275. {OpenREM-1.0.0b2.data → openrem-1.0.0b3.data}/scripts/openrem_nm.py +0 -0
  276. {OpenREM-1.0.0b2.data → openrem-1.0.0b3.data}/scripts/openrem_ptsizecsv.py +0 -0
  277. {OpenREM-1.0.0b2.data → openrem-1.0.0b3.data}/scripts/openrem_qr.py +0 -0
  278. {OpenREM-1.0.0b2.data → openrem-1.0.0b3.data}/scripts/openrem_rdsr.py +0 -0
  279. {OpenREM-1.0.0b2.dist-info → openrem-1.0.0b3.dist-info}/top_level.txt +0 -0
openrem/remapp/urls.py CHANGED
@@ -1,448 +1,456 @@
1
- # OpenREM - Radiation Exposure Monitoring tools for the physicist
2
- # Copyright (C) 2012,2013 The Royal Marsden NHS Foundation Trust
3
- #
4
- # This program is free software: you can redistribute it and/or modify
5
- # it under the terms of the GNU General Public License as published by
6
- # the Free Software Foundation, either version 3 of the License, or
7
- # (at your option) any later version.
8
- #
9
- # This program is distributed in the hope that it will be useful,
10
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- # GNU General Public License for more details.
13
- #
14
- # Additional permission under section 7 of GPLv3:
15
- # You shall not make any use of the name of The Royal Marsden NHS
16
- # Foundation trust in connection with this Program in any press or
17
- # other public announcement without the prior written consent of
18
- # The Royal Marsden NHS Foundation Trust.
19
- #
20
- # You should have received a copy of the GNU General Public License
21
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
22
-
23
- """
24
- .. module:: urls.
25
- :synopsis: Module to match URLs and pass over to views or export modules.
26
-
27
- .. moduleauthor:: Ed McDonagh
28
-
29
- """
30
- from django.contrib.auth import views as auth_views
31
- from django.urls import include, path
32
- from django.conf.urls import url
33
- from django import views as django_views
34
-
35
- from . import (
36
- views,
37
- views_admin,
38
- views_charts_ct,
39
- views_charts_nm,
40
- views_charts_dx,
41
- views_charts_mg,
42
- views_charts_rf,
43
- views_openskin,
44
- )
45
- from .exports import exportviews
46
- from .netdicom import dicomviews
47
- from .extractors import import_views
48
-
49
-
50
- main_patterns = [
51
- path("rf/<int:pk>/", views.rf_detail_view, name="rf_detail_view"),
52
- path("", views.openrem_home, name="home"),
53
- path("homestudies/", views.update_latest_studies, name="update_latest_studies"),
54
- path("rf/", views.rf_summary_list_filter, name="rf_summary_list_filter"),
55
- path(
56
- "rf/chart/", views_charts_rf.rf_summary_chart_data, name="rf_summary_chart_data"
57
- ),
58
- path(
59
- "rf/<int:pk>/skin_map/",
60
- views.rf_detail_view_skin_map,
61
- name="rf_detail_view_skin_map",
62
- ),
63
- path("nm/", views.nm_summary_list_filter, name="nm_summary_list_filter"),
64
- path(
65
- "nm/chart/", views_charts_nm.nm_summary_chart_data, name="nm_summary_chart_data"
66
- ),
67
- path("nm/<int:pk>/", views.nm_detail_view, name="nm_detail_view"),
68
- path("ct/", views.ct_summary_list_filter, name="ct_summary_list_filter"),
69
- path(
70
- "ct/chart/", views_charts_ct.ct_summary_chart_data, name="ct_summary_chart_data"
71
- ),
72
- path("ct/<int:pk>/", views.ct_detail_view, name="ct_detail_view"),
73
- path("dx/", views.dx_summary_list_filter, name="dx_summary_list_filter"),
74
- path(
75
- "dx/chart/", views_charts_dx.dx_summary_chart_data, name="dx_summary_chart_data"
76
- ),
77
- path("dx/<int:pk>/", views.dx_detail_view, name="dx_detail_view"),
78
- path("mg/", views.mg_summary_list_filter, name="mg_summary_list_filter"),
79
- path(
80
- "mg/chart/", views_charts_mg.mg_summary_chart_data, name="mg_summary_chart_data"
81
- ),
82
- path("mg/<int:pk>/", views.mg_detail_view, name="mg_detail_view"),
83
- path(
84
- "viewdisplaynames/", views_admin.display_names_view, name="display_names_view"
85
- ),
86
- path("delete/<int:pk>", views_admin.study_delete, name="study_delete"),
87
- path(
88
- "updatedisplaynames/",
89
- views_admin.display_name_update,
90
- name="display_name_update",
91
- ),
92
- path(
93
- "populatedisplaynames",
94
- views_admin.display_name_populate,
95
- name="display_name_populate",
96
- ),
97
- path(
98
- "populatefailedimportlist",
99
- views_admin.failed_list_populate,
100
- name="failed_list_populate",
101
- ),
102
- path(
103
- "misc/reprocessdual/<int:pk>/",
104
- views_admin.reprocess_dual,
105
- name="reprocess_dual",
106
- ),
107
- path(
108
- "change_password/",
109
- auth_views.PasswordChangeView.as_view(
110
- template_name="registration/changepassword.html"
111
- ),
112
- name="password_change",
113
- ),
114
- path(
115
- "change_password/done/",
116
- auth_views.PasswordChangeDoneView.as_view(
117
- template_name="registration/changepassworddone.html"
118
- ),
119
- name="password_change_done",
120
- ),
121
- path(
122
- "migrate/populate_summary/",
123
- views_admin.populate_summary,
124
- name="populate_summary",
125
- ),
126
- path(
127
- "migrate/populate_summary_progress/",
128
- views_admin.populate_summary_progress,
129
- name="populate_summary_progress",
130
- ),
131
- ]
132
-
133
-
134
- tasks_patterns = [
135
- path("tasks/task_admin/", views_admin.display_tasks, name="task_admin"),
136
- path("tasks/get_tasks/<str:stage>/", views_admin.tasks, name="get_tasks"),
137
- path(
138
- "tasks/abort_task/<uuid:task_id>/",
139
- views_admin.task_abort,
140
- name="abort_task",
141
- ),
142
- path(
143
- "tasks/remove_task/<uuid:task_id>/", views_admin.task_remove, name="remove_task"
144
- ),
145
- ]
146
-
147
-
148
- review_patterns = [
149
- path(
150
- "<int:equip_name_pk>/<str:modality>/",
151
- views_admin.review_summary_list,
152
- name="review_summary_list",
153
- ),
154
- path("study", views_admin.review_study_details, name="review_study_details"),
155
- path(
156
- "studiesdelete", views_admin.review_studies_delete, name="review_studies_delete"
157
- ),
158
- path(
159
- "equipmentlastdateandcount",
160
- views_admin.display_name_last_date_and_count,
161
- name="display_name_last_date_and_count",
162
- ),
163
- path(
164
- "studiesequipdelete",
165
- views_admin.review_studies_equip_delete,
166
- name="review_studies_equip_delete",
167
- ),
168
- path(
169
- "failed/<str:modality>/",
170
- views_admin.review_failed_imports,
171
- name="review_failed_imports",
172
- ),
173
- path(
174
- "failed/study",
175
- views_admin.review_failed_study_details,
176
- name="review_failed_study_details",
177
- ),
178
- path(
179
- "studiesdeletefailed",
180
- views_admin.review_failed_studies_delete,
181
- name="review_failed_studies_delete",
182
- ),
183
- path(
184
- "equipmentskinmapenabled/",
185
- views_openskin.display_name_skin_enabled,
186
- name="display_name_skin_enabled",
187
- ),
188
- path(
189
- "openskinsafelist/add/<int:equip_name_pk>/",
190
- views_openskin.SkinSafeListCreate.as_view(),
191
- name="skinsafelist_add",
192
- ),
193
- path(
194
- "openskinsafelist/<int:pk>/<int:equip_name_pk>/",
195
- views_openskin.SkinSafeListUpdate.as_view(),
196
- name="skinsafelist_update",
197
- ),
198
- path(
199
- "openskinsafelist/<int:pk>/delete/",
200
- views_openskin.SkinSafeListDelete.as_view(),
201
- name="skinsafelist_delete",
202
- ),
203
- ]
204
-
205
-
206
- patient_size_patterns = [
207
- path("sizeupload/", import_views.size_upload, name="size_upload"),
208
- path("sizeprocess/<int:pk>/", import_views.size_process, name="size_process"),
209
- path("sizeimports/", import_views.size_imports, name="size_imports"),
210
- path("sizedelete/", import_views.size_delete, name="size_delete"),
211
- path("sizeimport/abort/<int:pk>/", import_views.size_abort, name="size_abort"),
212
- path("sizelogs/<uuid:task_id>/", import_views.size_download, name="size_download"),
213
- ]
214
-
215
-
216
- settings_not_patient_indicators_patterns = [
217
- path("", views_admin.not_patient_indicators, name="not_patient_indicators"),
218
- path(
219
- "restore074/",
220
- views_admin.not_patient_indicators_as_074,
221
- name="not_patient_indicators_as_074",
222
- ),
223
- path(
224
- "names/add/",
225
- views_admin.NotPatientNameCreate.as_view(),
226
- name="notpatientname_add",
227
- ),
228
- path(
229
- "names/<int:pk>/",
230
- views_admin.NotPatientNameUpdate.as_view(),
231
- name="notpatientname_update",
232
- ),
233
- path(
234
- "names/<int:pk>/delete/",
235
- views_admin.NotPatientNameDelete.as_view(),
236
- name="notpatientname_delete",
237
- ),
238
- path("id/add/", views_admin.NotPatientIDCreate.as_view(), name="notpatienid_add"),
239
- path(
240
- "id/<int:pk>/",
241
- views_admin.NotPatientIDUpdate.as_view(),
242
- name="notpatientid_update",
243
- ),
244
- path(
245
- "id/<int:pk>/delete/",
246
- views_admin.NotPatientIDDelete.as_view(),
247
- name="notpatientid_delete",
248
- ),
249
- ]
250
-
251
- settings_patterns = [
252
- path("charts_toggle/", views_admin.charts_toggle, name="charts_toggle"),
253
- path("chartoptions/", views_admin.chart_options_view, name="chart_options_view"),
254
- path(
255
- "homepageoptions/",
256
- views_admin.homepage_options_view,
257
- name="homepage_options_view",
258
- ),
259
- path(
260
- "patientidsettings/<int:pk>/",
261
- views_admin.PatientIDSettingsUpdate.as_view(),
262
- name="patient_id_settings_update",
263
- ),
264
- path(
265
- "dicomdelsettings/<int:pk>/",
266
- views_admin.DicomDeleteSettingsUpdate.as_view(),
267
- name="dicom_delete_settings_update",
268
- ),
269
- path(
270
- "skindosemapsettings/<int:pk>/",
271
- views_openskin.SkinDoseMapCalcSettingsUpdate.as_view(),
272
- name="skin_dose_map_settings_update",
273
- ),
274
- path(
275
- "adminquestions/hide_not_patient/",
276
- views_admin.admin_questions_hide_not_patient,
277
- name="admin_questions_hide_not_patient",
278
- ),
279
- path(
280
- "rfalertsettings/<int:pk>/",
281
- views_admin.RFHighDoseAlertSettings.as_view(),
282
- name="rf_alert_settings_update",
283
- ),
284
- path(
285
- "rfalertnotifications/",
286
- views_admin.rf_alert_notifications_view,
287
- name="rf_alert_notifications_view",
288
- ),
289
- path(
290
- "rfrecalculateaccumdoses/",
291
- views_admin.rf_recalculate_accum_doses,
292
- name="rf_recalculate_accum_doses",
293
- ),
294
- path("notpatientindicators/", include(settings_not_patient_indicators_patterns)),
295
- path(
296
- "background_task_settings/<int:pk>/",
297
- views_admin.BackgroundTaskMaximumRowsUpdate.as_view(),
298
- name="background_task_settings",
299
- ),
300
- ]
301
-
302
-
303
- export_patterns = [
304
- path("", exportviews.export, name="export"),
305
- path("ctcsv1/<int:name>/<int:pat_id>/", exportviews.ctcsv1, name="ctcsv1"),
306
- path("ctxlsx1/<int:name>/<int:pat_id>/", exportviews.ctxlsx1, name="ctxlsx1"),
307
- path("ctphe2019/", exportviews.ct_xlsx_phe2019, name="ct_xlsx_phe2019"),
308
- path("nmcsv1/<int:name>/<int:pat_id>/", exportviews.nmcsv1, name="nmcsv1"),
309
- path("nmxlsx1/<int:name>/<int:pat_id>/", exportviews.nmxlsx1, name="nmxlsx1"),
310
- path("dxcsv1/<int:name>/<int:pat_id>/", exportviews.dxcsv1, name="dxcsv1"),
311
- path("dxxlsx1/<int:name>/<int:pat_id>/", exportviews.dxxlsx1, name="dxxlsx1"),
312
- path(
313
- "dxphe2019/<str:export_type>/",
314
- exportviews.dx_xlsx_phe2019,
315
- name="dx_xlsx_phe2019",
316
- ),
317
- path("flcsv1/<int:name>/<int:pat_id>/", exportviews.flcsv1, name="flcsv1"),
318
- path("rfxlsx1/<int:name>/<int:pat_id>/", exportviews.rfxlsx1, name="rfxlsx1"),
319
- path("rfopenskin/<int:pk>/", exportviews.rfopenskin, name="rfopenskin"),
320
- path("rfphe2019/", exportviews.rf_xlsx_phe2019, name="rf_xlsx_phe2019"),
321
- path("mgcsv1/<int:name>/<int:pat_id>/", exportviews.mgcsv1, name="mgcsv1"),
322
- path("mgxlsx1/<int:name>/<int:pat_id>/", exportviews.mgxlsx1, name="mgxlsx1"),
323
- path("mgnhsbsp/", exportviews.mgnhsbsp, name="mgnhsbsp"),
324
- path("download/<uuid:task_id>/", exportviews.download, name="download"),
325
- path("deletefile/", exportviews.deletefile, name="deletefile"),
326
- path("abort/<str:pk>/", exportviews.export_abort, name="export_abort"),
327
- path("remove/<uuid:task_id>/", exportviews.export_remove, name="export_remove"),
328
- path("updatequeue/", exportviews.update_queue, name="update_queue"),
329
- path("updateactive/", exportviews.update_active, name="update_active"),
330
- path("updateerror/", exportviews.update_error, name="update_error"),
331
- path("updatecomplete/", exportviews.update_complete, name="update_complete"),
332
- ]
333
-
334
- dicom_patterns = [
335
- path("summary", dicomviews.dicom_summary, name="dicom_summary"),
336
- path("store/add/", dicomviews.DicomStoreCreate.as_view(), name="dicomstore_add"),
337
- path(
338
- "store/<int:pk>/",
339
- dicomviews.DicomStoreUpdate.as_view(),
340
- name="dicomstore_update",
341
- ),
342
- path(
343
- "store/<int:pk>/delete/",
344
- dicomviews.DicomStoreDelete.as_view(),
345
- name="dicomstore_delete",
346
- ),
347
- path(
348
- "store/statusupdate", dicomviews.status_update_store, name="status_update_store"
349
- ),
350
- path("qr/add/", dicomviews.DicomQRCreate.as_view(), name="dicomqr_add"),
351
- path("qr/<int:pk>/", dicomviews.DicomQRUpdate.as_view(), name="dicomqr_update"),
352
- path(
353
- "qr/<int:pk>/delete/", dicomviews.DicomQRDelete.as_view(), name="dicomqr_delete"
354
- ),
355
- path("queryupdate", dicomviews.q_update, name="query_update"),
356
- path("queryprocess", dicomviews.q_process, name="q_process"),
357
- path("queryremote", dicomviews.dicom_qr_page, name="dicom_qr_page"),
358
- path("queryretrieve", dicomviews.r_start, name="start_retrieve"),
359
- path("moveupdate", dicomviews.r_update, name="move_update"),
360
- path("qrnodestatus", dicomviews.get_qr_status, name="get_qr_status"),
361
- path("storenodestatus", dicomviews.get_store_status, name="get_store_status"),
362
- path("querysummary", dicomviews.get_query_summary, name="get_query_summary"),
363
- path(
364
- "querydetails/<int:pk>", dicomviews.get_query_details, name="get_query_details"
365
- ),
366
- path("queryseries/<int:pk>", dicomviews.get_query_series, name="get_query_series"),
367
- path("queryimages/<int:pk>", dicomviews.get_query_images, name="get_query_images"),
368
- path("deletequeries/", dicomviews.delete_queries, name="delete_queries"),
369
- ]
370
-
371
- import_patterns = [ # pylint: disable=invalid-name
372
- path("from_docker/", import_views.import_from_docker, name="import_docker")
373
- ]
374
-
375
- standard_name_patterns = [ # pylint: disable=invalid-name
376
- path("add_name_ct/", views_admin.StandardNameAddCT.as_view(), name="add_name_ct"),
377
- path("add_name_dx/", views_admin.StandardNameAddDX.as_view(), name="add_name_dx"),
378
- path("add_name_rf/", views_admin.StandardNameAddRF.as_view(), name="add_name_rf"),
379
- path("add_name_mg/", views_admin.StandardNameAddMG.as_view(), name="add_name_mg"),
380
- path(
381
- "update_all_std_names/<str:modality>/",
382
- views_admin.standard_name_update_all,
383
- name="update_all_std_names",
384
- ),
385
- path(
386
- "update_all_std_names_form/<str:modality>/",
387
- views_admin.standard_name_update_all_form,
388
- name="update_all_std_names_form",
389
- ),
390
- path(
391
- "update_name/<int:std_name_pk>/<str:modality>/",
392
- views_admin.standard_name_update,
393
- name="update_name",
394
- ),
395
- path(
396
- "update_name_ct/<int:pk>/",
397
- views_admin.StandardNameUpdateCT.as_view(),
398
- name="update_name_ct",
399
- ),
400
- path(
401
- "update_name_dx/<int:pk>/",
402
- views_admin.StandardNameUpdateDX.as_view(),
403
- name="update_name_dx",
404
- ),
405
- path(
406
- "update_name_rf/<int:pk>/",
407
- views_admin.StandardNameUpdateRF.as_view(),
408
- name="update_name_rf",
409
- ),
410
- path(
411
- "update_name_mg/<int:pk>/",
412
- views_admin.StandardNameUpdateMG.as_view(),
413
- name="update_name_mg",
414
- ),
415
- path(
416
- "view_standard_names/",
417
- views_admin.standard_names_view,
418
- name="standard_names_view",
419
- ),
420
- path(
421
- "populate_standard_names",
422
- views_admin.standard_names_populate,
423
- name="standard_names_populate",
424
- ),
425
- path(
426
- "standard_name/<int:pk>/delete/",
427
- views_admin.StandardNameDelete.as_view(),
428
- name="standard_name_delete",
429
- ),
430
- path(
431
- "standard_name_settings/<int:pk>/",
432
- views_admin.StandardNameSettingsUpdate.as_view(),
433
- name="standard_name_settings",
434
- ),
435
- ]
436
-
437
- urlpatterns = [
438
- path("", include(main_patterns)),
439
- path("export/", include(export_patterns)),
440
- path("dicom/", include(dicom_patterns)),
441
- path("settings/", include(settings_patterns)),
442
- path("ptsize/", include(patient_size_patterns)),
443
- path("review/", include(review_patterns)),
444
- path("tasks/", include(tasks_patterns)),
445
- path("import/", include(import_patterns)),
446
- path("names/", include(standard_name_patterns)),
447
- url(r"^jsi18n/$", django_views.i18n.JavaScriptCatalog.as_view(), name="jsi18n"),
448
- ]
1
+ # OpenREM - Radiation Exposure Monitoring tools for the physicist
2
+ # Copyright (C) 2012,2013 The Royal Marsden NHS Foundation Trust
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+ #
14
+ # Additional permission under section 7 of GPLv3:
15
+ # You shall not make any use of the name of The Royal Marsden NHS
16
+ # Foundation trust in connection with this Program in any press or
17
+ # other public announcement without the prior written consent of
18
+ # The Royal Marsden NHS Foundation Trust.
19
+ #
20
+ # You should have received a copy of the GNU General Public License
21
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
22
+
23
+ """
24
+ .. module:: urls.
25
+ :synopsis: Module to match URLs and pass over to views or export modules.
26
+
27
+ .. moduleauthor:: Ed McDonagh
28
+
29
+ """
30
+ from django.contrib.auth import views as auth_views
31
+ from django.urls import include, path
32
+ from django.conf.urls import url
33
+ from django import views as django_views
34
+
35
+ from . import (
36
+ views,
37
+ views_admin,
38
+ views_charts_ct,
39
+ views_charts_nm,
40
+ views_charts_dx,
41
+ views_charts_mg,
42
+ views_charts_rf,
43
+ views_openskin,
44
+ )
45
+ from .exports import exportviews
46
+ from .netdicom import dicomviews
47
+ from .extractors import import_views
48
+
49
+
50
+ main_patterns = [
51
+ path(
52
+ "rf/<int:pk>/force_recalculation/", views.rf_detail_view, name="rf_detail_view"
53
+ ),
54
+ path("rf/<int:pk>/", views.rf_detail_view, name="rf_detail_view"),
55
+ path("", views.openrem_home, name="home"),
56
+ path("homestudies/", views.update_latest_studies, name="update_latest_studies"),
57
+ path("rf/", views.rf_summary_list_filter, name="rf_summary_list_filter"),
58
+ path(
59
+ "rf/chart/", views_charts_rf.rf_summary_chart_data, name="rf_summary_chart_data"
60
+ ),
61
+ path(
62
+ "rf/<int:pk>/skin_map/",
63
+ views.rf_detail_view_skin_map,
64
+ name="rf_detail_view_skin_map",
65
+ ),
66
+ path(
67
+ "rf/<int:pk>/force_recalculation/skin_map/",
68
+ views.rf_detail_view_skin_map,
69
+ name="rf_detail_view_skin_map_force_recalculation",
70
+ ),
71
+ path("nm/", views.nm_summary_list_filter, name="nm_summary_list_filter"),
72
+ path(
73
+ "nm/chart/", views_charts_nm.nm_summary_chart_data, name="nm_summary_chart_data"
74
+ ),
75
+ path("nm/<int:pk>/", views.nm_detail_view, name="nm_detail_view"),
76
+ path("ct/", views.ct_summary_list_filter, name="ct_summary_list_filter"),
77
+ path(
78
+ "ct/chart/", views_charts_ct.ct_summary_chart_data, name="ct_summary_chart_data"
79
+ ),
80
+ path("ct/<int:pk>/", views.ct_detail_view, name="ct_detail_view"),
81
+ path("dx/", views.dx_summary_list_filter, name="dx_summary_list_filter"),
82
+ path(
83
+ "dx/chart/", views_charts_dx.dx_summary_chart_data, name="dx_summary_chart_data"
84
+ ),
85
+ path("dx/<int:pk>/", views.dx_detail_view, name="dx_detail_view"),
86
+ path("mg/", views.mg_summary_list_filter, name="mg_summary_list_filter"),
87
+ path(
88
+ "mg/chart/", views_charts_mg.mg_summary_chart_data, name="mg_summary_chart_data"
89
+ ),
90
+ path("mg/<int:pk>/", views.mg_detail_view, name="mg_detail_view"),
91
+ path(
92
+ "viewdisplaynames/", views_admin.display_names_view, name="display_names_view"
93
+ ),
94
+ path("delete/<int:pk>", views_admin.study_delete, name="study_delete"),
95
+ path(
96
+ "updatedisplaynames/",
97
+ views_admin.display_name_update,
98
+ name="display_name_update",
99
+ ),
100
+ path(
101
+ "populatedisplaynames",
102
+ views_admin.display_name_populate,
103
+ name="display_name_populate",
104
+ ),
105
+ path(
106
+ "populatefailedimportlist",
107
+ views_admin.failed_list_populate,
108
+ name="failed_list_populate",
109
+ ),
110
+ path(
111
+ "misc/reprocessdual/<int:pk>/",
112
+ views_admin.reprocess_dual,
113
+ name="reprocess_dual",
114
+ ),
115
+ path(
116
+ "change_password/",
117
+ auth_views.PasswordChangeView.as_view(
118
+ template_name="registration/changepassword.html"
119
+ ),
120
+ name="password_change",
121
+ ),
122
+ path(
123
+ "change_password/done/",
124
+ auth_views.PasswordChangeDoneView.as_view(
125
+ template_name="registration/changepassworddone.html"
126
+ ),
127
+ name="password_change_done",
128
+ ),
129
+ path(
130
+ "migrate/populate_summary/",
131
+ views_admin.populate_summary,
132
+ name="populate_summary",
133
+ ),
134
+ path(
135
+ "migrate/populate_summary_progress/",
136
+ views_admin.populate_summary_progress,
137
+ name="populate_summary_progress",
138
+ ),
139
+ ]
140
+
141
+
142
+ tasks_patterns = [
143
+ path("tasks/task_admin/", views_admin.display_tasks, name="task_admin"),
144
+ path("tasks/get_tasks/<str:stage>/", views_admin.tasks, name="get_tasks"),
145
+ path(
146
+ "tasks/abort_task/<uuid:task_id>/",
147
+ views_admin.task_abort,
148
+ name="abort_task",
149
+ ),
150
+ path(
151
+ "tasks/remove_task/<uuid:task_id>/", views_admin.task_remove, name="remove_task"
152
+ ),
153
+ ]
154
+
155
+
156
+ review_patterns = [
157
+ path(
158
+ "<int:equip_name_pk>/<str:modality>/",
159
+ views_admin.review_summary_list,
160
+ name="review_summary_list",
161
+ ),
162
+ path("study", views_admin.review_study_details, name="review_study_details"),
163
+ path(
164
+ "studiesdelete", views_admin.review_studies_delete, name="review_studies_delete"
165
+ ),
166
+ path(
167
+ "equipmentlastdateandcount",
168
+ views_admin.display_name_last_date_and_count,
169
+ name="display_name_last_date_and_count",
170
+ ),
171
+ path(
172
+ "studiesequipdelete",
173
+ views_admin.review_studies_equip_delete,
174
+ name="review_studies_equip_delete",
175
+ ),
176
+ path(
177
+ "failed/<str:modality>/",
178
+ views_admin.review_failed_imports,
179
+ name="review_failed_imports",
180
+ ),
181
+ path(
182
+ "failed/study",
183
+ views_admin.review_failed_study_details,
184
+ name="review_failed_study_details",
185
+ ),
186
+ path(
187
+ "studiesdeletefailed",
188
+ views_admin.review_failed_studies_delete,
189
+ name="review_failed_studies_delete",
190
+ ),
191
+ path(
192
+ "equipmentskinmapenabled/",
193
+ views_openskin.display_name_skin_enabled,
194
+ name="display_name_skin_enabled",
195
+ ),
196
+ path(
197
+ "openskinsafelist/add/<int:equip_name_pk>/",
198
+ views_openskin.SkinSafeListCreate.as_view(),
199
+ name="skinsafelist_add",
200
+ ),
201
+ path(
202
+ "openskinsafelist/<int:pk>/<int:equip_name_pk>/",
203
+ views_openskin.SkinSafeListUpdate.as_view(),
204
+ name="skinsafelist_update",
205
+ ),
206
+ path(
207
+ "openskinsafelist/<int:pk>/delete/",
208
+ views_openskin.SkinSafeListDelete.as_view(),
209
+ name="skinsafelist_delete",
210
+ ),
211
+ ]
212
+
213
+
214
+ patient_size_patterns = [
215
+ path("sizeupload/", import_views.size_upload, name="size_upload"),
216
+ path("sizeprocess/<int:pk>/", import_views.size_process, name="size_process"),
217
+ path("sizeimports/", import_views.size_imports, name="size_imports"),
218
+ path("sizedelete/", import_views.size_delete, name="size_delete"),
219
+ path("sizeimport/abort/<int:pk>/", import_views.size_abort, name="size_abort"),
220
+ path("sizelogs/<uuid:task_id>/", import_views.size_download, name="size_download"),
221
+ ]
222
+
223
+
224
+ settings_not_patient_indicators_patterns = [
225
+ path("", views_admin.not_patient_indicators, name="not_patient_indicators"),
226
+ path(
227
+ "restore074/",
228
+ views_admin.not_patient_indicators_as_074,
229
+ name="not_patient_indicators_as_074",
230
+ ),
231
+ path(
232
+ "names/add/",
233
+ views_admin.NotPatientNameCreate.as_view(),
234
+ name="notpatientname_add",
235
+ ),
236
+ path(
237
+ "names/<int:pk>/",
238
+ views_admin.NotPatientNameUpdate.as_view(),
239
+ name="notpatientname_update",
240
+ ),
241
+ path(
242
+ "names/<int:pk>/delete/",
243
+ views_admin.NotPatientNameDelete.as_view(),
244
+ name="notpatientname_delete",
245
+ ),
246
+ path("id/add/", views_admin.NotPatientIDCreate.as_view(), name="notpatienid_add"),
247
+ path(
248
+ "id/<int:pk>/",
249
+ views_admin.NotPatientIDUpdate.as_view(),
250
+ name="notpatientid_update",
251
+ ),
252
+ path(
253
+ "id/<int:pk>/delete/",
254
+ views_admin.NotPatientIDDelete.as_view(),
255
+ name="notpatientid_delete",
256
+ ),
257
+ ]
258
+
259
+ settings_patterns = [
260
+ path("charts_toggle/", views_admin.charts_toggle, name="charts_toggle"),
261
+ path("chartoptions/", views_admin.chart_options_view, name="chart_options_view"),
262
+ path(
263
+ "homepageoptions/",
264
+ views_admin.homepage_options_view,
265
+ name="homepage_options_view",
266
+ ),
267
+ path(
268
+ "patientidsettings/<int:pk>/",
269
+ views_admin.PatientIDSettingsUpdate.as_view(),
270
+ name="patient_id_settings_update",
271
+ ),
272
+ path(
273
+ "dicomdelsettings/<int:pk>/",
274
+ views_admin.DicomDeleteSettingsUpdate.as_view(),
275
+ name="dicom_delete_settings_update",
276
+ ),
277
+ path(
278
+ "skindosemapsettings/<int:pk>/",
279
+ views_openskin.SkinDoseMapCalcSettingsUpdate.as_view(),
280
+ name="skin_dose_map_settings_update",
281
+ ),
282
+ path(
283
+ "adminquestions/hide_not_patient/",
284
+ views_admin.admin_questions_hide_not_patient,
285
+ name="admin_questions_hide_not_patient",
286
+ ),
287
+ path(
288
+ "rfalertsettings/<int:pk>/",
289
+ views_admin.RFHighDoseAlertSettings.as_view(),
290
+ name="rf_alert_settings_update",
291
+ ),
292
+ path(
293
+ "rfalertnotifications/",
294
+ views_admin.rf_alert_notifications_view,
295
+ name="rf_alert_notifications_view",
296
+ ),
297
+ path(
298
+ "rfrecalculateaccumdoses/",
299
+ views_admin.rf_recalculate_accum_doses,
300
+ name="rf_recalculate_accum_doses",
301
+ ),
302
+ path("notpatientindicators/", include(settings_not_patient_indicators_patterns)),
303
+ path(
304
+ "background_task_settings/<int:pk>/",
305
+ views_admin.BackgroundTaskMaximumRowsUpdate.as_view(),
306
+ name="background_task_settings",
307
+ ),
308
+ ]
309
+
310
+
311
+ export_patterns = [
312
+ path("", exportviews.export, name="export"),
313
+ path("ctcsv1/<int:name>/<int:pat_id>/", exportviews.ctcsv1, name="ctcsv1"),
314
+ path("ctxlsx1/<int:name>/<int:pat_id>/", exportviews.ctxlsx1, name="ctxlsx1"),
315
+ path("ctphe2019/", exportviews.ct_xlsx_phe2019, name="ct_xlsx_phe2019"),
316
+ path("nmcsv1/<int:name>/<int:pat_id>/", exportviews.nmcsv1, name="nmcsv1"),
317
+ path("nmxlsx1/<int:name>/<int:pat_id>/", exportviews.nmxlsx1, name="nmxlsx1"),
318
+ path("dxcsv1/<int:name>/<int:pat_id>/", exportviews.dxcsv1, name="dxcsv1"),
319
+ path("dxxlsx1/<int:name>/<int:pat_id>/", exportviews.dxxlsx1, name="dxxlsx1"),
320
+ path(
321
+ "dxphe2019/<str:export_type>/",
322
+ exportviews.dx_xlsx_phe2019,
323
+ name="dx_xlsx_phe2019",
324
+ ),
325
+ path("flcsv1/<int:name>/<int:pat_id>/", exportviews.flcsv1, name="flcsv1"),
326
+ path("rfxlsx1/<int:name>/<int:pat_id>/", exportviews.rfxlsx1, name="rfxlsx1"),
327
+ path("rfopenskin/<int:pk>/", exportviews.rfopenskin, name="rfopenskin"),
328
+ path("rfphe2019/", exportviews.rf_xlsx_phe2019, name="rf_xlsx_phe2019"),
329
+ path("mgcsv1/<int:name>/<int:pat_id>/", exportviews.mgcsv1, name="mgcsv1"),
330
+ path("mgxlsx1/<int:name>/<int:pat_id>/", exportviews.mgxlsx1, name="mgxlsx1"),
331
+ path("mgnhsbsp/", exportviews.mgnhsbsp, name="mgnhsbsp"),
332
+ path("download/<uuid:task_id>/", exportviews.download, name="download"),
333
+ path("deletefile/", exportviews.deletefile, name="deletefile"),
334
+ path("abort/<str:pk>/", exportviews.export_abort, name="export_abort"),
335
+ path("remove/<uuid:task_id>/", exportviews.export_remove, name="export_remove"),
336
+ path("updatequeue/", exportviews.update_queue, name="update_queue"),
337
+ path("updateactive/", exportviews.update_active, name="update_active"),
338
+ path("updateerror/", exportviews.update_error, name="update_error"),
339
+ path("updatecomplete/", exportviews.update_complete, name="update_complete"),
340
+ ]
341
+
342
+ dicom_patterns = [
343
+ path("summary", dicomviews.dicom_summary, name="dicom_summary"),
344
+ path("store/add/", dicomviews.DicomStoreCreate.as_view(), name="dicomstore_add"),
345
+ path(
346
+ "store/<int:pk>/",
347
+ dicomviews.DicomStoreUpdate.as_view(),
348
+ name="dicomstore_update",
349
+ ),
350
+ path(
351
+ "store/<int:pk>/delete/",
352
+ dicomviews.DicomStoreDelete.as_view(),
353
+ name="dicomstore_delete",
354
+ ),
355
+ path(
356
+ "store/statusupdate", dicomviews.status_update_store, name="status_update_store"
357
+ ),
358
+ path("qr/add/", dicomviews.DicomQRCreate.as_view(), name="dicomqr_add"),
359
+ path("qr/<int:pk>/", dicomviews.DicomQRUpdate.as_view(), name="dicomqr_update"),
360
+ path(
361
+ "qr/<int:pk>/delete/", dicomviews.DicomQRDelete.as_view(), name="dicomqr_delete"
362
+ ),
363
+ path("queryupdate", dicomviews.q_update, name="query_update"),
364
+ path("queryprocess", dicomviews.q_process, name="q_process"),
365
+ path("queryremote", dicomviews.dicom_qr_page, name="dicom_qr_page"),
366
+ path("queryretrieve", dicomviews.r_start, name="start_retrieve"),
367
+ path("moveupdate", dicomviews.r_update, name="move_update"),
368
+ path("qrnodestatus", dicomviews.get_qr_status, name="get_qr_status"),
369
+ path("storenodestatus", dicomviews.get_store_status, name="get_store_status"),
370
+ path("querysummary", dicomviews.get_query_summary, name="get_query_summary"),
371
+ path(
372
+ "querydetails/<int:pk>", dicomviews.get_query_details, name="get_query_details"
373
+ ),
374
+ path("queryseries/<int:pk>", dicomviews.get_query_series, name="get_query_series"),
375
+ path("queryimages/<int:pk>", dicomviews.get_query_images, name="get_query_images"),
376
+ path("deletequeries/", dicomviews.delete_queries, name="delete_queries"),
377
+ ]
378
+
379
+ import_patterns = [ # pylint: disable=invalid-name
380
+ path("from_docker/", import_views.import_from_docker, name="import_docker")
381
+ ]
382
+
383
+ standard_name_patterns = [ # pylint: disable=invalid-name
384
+ path("add_name_ct/", views_admin.StandardNameAddCT.as_view(), name="add_name_ct"),
385
+ path("add_name_dx/", views_admin.StandardNameAddDX.as_view(), name="add_name_dx"),
386
+ path("add_name_rf/", views_admin.StandardNameAddRF.as_view(), name="add_name_rf"),
387
+ path("add_name_mg/", views_admin.StandardNameAddMG.as_view(), name="add_name_mg"),
388
+ path(
389
+ "update_all_std_names/<str:modality>/",
390
+ views_admin.standard_name_update_all,
391
+ name="update_all_std_names",
392
+ ),
393
+ path(
394
+ "update_all_std_names_form/<str:modality>/",
395
+ views_admin.standard_name_update_all_form,
396
+ name="update_all_std_names_form",
397
+ ),
398
+ path(
399
+ "update_name/<int:std_name_pk>/<str:modality>/",
400
+ views_admin.standard_name_update,
401
+ name="update_name",
402
+ ),
403
+ path(
404
+ "update_name_ct/<int:pk>/",
405
+ views_admin.StandardNameUpdateCT.as_view(),
406
+ name="update_name_ct",
407
+ ),
408
+ path(
409
+ "update_name_dx/<int:pk>/",
410
+ views_admin.StandardNameUpdateDX.as_view(),
411
+ name="update_name_dx",
412
+ ),
413
+ path(
414
+ "update_name_rf/<int:pk>/",
415
+ views_admin.StandardNameUpdateRF.as_view(),
416
+ name="update_name_rf",
417
+ ),
418
+ path(
419
+ "update_name_mg/<int:pk>/",
420
+ views_admin.StandardNameUpdateMG.as_view(),
421
+ name="update_name_mg",
422
+ ),
423
+ path(
424
+ "view_standard_names/",
425
+ views_admin.standard_names_view,
426
+ name="standard_names_view",
427
+ ),
428
+ path(
429
+ "populate_standard_names",
430
+ views_admin.standard_names_populate,
431
+ name="standard_names_populate",
432
+ ),
433
+ path(
434
+ "standard_name/<int:pk>/delete/",
435
+ views_admin.StandardNameDelete.as_view(),
436
+ name="standard_name_delete",
437
+ ),
438
+ path(
439
+ "standard_name_settings/<int:pk>/",
440
+ views_admin.StandardNameSettingsUpdate.as_view(),
441
+ name="standard_name_settings",
442
+ ),
443
+ ]
444
+
445
+ urlpatterns = [
446
+ path("", include(main_patterns)),
447
+ path("export/", include(export_patterns)),
448
+ path("dicom/", include(dicom_patterns)),
449
+ path("settings/", include(settings_patterns)),
450
+ path("ptsize/", include(patient_size_patterns)),
451
+ path("review/", include(review_patterns)),
452
+ path("tasks/", include(tasks_patterns)),
453
+ path("import/", include(import_patterns)),
454
+ path("names/", include(standard_name_patterns)),
455
+ url(r"^jsi18n/$", django_views.i18n.JavaScriptCatalog.as_view(), name="jsi18n"),
456
+ ]