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
@@ -1,1044 +1,1044 @@
1
- # Generated by Django 2.2.6 on 2020-01-30 17:49
2
-
3
- from django.conf import settings
4
- from django.db import migrations, models
5
- import django.db.models.deletion
6
-
7
-
8
- class Migration(migrations.Migration):
9
-
10
- initial = True
11
-
12
- dependencies = [
13
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
14
- ]
15
-
16
- operations = [
17
- migrations.CreateModel(
18
- name='AccumXRayDose',
19
- fields=[
20
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
21
- ],
22
- ),
23
- migrations.CreateModel(
24
- name='AdminTaskQuestions',
25
- fields=[
26
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
27
- ('ask_revert_to_074_question', models.BooleanField(default=True)),
28
- ],
29
- options={
30
- 'abstract': False,
31
- },
32
- ),
33
- migrations.CreateModel(
34
- name='ContextID',
35
- fields=[
36
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
37
- ('code_value', models.TextField()),
38
- ('code_meaning', models.TextField(blank=True, null=True)),
39
- ('cid_table', models.CharField(blank=True, max_length=16)),
40
- ],
41
- options={
42
- 'ordering': ['code_value'],
43
- },
44
- ),
45
- migrations.CreateModel(
46
- name='CtAccumulatedDoseData',
47
- fields=[
48
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
49
- ('total_number_of_irradiation_events', models.DecimalField(blank=True, decimal_places=0, max_digits=16, null=True)),
50
- ('ct_dose_length_product_total', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
51
- ('ct_effective_dose_total', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
52
- ('reference_authority_text', models.TextField(blank=True, null=True)),
53
- ('patient_model', models.TextField(blank=True, null=True)),
54
- ('effective_dose_phantom_type', models.TextField(blank=True, null=True)),
55
- ('dosimeter_type', models.TextField(blank=True, null=True)),
56
- ('comment', models.TextField(blank=True, null=True)),
57
- ],
58
- ),
59
- migrations.CreateModel(
60
- name='CtDoseCheckDetails',
61
- fields=[
62
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
63
- ('dlp_alert_value_configured', models.NullBooleanField()),
64
- ('ctdivol_alert_value_configured', models.NullBooleanField()),
65
- ('dlp_alert_value', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
66
- ('ctdivol_alert_value', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
67
- ('accumulated_dlp_forward_estimate', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
68
- ('accumulated_ctdivol_forward_estimate', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
69
- ('alert_reason_for_proceeding', models.TextField(blank=True, null=True)),
70
- ('dlp_notification_value_configured', models.NullBooleanField()),
71
- ('ctdivol_notification_value_configured', models.NullBooleanField()),
72
- ('dlp_notification_value', models.DecimalField(blank=True, decimal_places=4, max_digits=8, null=True)),
73
- ('ctdivol_notification_value', models.DecimalField(blank=True, decimal_places=4, max_digits=8, null=True)),
74
- ('dlp_forward_estimate', models.DecimalField(blank=True, decimal_places=4, max_digits=8, null=True)),
75
- ('ctdivol_forward_estimate', models.DecimalField(blank=True, decimal_places=4, max_digits=8, null=True)),
76
- ('notification_reason_for_proceeding', models.TextField(blank=True, null=True)),
77
- ],
78
- ),
79
- migrations.CreateModel(
80
- name='CtIrradiationEventData',
81
- fields=[
82
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
83
- ('acquisition_protocol', models.TextField(blank=True, null=True)),
84
- ('irradiation_event_uid', models.TextField(blank=True, null=True)),
85
- ('irradiation_event_label', models.TextField(blank=True, null=True)),
86
- ('exposure_time', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
87
- ('nominal_single_collimation_width', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
88
- ('nominal_total_collimation_width', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
89
- ('pitch_factor', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
90
- ('number_of_xray_sources', models.DecimalField(blank=True, decimal_places=0, max_digits=8, null=True)),
91
- ('mean_ctdivol', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
92
- ('ctdifreeair_calculation_factor', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
93
- ('mean_ctdifreeair', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
94
- ('dlp', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
95
- ('effective_dose', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
96
- ('effective_dose_conversion_factor', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
97
- ('xray_modulation_type', models.TextField(blank=True, null=True)),
98
- ('comment', models.TextField(blank=True, null=True)),
99
- ('date_time_started', models.DateTimeField(blank=True, null=True)),
100
- ('series_description', models.TextField(blank=True, null=True)),
101
- ('ct_acquisition_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10013_type', to='remapp.ContextID')),
102
- ],
103
- ),
104
- migrations.CreateModel(
105
- name='CtRadiationDose',
106
- fields=[
107
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
108
- ('start_of_xray_irradiation', models.DateTimeField(blank=True, null=True)),
109
- ('end_of_xray_irradiation', models.DateTimeField(blank=True, null=True)),
110
- ('comment', models.TextField(blank=True, null=True)),
111
- ],
112
- ),
113
- migrations.CreateModel(
114
- name='DicomDeleteSettings',
115
- fields=[
116
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
117
- ('del_no_match', models.BooleanField(default=False, verbose_name="delete objects that don't match any import functions?")),
118
- ('del_rdsr', models.BooleanField(default=False, verbose_name='delete radiation dose structured reports after processing?')),
119
- ('del_mg_im', models.BooleanField(default=False, verbose_name='delete mammography images after processing?')),
120
- ('del_dx_im', models.BooleanField(default=False, verbose_name='delete radiography images after processing?')),
121
- ('del_ct_phil', models.BooleanField(default=False, verbose_name='delete Philips CT dose info images after processing?')),
122
- ],
123
- options={
124
- 'verbose_name': 'Delete DICOM objects settings',
125
- },
126
- ),
127
- migrations.CreateModel(
128
- name='DicomRemoteQR',
129
- fields=[
130
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
131
- ('name', models.CharField(max_length=64, unique=True, verbose_name='Name of QR node - fewer than 64 characters, spaces allowed')),
132
- ('aetitle', models.CharField(blank=True, max_length=16, null=True, verbose_name='AE Title of the remote node - 16 or fewer letters and numbers, no spaces')),
133
- ('port', models.IntegerField(blank=True, null=True, verbose_name='Remote port')),
134
- ('ip', models.GenericIPAddressField(blank=True, null=True, verbose_name='Remote IP address')),
135
- ('hostname', models.CharField(blank=True, max_length=32, null=True, verbose_name='Or remote hostname')),
136
- ('callingaet', models.CharField(blank=True, max_length=16, null=True, verbose_name='AE Title of this OpenREM server - 16 or fewer letters and numbers, no spaces')),
137
- ('use_modality_tag', models.BooleanField(default=False, verbose_name='Use modality tag in study query')),
138
- ('enabled', models.BooleanField(default=False)),
139
- ],
140
- ),
141
- migrations.CreateModel(
142
- name='DicomStoreSCP',
143
- fields=[
144
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
145
- ('name', models.CharField(max_length=64, unique=True, verbose_name='Name of local store node - fewer than 64 characters, spaces allowed')),
146
- ('aetitle', models.CharField(blank=True, max_length=16, null=True, verbose_name='AE Title of this node - 16 or fewer letters and numbers, no spaces')),
147
- ('port', models.IntegerField(blank=True, null=True, verbose_name='Port: 104 is standard for DICOM but over 1024 requires fewer admin rights')),
148
- ('task_id', models.CharField(blank=True, max_length=64, null=True)),
149
- ('status', models.CharField(blank=True, max_length=64, null=True)),
150
- ('run', models.BooleanField(default=False)),
151
- ('keep_alive', models.BooleanField(default=False, verbose_name='Should this server be kept auto-started and kept alive (using celery beat)')),
152
- ('controlled', models.BooleanField(default=False, verbose_name='Is this server controlled by OpenREM')),
153
- ],
154
- ),
155
- migrations.CreateModel(
156
- name='GeneralStudyModuleAttr',
157
- fields=[
158
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
159
- ('study_instance_uid', models.TextField(blank=True, null=True)),
160
- ('study_date', models.DateField(blank=True, null=True)),
161
- ('study_time', models.TimeField(blank=True, null=True)),
162
- ('study_workload_chart_time', models.DateTimeField(blank=True, null=True)),
163
- ('referring_physician_name', models.TextField(blank=True, null=True)),
164
- ('referring_physician_identification', models.TextField(blank=True, null=True)),
165
- ('study_id', models.CharField(blank=True, max_length=16, null=True)),
166
- ('accession_number', models.TextField(blank=True, null=True)),
167
- ('accession_hashed', models.BooleanField(default=False)),
168
- ('study_description', models.TextField(blank=True, null=True)),
169
- ('physician_of_record', models.TextField(blank=True, null=True)),
170
- ('name_of_physician_reading_study', models.TextField(blank=True, null=True)),
171
- ('performing_physician_name', models.TextField(blank=True, null=True)),
172
- ('operator_name', models.TextField(blank=True, null=True)),
173
- ('modality_type', models.CharField(blank=True, max_length=16, null=True)),
174
- ('procedure_code_value', models.TextField(blank=True, null=True)),
175
- ('procedure_code_meaning', models.TextField(blank=True, null=True)),
176
- ('requested_procedure_code_value', models.TextField(blank=True, null=True)),
177
- ('requested_procedure_code_meaning', models.TextField(blank=True, null=True)),
178
- ('series_instance_uid', models.TextField(blank=True, null=True)),
179
- ('series_time', models.TimeField(blank=True, null=True)),
180
- ('content_time', models.TimeField(blank=True, null=True)),
181
- ('number_of_events', models.IntegerField(blank=True, null=True)),
182
- ('number_of_events_a', models.IntegerField(blank=True, null=True)),
183
- ('number_of_events_b', models.IntegerField(blank=True, null=True)),
184
- ('number_of_axial', models.IntegerField(blank=True, null=True)),
185
- ('number_of_spiral', models.IntegerField(blank=True, null=True)),
186
- ('number_of_stationary', models.IntegerField(blank=True, null=True)),
187
- ('number_of_const_angle', models.IntegerField(blank=True, null=True)),
188
- ('total_dlp', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
189
- ('total_dap_a', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
190
- ('total_dap_b', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
191
- ('total_dap', models.DecimalField(decimal_places=12, max_digits=16, null=True)),
192
- ('total_rp_dose_a', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
193
- ('total_rp_dose_b', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
194
- ('total_dap_delta_weeks', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
195
- ('total_rp_dose_delta_weeks', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
196
- ('total_agd_left', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
197
- ('total_agd_right', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
198
- ('total_agd_both', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
199
- ('number_of_planes', models.IntegerField(blank=True, null=True)),
200
- ],
201
- ),
202
- migrations.CreateModel(
203
- name='HighDoseMetricAlertSettings',
204
- fields=[
205
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
206
- ('alert_total_dap_rf', models.IntegerField(blank=True, default=20000, null=True, verbose_name='Alert level for total DAP from fluoroscopy examination (cGy.cm<sup>2</sup>)')),
207
- ('alert_total_rp_dose_rf', models.FloatField(blank=True, default=2.0, null=True, verbose_name='Alert level for total dose at reference point from fluoroscopy examination (Gy)')),
208
- ('accum_dose_delta_weeks', models.IntegerField(blank=True, default=12, null=True, verbose_name='Number of previous weeks over which to sum DAP and RP dose for each patient')),
209
- ('changed_accum_dose_delta_weeks', models.BooleanField(default=True)),
210
- ('show_accum_dose_over_delta_weeks', models.BooleanField(default=True, verbose_name='Enable display of summed DAP and RP dose in e-mail alerts and on summary and detail pages?')),
211
- ('calc_accum_dose_over_delta_weeks_on_import', models.BooleanField(default=True, verbose_name='Calculate summed DAP and RP dose for incoming fluoroscopy studies?')),
212
- ('send_high_dose_metric_alert_emails', models.BooleanField(default=False, verbose_name='Send notification e-mails when alert levels are exceeded?')),
213
- ],
214
- options={
215
- 'abstract': False,
216
- },
217
- ),
218
- migrations.CreateModel(
219
- name='HomePageAdminSettings',
220
- fields=[
221
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
222
- ('enable_workload_stats', models.BooleanField(default=False, verbose_name='Enable calculation and display of workload stats on home page?')),
223
- ],
224
- options={
225
- 'abstract': False,
226
- },
227
- ),
228
- migrations.CreateModel(
229
- name='IrradEventXRayData',
230
- fields=[
231
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
232
- ('irradiation_event_uid', models.TextField(blank=True, null=True)),
233
- ('irradiation_event_label', models.TextField(blank=True, null=True)),
234
- ('date_time_started', models.DateTimeField(blank=True, null=True)),
235
- ('acquisition_protocol', models.TextField(blank=True, null=True)),
236
- ('projection_eponymous_name', models.CharField(blank=True, max_length=16, null=True)),
237
- ('patient_table_relationship', models.CharField(blank=True, max_length=16, null=True)),
238
- ('patient_orientation', models.CharField(blank=True, max_length=16, null=True)),
239
- ('patient_orientation_modifier', models.CharField(blank=True, max_length=16, null=True)),
240
- ('dose_area_product', models.DecimalField(blank=True, decimal_places=10, max_digits=16, null=True)),
241
- ('half_value_layer', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
242
- ('patient_equivalent_thickness', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
243
- ('entrance_exposure_at_rp', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
244
- ('reference_point_definition_text', models.TextField(blank=True, null=True)),
245
- ('breast_composition', models.CharField(blank=True, max_length=16, null=True)),
246
- ('percent_fibroglandular_tissue', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
247
- ('comment', models.TextField(blank=True, null=True)),
248
- ('acquisition_plane', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_plane', to='remapp.ContextID')),
249
- ('anatomical_structure', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_anatomy', to='remapp.ContextID')),
250
- ('breast_composition_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_breastcomposition', to='remapp.ContextID')),
251
- ('image_view', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_view', to='remapp.ContextID')),
252
- ('irradiation_event_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_eventtype', to='remapp.ContextID')),
253
- ('label_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_labeltype', to='remapp.ContextID')),
254
- ('laterality', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_laterality', to='remapp.ContextID')),
255
- ('patient_orientation_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_ptorientation', to='remapp.ContextID')),
256
- ('patient_orientation_modifier_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_ptorientationmod', to='remapp.ContextID')),
257
- ('patient_table_relationship_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_pttablerel', to='remapp.ContextID')),
258
- ('projection_eponymous_name_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_pojectioneponymous', to='remapp.ContextID')),
259
- ],
260
- ),
261
- migrations.CreateModel(
262
- name='IrradEventXRaySourceData',
263
- fields=[
264
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
265
- ('dose_rp', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
266
- ('reference_point_definition', models.TextField(blank=True, null=True)),
267
- ('average_glandular_dose', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
268
- ('pulse_rate', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
269
- ('number_of_pulses', models.DecimalField(blank=True, decimal_places=2, max_digits=16, null=True)),
270
- ('derivation', models.CharField(blank=True, max_length=16, null=True)),
271
- ('irradiation_duration', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
272
- ('average_xray_tube_current', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
273
- ('exposure_time', models.DecimalField(blank=True, decimal_places=2, max_digits=16, null=True)),
274
- ('focal_spot_size', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
275
- ('collimated_field_area', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
276
- ('collimated_field_height', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
277
- ('collimated_field_width', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
278
- ('ii_field_size', models.IntegerField(blank=True, null=True)),
279
- ('exposure_control_mode', models.CharField(blank=True, max_length=16, null=True)),
280
- ('grid_absorbing_material', models.TextField(blank=True, null=True)),
281
- ('grid_spacing_material', models.TextField(blank=True, null=True)),
282
- ('grid_thickness', models.DecimalField(blank=True, decimal_places=6, max_digits=16, null=True)),
283
- ('grid_pitch', models.DecimalField(blank=True, decimal_places=6, max_digits=16, null=True)),
284
- ('grid_aspect_ratio', models.TextField(blank=True, null=True)),
285
- ('grid_period', models.DecimalField(blank=True, decimal_places=6, max_digits=16, null=True)),
286
- ('grid_focal_distance', models.DecimalField(blank=True, decimal_places=6, max_digits=16, null=True)),
287
- ('anode_target_material', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003b_anodetarget', to='remapp.ContextID')),
288
- ('derivation_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003b_derivation', to='remapp.ContextID')),
289
- ('fluoro_mode', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003b_fluoromode', to='remapp.ContextID')),
290
- ('irradiation_event_xray_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRayData')),
291
- ('reference_point_definition_code', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003b_rpdefinition', to='remapp.ContextID')),
292
- ],
293
- ),
294
- migrations.CreateModel(
295
- name='MergeOnDeviceObserverUIDSettings',
296
- fields=[
297
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
298
- ('match_on_device_observer_uid', models.BooleanField(default=False, verbose_name='Set Display Name and Modality type if Device Observer UID is matching.')),
299
- ],
300
- options={
301
- 'abstract': False,
302
- },
303
- ),
304
- migrations.CreateModel(
305
- name='NotPatientIndicatorsID',
306
- fields=[
307
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
308
- ('not_patient_id', models.CharField(max_length=64)),
309
- ],
310
- options={
311
- 'verbose_name': 'Not-patient indicator ID',
312
- 'verbose_name_plural': 'Not-patient indicator IDs',
313
- },
314
- ),
315
- migrations.CreateModel(
316
- name='NotPatientIndicatorsName',
317
- fields=[
318
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
319
- ('not_patient_name', models.CharField(max_length=64)),
320
- ],
321
- options={
322
- 'verbose_name': 'Not-patient indicator name',
323
- 'verbose_name_plural': 'Not-patient indicator names',
324
- },
325
- ),
326
- migrations.CreateModel(
327
- name='PatientIDSettings',
328
- fields=[
329
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
330
- ('name_stored', models.BooleanField(default=False)),
331
- ('name_hashed', models.BooleanField(default=True)),
332
- ('id_stored', models.BooleanField(default=False)),
333
- ('id_hashed', models.BooleanField(default=True)),
334
- ('accession_hashed', models.BooleanField(default=False)),
335
- ('dob_stored', models.BooleanField(default=False)),
336
- ],
337
- options={
338
- 'verbose_name': 'Patient ID Settings',
339
- },
340
- ),
341
- migrations.CreateModel(
342
- name='SizeSpecificDoseEstimation',
343
- fields=[
344
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
345
- ('measured_lateral_dimension', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
346
- ('measured_ap_dimension', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
347
- ('derived_effective_diameter', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
348
- ('water_equivalent_diameter', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
349
- ('wed_estimate_location_z', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
350
- ('ct_irradiation_event_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtIrradiationEventData')),
351
- ('measurement_method', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ssde_method', to='remapp.ContextID')),
352
- ('water_equivalent_diameter_method', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ssde_wed_method', to='remapp.ContextID')),
353
- ],
354
- ),
355
- migrations.CreateModel(
356
- name='SizeUpload',
357
- fields=[
358
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
359
- ('sizefile', models.FileField(upload_to='sizeupload')),
360
- ('height_field', models.TextField(blank=True, null=True)),
361
- ('weight_field', models.TextField(blank=True, null=True)),
362
- ('id_field', models.TextField(blank=True, null=True)),
363
- ('id_type', models.TextField(blank=True, null=True)),
364
- ('task_id', models.TextField(blank=True, null=True)),
365
- ('status', models.TextField(blank=True, null=True)),
366
- ('progress', models.TextField(blank=True, null=True)),
367
- ('num_records', models.IntegerField(blank=True, null=True)),
368
- ('logfile', models.FileField(null=True, upload_to='sizelogs/%Y/%m/%d')),
369
- ('import_date', models.DateTimeField(blank=True, null=True)),
370
- ('processtime', models.FloatField(blank=True, null=True)),
371
- ],
372
- ),
373
- migrations.CreateModel(
374
- name='SkinDoseMapCalcSettings',
375
- fields=[
376
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
377
- ('enable_skin_dose_maps', models.BooleanField(default=False, verbose_name='Enable skin dose maps?')),
378
- ('calc_on_import', models.BooleanField(default=True, verbose_name='Calculate skin dose map on import?')),
379
- ],
380
- options={
381
- 'abstract': False,
382
- },
383
- ),
384
- migrations.CreateModel(
385
- name='SummaryFields',
386
- fields=[
387
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
388
- ('modality_type', models.CharField(max_length=2, null=True)),
389
- ('complete', models.BooleanField(default=False)),
390
- ('status_message', models.TextField(blank=True, null=True)),
391
- ('total_studies', models.IntegerField(default=0)),
392
- ('current_study', models.IntegerField(default=0)),
393
- ],
394
- ),
395
- migrations.CreateModel(
396
- name='UpgradeStatus',
397
- fields=[
398
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
399
- ('from_0_9_1_summary_fields', models.BooleanField(default=False)),
400
- ],
401
- options={
402
- 'abstract': False,
403
- },
404
- ),
405
- migrations.CreateModel(
406
- name='XrayTubeCurrent',
407
- fields=[
408
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
409
- ('xray_tube_current', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
410
- ('irradiation_event_xray_source_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRaySourceData')),
411
- ],
412
- ),
413
- migrations.CreateModel(
414
- name='XrayGrid',
415
- fields=[
416
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
417
- ('irradiation_event_xray_source_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRaySourceData')),
418
- ('xray_grid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
419
- ],
420
- ),
421
- migrations.CreateModel(
422
- name='XrayFilters',
423
- fields=[
424
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
425
- ('xray_filter_thickness_minimum', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
426
- ('xray_filter_thickness_maximum', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
427
- ('irradiation_event_xray_source_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRaySourceData')),
428
- ('xray_filter_material', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='xrayfilters_material', to='remapp.ContextID')),
429
- ('xray_filter_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='xrayfilters_type', to='remapp.ContextID')),
430
- ],
431
- ),
432
- migrations.CreateModel(
433
- name='WEDSeriesOrInstances',
434
- fields=[
435
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
436
- ('wed_series_or_instance', models.TextField(blank=True, null=True)),
437
- ('size_specific_dose_estimation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.SizeSpecificDoseEstimation')),
438
- ],
439
- ),
440
- migrations.CreateModel(
441
- name='UserProfile',
442
- fields=[
443
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
444
- ('itemsPerPage', models.IntegerField(choices=[(10, '10'), (25, '25'), (50, '50'), (100, '100'), (200, '200'), (400, '400')], default=25, null=True)),
445
- ('median_available', models.BooleanField(default=False, editable=False)),
446
- ('plotAverageChoice', models.CharField(choices=[('mean', 'mean'), ('median', 'median'), ('both', 'both')], default='mean', max_length=6)),
447
- ('plotInitialSortingDirection', models.IntegerField(choices=[(1, 'Ascending'), (-1, 'Descending')], default=-1, null=True)),
448
- ('plotCharts', models.BooleanField(default=False)),
449
- ('plotDXAcquisitionMeanDAP', models.BooleanField(default=True)),
450
- ('plotDXAcquisitionFreq', models.BooleanField(default=False)),
451
- ('plotDXStudyMeanDAP', models.BooleanField(default=True)),
452
- ('plotDXStudyFreq', models.BooleanField(default=True)),
453
- ('plotDXRequestMeanDAP', models.BooleanField(default=True)),
454
- ('plotDXRequestFreq', models.BooleanField(default=True)),
455
- ('plotDXAcquisitionMeankVp', models.BooleanField(default=False)),
456
- ('plotDXAcquisitionMeanmAs', models.BooleanField(default=False)),
457
- ('plotDXStudyPerDayAndHour', models.BooleanField(default=False)),
458
- ('plotDXAcquisitionMeankVpOverTime', models.BooleanField(default=False)),
459
- ('plotDXAcquisitionMeanmAsOverTime', models.BooleanField(default=False)),
460
- ('plotDXAcquisitionMeanDAPOverTime', models.BooleanField(default=False)),
461
- ('plotDXAcquisitionMeanDAPOverTimePeriod', models.CharField(choices=[('days', 'Days'), ('weeks', 'Weeks'), ('months', 'Months'), ('years', 'Years')], default='months', max_length=6)),
462
- ('plotDXInitialSortingChoice', models.CharField(choices=[('dap', 'DAP'), ('freq', 'Frequency'), ('name', 'Name')], default='freq', max_length=4)),
463
- ('plotCTAcquisitionMeanDLP', models.BooleanField(default=True)),
464
- ('plotCTAcquisitionMeanCTDI', models.BooleanField(default=True)),
465
- ('plotCTAcquisitionFreq', models.BooleanField(default=False)),
466
- ('plotCTStudyMeanDLP', models.BooleanField(default=True)),
467
- ('plotCTStudyMeanCTDI', models.BooleanField(default=True)),
468
- ('plotCTStudyFreq', models.BooleanField(default=False)),
469
- ('plotCTStudyNumEvents', models.BooleanField(default=False)),
470
- ('plotCTRequestMeanDLP', models.BooleanField(default=False)),
471
- ('plotCTRequestFreq', models.BooleanField(default=False)),
472
- ('plotCTRequestNumEvents', models.BooleanField(default=False)),
473
- ('plotCTStudyPerDayAndHour', models.BooleanField(default=False)),
474
- ('plotCTStudyMeanDLPOverTime', models.BooleanField(default=False)),
475
- ('plotCTStudyMeanDLPOverTimePeriod', models.CharField(choices=[('days', 'Days'), ('weeks', 'Weeks'), ('months', 'Months'), ('years', 'Years')], default='months', max_length=6)),
476
- ('plotCTInitialSortingChoice', models.CharField(choices=[('dlp', 'DLP'), ('ctdi', 'CTDI'), ('freq', 'Frequency'), ('name', 'Name')], default='freq', max_length=4)),
477
- ('plotRFStudyPerDayAndHour', models.BooleanField(default=False)),
478
- ('plotRFStudyFreq', models.BooleanField(default=False)),
479
- ('plotRFStudyDAP', models.BooleanField(default=True)),
480
- ('plotRFRequestDAP', models.BooleanField(default=True)),
481
- ('plotRFRequestFreq', models.BooleanField(default=True)),
482
- ('plotRFInitialSortingChoice', models.CharField(choices=[('dap', 'DAP'), ('freq', 'Frequency'), ('name', 'Name')], default='freq', max_length=4)),
483
- ('plotMGStudyPerDayAndHour', models.BooleanField(default=False)),
484
- ('plotMGAGDvsThickness', models.BooleanField(default=False)),
485
- ('plotMGkVpvsThickness', models.BooleanField(default=False)),
486
- ('plotMGmAsvsThickness', models.BooleanField(default=False)),
487
- ('displayCT', models.BooleanField(default=True)),
488
- ('displayRF', models.BooleanField(default=True)),
489
- ('displayMG', models.BooleanField(default=True)),
490
- ('displayDX', models.BooleanField(default=True)),
491
- ('plotSeriesPerSystem', models.BooleanField(default=False)),
492
- ('plotHistogramBins', models.PositiveSmallIntegerField(default=20)),
493
- ('plotHistograms', models.BooleanField(default=False)),
494
- ('plotCaseInsensitiveCategories', models.BooleanField(default=False)),
495
- ('summaryWorkloadDaysA', models.IntegerField(blank=True, default=7, null=True, verbose_name='Number of days over which to sum studies A')),
496
- ('summaryWorkloadDaysB', models.IntegerField(blank=True, default=28, null=True, verbose_name='Number of days over which to sum studies B')),
497
- ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
498
- ],
499
- ),
500
- migrations.CreateModel(
501
- name='UniqueEquipmentNames',
502
- fields=[
503
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
504
- ('manufacturer', models.TextField(blank=True, null=True)),
505
- ('manufacturer_hash', models.CharField(blank=True, max_length=64, null=True)),
506
- ('institution_name', models.TextField(blank=True, null=True)),
507
- ('institution_name_hash', models.CharField(blank=True, max_length=64, null=True)),
508
- ('station_name', models.CharField(blank=True, max_length=32, null=True)),
509
- ('station_name_hash', models.CharField(blank=True, max_length=64, null=True)),
510
- ('institutional_department_name', models.TextField(blank=True, null=True)),
511
- ('institutional_department_name_hash', models.CharField(blank=True, max_length=64, null=True)),
512
- ('manufacturer_model_name', models.TextField(blank=True, null=True)),
513
- ('manufacturer_model_name_hash', models.CharField(blank=True, max_length=64, null=True)),
514
- ('device_serial_number', models.TextField(blank=True, null=True)),
515
- ('device_serial_number_hash', models.CharField(blank=True, max_length=64, null=True)),
516
- ('software_versions', models.TextField(blank=True, null=True)),
517
- ('software_versions_hash', models.CharField(blank=True, max_length=64, null=True)),
518
- ('gantry_id', models.TextField(blank=True, null=True)),
519
- ('gantry_id_hash', models.CharField(blank=True, max_length=64, null=True)),
520
- ('display_name', models.TextField(blank=True, null=True)),
521
- ('user_defined_modality', models.CharField(blank=True, max_length=16, null=True)),
522
- ('hash_generated', models.BooleanField(default=False)),
523
- ('device_observer_uid', models.TextField(blank=True, null=True)),
524
- ('device_observer_uid_hash', models.CharField(blank=True, max_length=64, null=True)),
525
- ],
526
- options={
527
- 'unique_together': {('manufacturer_hash', 'institution_name_hash', 'station_name_hash', 'institutional_department_name_hash', 'manufacturer_model_name_hash', 'device_serial_number_hash', 'software_versions_hash', 'gantry_id_hash', 'device_observer_uid_hash')},
528
- },
529
- ),
530
- migrations.CreateModel(
531
- name='SourceOfCTDoseInformation',
532
- fields=[
533
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
534
- ('ct_radiation_dose', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtRadiationDose')),
535
- ('source_of_dose_information', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
536
- ],
537
- ),
538
- migrations.CreateModel(
539
- name='ScanningLength',
540
- fields=[
541
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
542
- ('scanning_length', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
543
- ('length_of_reconstructable_volume', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
544
- ('exposed_range', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
545
- ('top_z_location_of_reconstructable_volume', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
546
- ('bottom_z_location_of_reconstructable_volume', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
547
- ('top_z_location_of_scanning_length', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
548
- ('bottom_z_location_of_scanning_length', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
549
- ('frame_of_reference_uid', models.TextField(blank=True, null=True)),
550
- ('ct_irradiation_event_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtIrradiationEventData')),
551
- ],
552
- ),
553
- migrations.CreateModel(
554
- name='PulseWidth',
555
- fields=[
556
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
557
- ('pulse_width', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
558
- ('irradiation_event_xray_source_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRaySourceData')),
559
- ],
560
- ),
561
- migrations.CreateModel(
562
- name='ProjectionXRayRadiationDose',
563
- fields=[
564
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
565
- ('comment', models.TextField(blank=True, null=True)),
566
- ('acquisition_device_type_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_type', to='remapp.ContextID')),
567
- ('general_study_module_attributes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.GeneralStudyModuleAttr')),
568
- ('has_intent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_intent', to='remapp.ContextID')),
569
- ('procedure_reported', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_procedure', to='remapp.ContextID')),
570
- ('scope_of_accumulation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_scope', to='remapp.ContextID')),
571
- ('source_of_dose_information', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_infosource', to='remapp.ContextID')),
572
- ('xray_detector_data_available', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_detector', to='remapp.ContextID')),
573
- ('xray_mechanical_data_available', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_mech', to='remapp.ContextID')),
574
- ('xray_source_data_available', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_source', to='remapp.ContextID')),
575
- ],
576
- ),
577
- migrations.CreateModel(
578
- name='PKsForSummedRFDoseStudiesInDeltaWeeks',
579
- fields=[
580
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
581
- ('study_pk_in_delta_weeks', models.IntegerField(blank=True, null=True)),
582
- ('general_study_module_attributes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.GeneralStudyModuleAttr')),
583
- ],
584
- ),
585
- migrations.CreateModel(
586
- name='PersonParticipant',
587
- fields=[
588
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
589
- ('person_name', models.TextField(blank=True, null=True)),
590
- ('person_role_in_procedure', models.CharField(blank=True, max_length=16)),
591
- ('person_id', models.TextField(blank=True, null=True)),
592
- ('person_id_issuer', models.TextField(blank=True, null=True)),
593
- ('organization_name', models.TextField(blank=True, null=True)),
594
- ('person_role_in_organization', models.TextField(blank=True, null=True)),
595
- ('ct_accumulated_dose_data', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.CtAccumulatedDoseData')),
596
- ('ct_dose_check_details_alert', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1020_alert', to='remapp.CtDoseCheckDetails')),
597
- ('ct_dose_check_details_notification', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1020_notification', to='remapp.CtDoseCheckDetails')),
598
- ('ct_irradiation_event_data', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.CtIrradiationEventData')),
599
- ('ct_radiation_dose', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.CtRadiationDose')),
600
- ('irradiation_event_xray_data', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRayData')),
601
- ('person_role_in_organization_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1020_roleorg', to='remapp.ContextID')),
602
- ('person_role_in_procedure_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1020_roleproc', to='remapp.ContextID')),
603
- ('projection_xray_radiation_dose', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ProjectionXRayRadiationDose')),
604
- ],
605
- ),
606
- migrations.CreateModel(
607
- name='PatientStudyModuleAttr',
608
- fields=[
609
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
610
- ('admitting_diagnosis_description', models.TextField(blank=True, null=True)),
611
- ('admitting_diagnosis_code_sequence', models.TextField(blank=True, null=True)),
612
- ('patient_age', models.CharField(blank=True, max_length=4, null=True)),
613
- ('patient_age_decimal', models.DecimalField(blank=True, decimal_places=3, max_digits=7, null=True)),
614
- ('patient_size', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
615
- ('patient_weight', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
616
- ('general_study_module_attributes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.GeneralStudyModuleAttr')),
617
- ],
618
- ),
619
- migrations.CreateModel(
620
- name='PatientModuleAttr',
621
- fields=[
622
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
623
- ('patient_name', models.TextField(blank=True, null=True)),
624
- ('name_hashed', models.BooleanField(default=False)),
625
- ('patient_id', models.TextField(blank=True, null=True)),
626
- ('id_hashed', models.BooleanField(default=False)),
627
- ('patient_birth_date', models.DateField(blank=True, null=True)),
628
- ('patient_sex', models.CharField(blank=True, max_length=2, null=True)),
629
- ('other_patient_ids', models.TextField(blank=True, null=True)),
630
- ('not_patient_indicator', models.TextField(blank=True, null=True)),
631
- ('general_study_module_attributes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.GeneralStudyModuleAttr')),
632
- ],
633
- ),
634
- migrations.CreateModel(
635
- name='ObserverContext',
636
- fields=[
637
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
638
- ('person_observer_name', models.TextField(blank=True, null=True)),
639
- ('person_observer_organization_name', models.TextField(blank=True, null=True)),
640
- ('device_observer_uid', models.TextField(blank=True, null=True)),
641
- ('device_observer_name', models.TextField(blank=True, null=True)),
642
- ('device_observer_manufacturer', models.TextField(blank=True, null=True)),
643
- ('device_observer_model_name', models.TextField(blank=True, null=True)),
644
- ('device_observer_serial_number', models.TextField(blank=True, null=True)),
645
- ('device_observer_physical_location_during_observation', models.TextField(blank=True, null=True)),
646
- ('ct_radiation_dose', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.CtRadiationDose')),
647
- ('device_role_in_procedure', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1002_role', to='remapp.ContextID')),
648
- ('observer_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1002_observertype', to='remapp.ContextID')),
649
- ('person_observer_role_in_organization', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1002_ptroleorg', to='remapp.ContextID')),
650
- ('person_observer_role_in_procedure', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1002_ptroleproc', to='remapp.ContextID')),
651
- ('projection_xray_radiation_dose', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ProjectionXRayRadiationDose')),
652
- ],
653
- ),
654
- migrations.CreateModel(
655
- name='ObjectUIDsProcessed',
656
- fields=[
657
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
658
- ('sop_instance_uid', models.TextField(blank=True, null=True)),
659
- ('general_study_module_attributes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.GeneralStudyModuleAttr')),
660
- ],
661
- ),
662
- migrations.CreateModel(
663
- name='Kvp',
664
- fields=[
665
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
666
- ('kvp', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
667
- ('irradiation_event_xray_source_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRaySourceData')),
668
- ],
669
- ),
670
- migrations.CreateModel(
671
- name='IrradEventXRayMechanicalData',
672
- fields=[
673
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
674
- ('positioner_primary_angle', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
675
- ('positioner_secondary_angle', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
676
- ('positioner_primary_end_angle', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
677
- ('positioner_secondary_end_angle', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
678
- ('column_angulation', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
679
- ('table_head_tilt_angle', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
680
- ('table_horizontal_rotation_angle', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
681
- ('table_cradle_tilt_angle', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
682
- ('compression_thickness', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
683
- ('compression_force', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
684
- ('magnification_factor', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
685
- ('crdr_mechanical_configuration', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
686
- ('irradiation_event_xray_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRayData')),
687
- ],
688
- ),
689
- migrations.CreateModel(
690
- name='IrradEventXRayDetectorData',
691
- fields=[
692
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
693
- ('exposure_index', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
694
- ('target_exposure_index', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
695
- ('deviation_index', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
696
- ('relative_xray_exposure', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
697
- ('relative_exposure_unit', models.CharField(blank=True, max_length=16, null=True)),
698
- ('sensitivity', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
699
- ('irradiation_event_xray_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRayData')),
700
- ],
701
- ),
702
- migrations.AddField(
703
- model_name='irradeventxraydata',
704
- name='projection_xray_radiation_dose',
705
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.ProjectionXRayRadiationDose'),
706
- ),
707
- migrations.AddField(
708
- model_name='irradeventxraydata',
709
- name='reference_point_definition',
710
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_rpdefinition', to='remapp.ContextID'),
711
- ),
712
- migrations.AddField(
713
- model_name='irradeventxraydata',
714
- name='target_region',
715
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_region', to='remapp.ContextID'),
716
- ),
717
- migrations.CreateModel(
718
- name='ImageViewModifier',
719
- fields=[
720
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
721
- ('image_view_modifier', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
722
- ('irradiation_event_xray_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRayData')),
723
- ],
724
- ),
725
- migrations.CreateModel(
726
- name='HighDoseMetricAlertRecipients',
727
- fields=[
728
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
729
- ('receive_high_dose_metric_alerts', models.BooleanField(default=False, verbose_name='Receive high dose e-mail alerts?')),
730
- ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
731
- ],
732
- ),
733
- migrations.CreateModel(
734
- name='GeneralEquipmentModuleAttr',
735
- fields=[
736
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
737
- ('manufacturer', models.TextField(blank=True, null=True)),
738
- ('institution_name', models.TextField(blank=True, null=True)),
739
- ('institution_address', models.TextField(blank=True, null=True)),
740
- ('station_name', models.CharField(blank=True, max_length=32, null=True)),
741
- ('institutional_department_name', models.TextField(blank=True, null=True)),
742
- ('manufacturer_model_name', models.TextField(blank=True, null=True)),
743
- ('device_serial_number', models.TextField(blank=True, null=True)),
744
- ('software_versions', models.TextField(blank=True, null=True)),
745
- ('gantry_id', models.TextField(blank=True, null=True)),
746
- ('spatial_resolution', models.DecimalField(blank=True, decimal_places=4, max_digits=8, null=True)),
747
- ('date_of_last_calibration', models.DateTimeField(blank=True, null=True)),
748
- ('time_of_last_calibration', models.DateTimeField(blank=True, null=True)),
749
- ('general_study_module_attributes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.GeneralStudyModuleAttr')),
750
- ('unique_equipment_name', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.UniqueEquipmentNames')),
751
- ],
752
- ),
753
- migrations.CreateModel(
754
- name='Exposure',
755
- fields=[
756
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
757
- ('exposure', models.DecimalField(blank=True, decimal_places=2, max_digits=16, null=True)),
758
- ('irradiation_event_xray_source_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRaySourceData')),
759
- ],
760
- ),
761
- migrations.CreateModel(
762
- name='Exports',
763
- fields=[
764
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
765
- ('task_id', models.TextField()),
766
- ('filename', models.FileField(null=True, upload_to='exports/%Y/%m/%d')),
767
- ('status', models.TextField(blank=True, null=True)),
768
- ('progress', models.TextField(blank=True, null=True)),
769
- ('modality', models.CharField(blank=True, max_length=16, null=True)),
770
- ('num_records', models.IntegerField(blank=True, null=True)),
771
- ('export_type', models.TextField(blank=True, null=True)),
772
- ('export_date', models.DateTimeField(blank=True, null=True)),
773
- ('processtime', models.DecimalField(blank=True, decimal_places=10, max_digits=30, null=True)),
774
- ('includes_pid', models.BooleanField(default=False)),
775
- ('export_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
776
- ],
777
- ),
778
- migrations.CreateModel(
779
- name='DoseRelatedDistanceMeasurements',
780
- fields=[
781
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
782
- ('distance_source_to_isocenter', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
783
- ('distance_source_to_reference_point', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
784
- ('distance_source_to_detector', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
785
- ('table_longitudinal_position', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
786
- ('table_lateral_position', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
787
- ('table_height_position', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
788
- ('distance_source_to_table_plane', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
789
- ('table_longitudinal_end_position', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
790
- ('table_lateral_end_position', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
791
- ('table_height_end_position', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
792
- ('distance_source_to_entrance_surface', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
793
- ('radiological_thickness', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
794
- ('irradiation_event_xray_mechanical_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRayMechanicalData')),
795
- ],
796
- ),
797
- migrations.CreateModel(
798
- name='DicomQuery',
799
- fields=[
800
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
801
- ('complete', models.BooleanField(default=False)),
802
- ('query_id', models.CharField(max_length=64)),
803
- ('failed', models.BooleanField(default=False)),
804
- ('message', models.TextField(blank=True, null=True)),
805
- ('stage', models.TextField(blank=True, null=True)),
806
- ('move_complete', models.BooleanField(default=False)),
807
- ('qr_scp_fk', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.DicomRemoteQR')),
808
- ('store_scp_fk', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.DicomStoreSCP')),
809
- ],
810
- ),
811
- migrations.CreateModel(
812
- name='DicomQRRspStudy',
813
- fields=[
814
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
815
- ('query_id', models.CharField(max_length=64)),
816
- ('study_instance_uid', models.TextField(blank=True, null=True)),
817
- ('modality', models.CharField(blank=True, max_length=16, null=True)),
818
- ('modalities_in_study', models.CharField(blank=True, max_length=100, null=True)),
819
- ('study_description', models.TextField(blank=True, null=True)),
820
- ('number_of_study_related_series', models.IntegerField(blank=True, null=True)),
821
- ('sop_classes_in_study', models.TextField(blank=True, null=True)),
822
- ('station_name', models.CharField(blank=True, max_length=16, null=True)),
823
- ('dicom_query', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.DicomQuery')),
824
- ],
825
- ),
826
- migrations.CreateModel(
827
- name='DicomQRRspSeries',
828
- fields=[
829
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
830
- ('query_id', models.CharField(max_length=64)),
831
- ('series_instance_uid', models.TextField(blank=True, null=True)),
832
- ('series_number', models.IntegerField(blank=True, null=True)),
833
- ('series_time', models.TimeField(blank=True, null=True)),
834
- ('modality', models.CharField(blank=True, max_length=16, null=True)),
835
- ('series_description', models.TextField(blank=True, null=True)),
836
- ('number_of_series_related_instances', models.IntegerField(blank=True, null=True)),
837
- ('station_name', models.CharField(blank=True, max_length=16, null=True)),
838
- ('sop_class_in_series', models.TextField(blank=True, null=True)),
839
- ('image_level_move', models.BooleanField(default=False)),
840
- ('dicom_qr_rsp_study', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.DicomQRRspStudy')),
841
- ],
842
- ),
843
- migrations.CreateModel(
844
- name='DicomQRRspImage',
845
- fields=[
846
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
847
- ('query_id', models.CharField(max_length=64)),
848
- ('sop_instance_uid', models.TextField(blank=True, null=True)),
849
- ('instance_number', models.IntegerField(blank=True, null=True)),
850
- ('sop_class_uid', models.TextField(blank=True, null=True)),
851
- ('dicom_qr_rsp_series', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.DicomQRRspSeries')),
852
- ],
853
- ),
854
- migrations.CreateModel(
855
- name='DeviceParticipant',
856
- fields=[
857
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
858
- ('device_name', models.TextField(blank=True, null=True)),
859
- ('device_manufacturer', models.TextField(blank=True, null=True)),
860
- ('device_model_name', models.TextField(blank=True, null=True)),
861
- ('device_serial_number', models.TextField(blank=True, null=True)),
862
- ('device_observer_uid', models.TextField(blank=True, null=True)),
863
- ('accumulated_xray_dose', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.AccumXRayDose')),
864
- ('ct_accumulated_dose_data', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.CtAccumulatedDoseData')),
865
- ('ct_irradiation_event_data', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.CtIrradiationEventData')),
866
- ('device_role_in_procedure', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
867
- ('irradiation_event_xray_detector_data', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRayDetectorData')),
868
- ('irradiation_event_xray_source_data', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRaySourceData')),
869
- ],
870
- ),
871
- migrations.CreateModel(
872
- name='CtXRaySourceParameters',
873
- fields=[
874
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
875
- ('identification_of_the_xray_source', models.TextField(blank=True, null=True)),
876
- ('kvp', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
877
- ('maximum_xray_tube_current', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
878
- ('xray_tube_current', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
879
- ('exposure_time_per_rotation', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
880
- ('xray_filter_aluminum_equivalent', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
881
- ('ct_irradiation_event_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtIrradiationEventData')),
882
- ],
883
- ),
884
- migrations.CreateModel(
885
- name='CtReconstructionAlgorithm',
886
- fields=[
887
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
888
- ('ct_irradiation_event_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtIrradiationEventData')),
889
- ('reconstruction_algorithm', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
890
- ],
891
- ),
892
- migrations.AddField(
893
- model_name='ctradiationdose',
894
- name='general_study_module_attributes',
895
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.GeneralStudyModuleAttr'),
896
- ),
897
- migrations.AddField(
898
- model_name='ctradiationdose',
899
- name='has_intent',
900
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10011_intent', to='remapp.ContextID'),
901
- ),
902
- migrations.AddField(
903
- model_name='ctradiationdose',
904
- name='procedure_reported',
905
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10011_procedure', to='remapp.ContextID'),
906
- ),
907
- migrations.AddField(
908
- model_name='ctradiationdose',
909
- name='scope_of_accumulation',
910
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10011_scope', to='remapp.ContextID'),
911
- ),
912
- migrations.AddField(
913
- model_name='ctradiationdose',
914
- name='source_of_dose_information',
915
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10011_source', to='remapp.ContextID'),
916
- ),
917
- migrations.AddField(
918
- model_name='ctradiationdose',
919
- name='uid_type',
920
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1011_uid', to='remapp.ContextID'),
921
- ),
922
- migrations.AddField(
923
- model_name='ctirradiationeventdata',
924
- name='ct_radiation_dose',
925
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtRadiationDose'),
926
- ),
927
- migrations.AddField(
928
- model_name='ctirradiationeventdata',
929
- name='ctdiw_phantom_type',
930
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10013_phantom', to='remapp.ContextID'),
931
- ),
932
- migrations.AddField(
933
- model_name='ctirradiationeventdata',
934
- name='label_type',
935
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10013_labeltype', to='remapp.ContextID'),
936
- ),
937
- migrations.AddField(
938
- model_name='ctirradiationeventdata',
939
- name='measurement_method',
940
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10013_method', to='remapp.ContextID'),
941
- ),
942
- migrations.AddField(
943
- model_name='ctirradiationeventdata',
944
- name='procedure_context',
945
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10013_context', to='remapp.ContextID'),
946
- ),
947
- migrations.AddField(
948
- model_name='ctirradiationeventdata',
949
- name='target_region',
950
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10013_region', to='remapp.ContextID'),
951
- ),
952
- migrations.AddField(
953
- model_name='ctdosecheckdetails',
954
- name='ct_irradiation_event_data',
955
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtIrradiationEventData'),
956
- ),
957
- migrations.AddField(
958
- model_name='ctaccumulateddosedata',
959
- name='ct_radiation_dose',
960
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtRadiationDose'),
961
- ),
962
- migrations.AddField(
963
- model_name='ctaccumulateddosedata',
964
- name='measurement_method',
965
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10012_method', to='remapp.ContextID'),
966
- ),
967
- migrations.AddField(
968
- model_name='ctaccumulateddosedata',
969
- name='reference_authority_code',
970
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10012_authority', to='remapp.ContextID'),
971
- ),
972
- migrations.CreateModel(
973
- name='Calibration',
974
- fields=[
975
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
976
- ('calibration_date', models.DateTimeField(blank=True, null=True)),
977
- ('calibration_factor', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
978
- ('calibration_uncertainty', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
979
- ('calibration_responsible_party', models.TextField(blank=True, null=True)),
980
- ('accumulated_xray_dose', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.AccumXRayDose')),
981
- ('dose_measurement_device', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
982
- ],
983
- ),
984
- migrations.AddField(
985
- model_name='accumxraydose',
986
- name='acquisition_plane',
987
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID'),
988
- ),
989
- migrations.AddField(
990
- model_name='accumxraydose',
991
- name='projection_xray_radiation_dose',
992
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.ProjectionXRayRadiationDose'),
993
- ),
994
- migrations.CreateModel(
995
- name='AccumProjXRayDose',
996
- fields=[
997
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
998
- ('fluoro_dose_area_product_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
999
- ('fluoro_dose_rp_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1000
- ('total_fluoro_time', models.DecimalField(blank=True, decimal_places=2, max_digits=7, null=True)),
1001
- ('acquisition_dose_area_product_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1002
- ('acquisition_dose_rp_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1003
- ('total_acquisition_time', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
1004
- ('dose_area_product_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1005
- ('dose_rp_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1006
- ('total_number_of_radiographic_frames', models.DecimalField(blank=True, decimal_places=0, max_digits=6, null=True)),
1007
- ('reference_point_definition', models.TextField(blank=True, null=True)),
1008
- ('accumulated_xray_dose', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.AccumXRayDose')),
1009
- ('reference_point_definition_code', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
1010
- ],
1011
- ),
1012
- migrations.CreateModel(
1013
- name='AccumMammographyXRayDose',
1014
- fields=[
1015
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1016
- ('accumulated_average_glandular_dose', models.DecimalField(blank=True, decimal_places=4, max_digits=8, null=True)),
1017
- ('accumulated_xray_dose', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.AccumXRayDose')),
1018
- ('laterality', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
1019
- ],
1020
- ),
1021
- migrations.CreateModel(
1022
- name='AccumIntegratedProjRadiogDose',
1023
- fields=[
1024
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1025
- ('dose_area_product_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1026
- ('dose_rp_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1027
- ('total_number_of_radiographic_frames', models.DecimalField(blank=True, decimal_places=0, max_digits=6, null=True)),
1028
- ('reference_point_definition', models.TextField(blank=True, null=True)),
1029
- ('dose_area_product_total_over_delta_weeks', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1030
- ('dose_rp_total_over_delta_weeks', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1031
- ('accumulated_xray_dose', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.AccumXRayDose')),
1032
- ('reference_point_definition_code', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
1033
- ],
1034
- ),
1035
- migrations.CreateModel(
1036
- name='AccumCassetteBsdProjRadiogDose',
1037
- fields=[
1038
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1039
- ('total_number_of_radiographic_frames', models.DecimalField(blank=True, decimal_places=0, max_digits=6, null=True)),
1040
- ('accumulated_xray_dose', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.AccumXRayDose')),
1041
- ('detector_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
1042
- ],
1043
- ),
1
+ # Generated by Django 2.2.6 on 2020-01-30 17:49
2
+
3
+ from django.conf import settings
4
+ from django.db import migrations, models
5
+ import django.db.models.deletion
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+
10
+ initial = True
11
+
12
+ dependencies = [
13
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
14
+ ]
15
+
16
+ operations = [
17
+ migrations.CreateModel(
18
+ name='AccumXRayDose',
19
+ fields=[
20
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
21
+ ],
22
+ ),
23
+ migrations.CreateModel(
24
+ name='AdminTaskQuestions',
25
+ fields=[
26
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
27
+ ('ask_revert_to_074_question', models.BooleanField(default=True)),
28
+ ],
29
+ options={
30
+ 'abstract': False,
31
+ },
32
+ ),
33
+ migrations.CreateModel(
34
+ name='ContextID',
35
+ fields=[
36
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
37
+ ('code_value', models.TextField()),
38
+ ('code_meaning', models.TextField(blank=True, null=True)),
39
+ ('cid_table', models.CharField(blank=True, max_length=16)),
40
+ ],
41
+ options={
42
+ 'ordering': ['code_value'],
43
+ },
44
+ ),
45
+ migrations.CreateModel(
46
+ name='CtAccumulatedDoseData',
47
+ fields=[
48
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
49
+ ('total_number_of_irradiation_events', models.DecimalField(blank=True, decimal_places=0, max_digits=16, null=True)),
50
+ ('ct_dose_length_product_total', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
51
+ ('ct_effective_dose_total', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
52
+ ('reference_authority_text', models.TextField(blank=True, null=True)),
53
+ ('patient_model', models.TextField(blank=True, null=True)),
54
+ ('effective_dose_phantom_type', models.TextField(blank=True, null=True)),
55
+ ('dosimeter_type', models.TextField(blank=True, null=True)),
56
+ ('comment', models.TextField(blank=True, null=True)),
57
+ ],
58
+ ),
59
+ migrations.CreateModel(
60
+ name='CtDoseCheckDetails',
61
+ fields=[
62
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
63
+ ('dlp_alert_value_configured', models.NullBooleanField()),
64
+ ('ctdivol_alert_value_configured', models.NullBooleanField()),
65
+ ('dlp_alert_value', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
66
+ ('ctdivol_alert_value', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
67
+ ('accumulated_dlp_forward_estimate', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
68
+ ('accumulated_ctdivol_forward_estimate', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
69
+ ('alert_reason_for_proceeding', models.TextField(blank=True, null=True)),
70
+ ('dlp_notification_value_configured', models.NullBooleanField()),
71
+ ('ctdivol_notification_value_configured', models.NullBooleanField()),
72
+ ('dlp_notification_value', models.DecimalField(blank=True, decimal_places=4, max_digits=8, null=True)),
73
+ ('ctdivol_notification_value', models.DecimalField(blank=True, decimal_places=4, max_digits=8, null=True)),
74
+ ('dlp_forward_estimate', models.DecimalField(blank=True, decimal_places=4, max_digits=8, null=True)),
75
+ ('ctdivol_forward_estimate', models.DecimalField(blank=True, decimal_places=4, max_digits=8, null=True)),
76
+ ('notification_reason_for_proceeding', models.TextField(blank=True, null=True)),
77
+ ],
78
+ ),
79
+ migrations.CreateModel(
80
+ name='CtIrradiationEventData',
81
+ fields=[
82
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
83
+ ('acquisition_protocol', models.TextField(blank=True, null=True)),
84
+ ('irradiation_event_uid', models.TextField(blank=True, null=True)),
85
+ ('irradiation_event_label', models.TextField(blank=True, null=True)),
86
+ ('exposure_time', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
87
+ ('nominal_single_collimation_width', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
88
+ ('nominal_total_collimation_width', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
89
+ ('pitch_factor', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
90
+ ('number_of_xray_sources', models.DecimalField(blank=True, decimal_places=0, max_digits=8, null=True)),
91
+ ('mean_ctdivol', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
92
+ ('ctdifreeair_calculation_factor', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
93
+ ('mean_ctdifreeair', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
94
+ ('dlp', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
95
+ ('effective_dose', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
96
+ ('effective_dose_conversion_factor', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
97
+ ('xray_modulation_type', models.TextField(blank=True, null=True)),
98
+ ('comment', models.TextField(blank=True, null=True)),
99
+ ('date_time_started', models.DateTimeField(blank=True, null=True)),
100
+ ('series_description', models.TextField(blank=True, null=True)),
101
+ ('ct_acquisition_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10013_type', to='remapp.ContextID')),
102
+ ],
103
+ ),
104
+ migrations.CreateModel(
105
+ name='CtRadiationDose',
106
+ fields=[
107
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
108
+ ('start_of_xray_irradiation', models.DateTimeField(blank=True, null=True)),
109
+ ('end_of_xray_irradiation', models.DateTimeField(blank=True, null=True)),
110
+ ('comment', models.TextField(blank=True, null=True)),
111
+ ],
112
+ ),
113
+ migrations.CreateModel(
114
+ name='DicomDeleteSettings',
115
+ fields=[
116
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
117
+ ('del_no_match', models.BooleanField(default=False, verbose_name="delete objects that don't match any import functions?")),
118
+ ('del_rdsr', models.BooleanField(default=False, verbose_name='delete radiation dose structured reports after processing?')),
119
+ ('del_mg_im', models.BooleanField(default=False, verbose_name='delete mammography images after processing?')),
120
+ ('del_dx_im', models.BooleanField(default=False, verbose_name='delete radiography images after processing?')),
121
+ ('del_ct_phil', models.BooleanField(default=False, verbose_name='delete Philips CT dose info images after processing?')),
122
+ ],
123
+ options={
124
+ 'verbose_name': 'Delete DICOM objects settings',
125
+ },
126
+ ),
127
+ migrations.CreateModel(
128
+ name='DicomRemoteQR',
129
+ fields=[
130
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
131
+ ('name', models.CharField(max_length=64, unique=True, verbose_name='Name of QR node - fewer than 64 characters, spaces allowed')),
132
+ ('aetitle', models.CharField(blank=True, max_length=16, null=True, verbose_name='AE Title of the remote node - 16 or fewer letters and numbers, no spaces')),
133
+ ('port', models.IntegerField(blank=True, null=True, verbose_name='Remote port')),
134
+ ('ip', models.GenericIPAddressField(blank=True, null=True, verbose_name='Remote IP address')),
135
+ ('hostname', models.CharField(blank=True, max_length=32, null=True, verbose_name='Or remote hostname')),
136
+ ('callingaet', models.CharField(blank=True, max_length=16, null=True, verbose_name='AE Title of this OpenREM server - 16 or fewer letters and numbers, no spaces')),
137
+ ('use_modality_tag', models.BooleanField(default=False, verbose_name='Use modality tag in study query')),
138
+ ('enabled', models.BooleanField(default=False)),
139
+ ],
140
+ ),
141
+ migrations.CreateModel(
142
+ name='DicomStoreSCP',
143
+ fields=[
144
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
145
+ ('name', models.CharField(max_length=64, unique=True, verbose_name='Name of local store node - fewer than 64 characters, spaces allowed')),
146
+ ('aetitle', models.CharField(blank=True, max_length=16, null=True, verbose_name='AE Title of this node - 16 or fewer letters and numbers, no spaces')),
147
+ ('port', models.IntegerField(blank=True, null=True, verbose_name='Port: 104 is standard for DICOM but over 1024 requires fewer admin rights')),
148
+ ('task_id', models.CharField(blank=True, max_length=64, null=True)),
149
+ ('status', models.CharField(blank=True, max_length=64, null=True)),
150
+ ('run', models.BooleanField(default=False)),
151
+ ('keep_alive', models.BooleanField(default=False, verbose_name='Should this server be kept auto-started and kept alive (using celery beat)')),
152
+ ('controlled', models.BooleanField(default=False, verbose_name='Is this server controlled by OpenREM')),
153
+ ],
154
+ ),
155
+ migrations.CreateModel(
156
+ name='GeneralStudyModuleAttr',
157
+ fields=[
158
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
159
+ ('study_instance_uid', models.TextField(blank=True, null=True)),
160
+ ('study_date', models.DateField(blank=True, null=True)),
161
+ ('study_time', models.TimeField(blank=True, null=True)),
162
+ ('study_workload_chart_time', models.DateTimeField(blank=True, null=True)),
163
+ ('referring_physician_name', models.TextField(blank=True, null=True)),
164
+ ('referring_physician_identification', models.TextField(blank=True, null=True)),
165
+ ('study_id', models.CharField(blank=True, max_length=16, null=True)),
166
+ ('accession_number', models.TextField(blank=True, null=True)),
167
+ ('accession_hashed', models.BooleanField(default=False)),
168
+ ('study_description', models.TextField(blank=True, null=True)),
169
+ ('physician_of_record', models.TextField(blank=True, null=True)),
170
+ ('name_of_physician_reading_study', models.TextField(blank=True, null=True)),
171
+ ('performing_physician_name', models.TextField(blank=True, null=True)),
172
+ ('operator_name', models.TextField(blank=True, null=True)),
173
+ ('modality_type', models.CharField(blank=True, max_length=16, null=True)),
174
+ ('procedure_code_value', models.TextField(blank=True, null=True)),
175
+ ('procedure_code_meaning', models.TextField(blank=True, null=True)),
176
+ ('requested_procedure_code_value', models.TextField(blank=True, null=True)),
177
+ ('requested_procedure_code_meaning', models.TextField(blank=True, null=True)),
178
+ ('series_instance_uid', models.TextField(blank=True, null=True)),
179
+ ('series_time', models.TimeField(blank=True, null=True)),
180
+ ('content_time', models.TimeField(blank=True, null=True)),
181
+ ('number_of_events', models.IntegerField(blank=True, null=True)),
182
+ ('number_of_events_a', models.IntegerField(blank=True, null=True)),
183
+ ('number_of_events_b', models.IntegerField(blank=True, null=True)),
184
+ ('number_of_axial', models.IntegerField(blank=True, null=True)),
185
+ ('number_of_spiral', models.IntegerField(blank=True, null=True)),
186
+ ('number_of_stationary', models.IntegerField(blank=True, null=True)),
187
+ ('number_of_const_angle', models.IntegerField(blank=True, null=True)),
188
+ ('total_dlp', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
189
+ ('total_dap_a', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
190
+ ('total_dap_b', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
191
+ ('total_dap', models.DecimalField(decimal_places=12, max_digits=16, null=True)),
192
+ ('total_rp_dose_a', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
193
+ ('total_rp_dose_b', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
194
+ ('total_dap_delta_weeks', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
195
+ ('total_rp_dose_delta_weeks', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
196
+ ('total_agd_left', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
197
+ ('total_agd_right', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
198
+ ('total_agd_both', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
199
+ ('number_of_planes', models.IntegerField(blank=True, null=True)),
200
+ ],
201
+ ),
202
+ migrations.CreateModel(
203
+ name='HighDoseMetricAlertSettings',
204
+ fields=[
205
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
206
+ ('alert_total_dap_rf', models.IntegerField(blank=True, default=20000, null=True, verbose_name='Alert level for total DAP from fluoroscopy examination (cGy.cm<sup>2</sup>)')),
207
+ ('alert_total_rp_dose_rf', models.FloatField(blank=True, default=2.0, null=True, verbose_name='Alert level for total dose at reference point from fluoroscopy examination (Gy)')),
208
+ ('accum_dose_delta_weeks', models.IntegerField(blank=True, default=12, null=True, verbose_name='Number of previous weeks over which to sum DAP and RP dose for each patient')),
209
+ ('changed_accum_dose_delta_weeks', models.BooleanField(default=True)),
210
+ ('show_accum_dose_over_delta_weeks', models.BooleanField(default=True, verbose_name='Enable display of summed DAP and RP dose in e-mail alerts and on summary and detail pages?')),
211
+ ('calc_accum_dose_over_delta_weeks_on_import', models.BooleanField(default=True, verbose_name='Calculate summed DAP and RP dose for incoming fluoroscopy studies?')),
212
+ ('send_high_dose_metric_alert_emails', models.BooleanField(default=False, verbose_name='Send notification e-mails when alert levels are exceeded?')),
213
+ ],
214
+ options={
215
+ 'abstract': False,
216
+ },
217
+ ),
218
+ migrations.CreateModel(
219
+ name='HomePageAdminSettings',
220
+ fields=[
221
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
222
+ ('enable_workload_stats', models.BooleanField(default=False, verbose_name='Enable calculation and display of workload stats on home page?')),
223
+ ],
224
+ options={
225
+ 'abstract': False,
226
+ },
227
+ ),
228
+ migrations.CreateModel(
229
+ name='IrradEventXRayData',
230
+ fields=[
231
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
232
+ ('irradiation_event_uid', models.TextField(blank=True, null=True)),
233
+ ('irradiation_event_label', models.TextField(blank=True, null=True)),
234
+ ('date_time_started', models.DateTimeField(blank=True, null=True)),
235
+ ('acquisition_protocol', models.TextField(blank=True, null=True)),
236
+ ('projection_eponymous_name', models.CharField(blank=True, max_length=16, null=True)),
237
+ ('patient_table_relationship', models.CharField(blank=True, max_length=16, null=True)),
238
+ ('patient_orientation', models.CharField(blank=True, max_length=16, null=True)),
239
+ ('patient_orientation_modifier', models.CharField(blank=True, max_length=16, null=True)),
240
+ ('dose_area_product', models.DecimalField(blank=True, decimal_places=10, max_digits=16, null=True)),
241
+ ('half_value_layer', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
242
+ ('patient_equivalent_thickness', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
243
+ ('entrance_exposure_at_rp', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
244
+ ('reference_point_definition_text', models.TextField(blank=True, null=True)),
245
+ ('breast_composition', models.CharField(blank=True, max_length=16, null=True)),
246
+ ('percent_fibroglandular_tissue', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
247
+ ('comment', models.TextField(blank=True, null=True)),
248
+ ('acquisition_plane', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_plane', to='remapp.ContextID')),
249
+ ('anatomical_structure', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_anatomy', to='remapp.ContextID')),
250
+ ('breast_composition_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_breastcomposition', to='remapp.ContextID')),
251
+ ('image_view', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_view', to='remapp.ContextID')),
252
+ ('irradiation_event_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_eventtype', to='remapp.ContextID')),
253
+ ('label_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_labeltype', to='remapp.ContextID')),
254
+ ('laterality', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_laterality', to='remapp.ContextID')),
255
+ ('patient_orientation_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_ptorientation', to='remapp.ContextID')),
256
+ ('patient_orientation_modifier_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_ptorientationmod', to='remapp.ContextID')),
257
+ ('patient_table_relationship_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_pttablerel', to='remapp.ContextID')),
258
+ ('projection_eponymous_name_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_pojectioneponymous', to='remapp.ContextID')),
259
+ ],
260
+ ),
261
+ migrations.CreateModel(
262
+ name='IrradEventXRaySourceData',
263
+ fields=[
264
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
265
+ ('dose_rp', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
266
+ ('reference_point_definition', models.TextField(blank=True, null=True)),
267
+ ('average_glandular_dose', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
268
+ ('pulse_rate', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
269
+ ('number_of_pulses', models.DecimalField(blank=True, decimal_places=2, max_digits=16, null=True)),
270
+ ('derivation', models.CharField(blank=True, max_length=16, null=True)),
271
+ ('irradiation_duration', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
272
+ ('average_xray_tube_current', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
273
+ ('exposure_time', models.DecimalField(blank=True, decimal_places=2, max_digits=16, null=True)),
274
+ ('focal_spot_size', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
275
+ ('collimated_field_area', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
276
+ ('collimated_field_height', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
277
+ ('collimated_field_width', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
278
+ ('ii_field_size', models.IntegerField(blank=True, null=True)),
279
+ ('exposure_control_mode', models.CharField(blank=True, max_length=16, null=True)),
280
+ ('grid_absorbing_material', models.TextField(blank=True, null=True)),
281
+ ('grid_spacing_material', models.TextField(blank=True, null=True)),
282
+ ('grid_thickness', models.DecimalField(blank=True, decimal_places=6, max_digits=16, null=True)),
283
+ ('grid_pitch', models.DecimalField(blank=True, decimal_places=6, max_digits=16, null=True)),
284
+ ('grid_aspect_ratio', models.TextField(blank=True, null=True)),
285
+ ('grid_period', models.DecimalField(blank=True, decimal_places=6, max_digits=16, null=True)),
286
+ ('grid_focal_distance', models.DecimalField(blank=True, decimal_places=6, max_digits=16, null=True)),
287
+ ('anode_target_material', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003b_anodetarget', to='remapp.ContextID')),
288
+ ('derivation_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003b_derivation', to='remapp.ContextID')),
289
+ ('fluoro_mode', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003b_fluoromode', to='remapp.ContextID')),
290
+ ('irradiation_event_xray_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRayData')),
291
+ ('reference_point_definition_code', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003b_rpdefinition', to='remapp.ContextID')),
292
+ ],
293
+ ),
294
+ migrations.CreateModel(
295
+ name='MergeOnDeviceObserverUIDSettings',
296
+ fields=[
297
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
298
+ ('match_on_device_observer_uid', models.BooleanField(default=False, verbose_name='Set Display Name and Modality type if Device Observer UID is matching.')),
299
+ ],
300
+ options={
301
+ 'abstract': False,
302
+ },
303
+ ),
304
+ migrations.CreateModel(
305
+ name='NotPatientIndicatorsID',
306
+ fields=[
307
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
308
+ ('not_patient_id', models.CharField(max_length=64)),
309
+ ],
310
+ options={
311
+ 'verbose_name': 'Not-patient indicator ID',
312
+ 'verbose_name_plural': 'Not-patient indicator IDs',
313
+ },
314
+ ),
315
+ migrations.CreateModel(
316
+ name='NotPatientIndicatorsName',
317
+ fields=[
318
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
319
+ ('not_patient_name', models.CharField(max_length=64)),
320
+ ],
321
+ options={
322
+ 'verbose_name': 'Not-patient indicator name',
323
+ 'verbose_name_plural': 'Not-patient indicator names',
324
+ },
325
+ ),
326
+ migrations.CreateModel(
327
+ name='PatientIDSettings',
328
+ fields=[
329
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
330
+ ('name_stored', models.BooleanField(default=False)),
331
+ ('name_hashed', models.BooleanField(default=True)),
332
+ ('id_stored', models.BooleanField(default=False)),
333
+ ('id_hashed', models.BooleanField(default=True)),
334
+ ('accession_hashed', models.BooleanField(default=False)),
335
+ ('dob_stored', models.BooleanField(default=False)),
336
+ ],
337
+ options={
338
+ 'verbose_name': 'Patient ID Settings',
339
+ },
340
+ ),
341
+ migrations.CreateModel(
342
+ name='SizeSpecificDoseEstimation',
343
+ fields=[
344
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
345
+ ('measured_lateral_dimension', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
346
+ ('measured_ap_dimension', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
347
+ ('derived_effective_diameter', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
348
+ ('water_equivalent_diameter', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
349
+ ('wed_estimate_location_z', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
350
+ ('ct_irradiation_event_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtIrradiationEventData')),
351
+ ('measurement_method', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ssde_method', to='remapp.ContextID')),
352
+ ('water_equivalent_diameter_method', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ssde_wed_method', to='remapp.ContextID')),
353
+ ],
354
+ ),
355
+ migrations.CreateModel(
356
+ name='SizeUpload',
357
+ fields=[
358
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
359
+ ('sizefile', models.FileField(upload_to='sizeupload')),
360
+ ('height_field', models.TextField(blank=True, null=True)),
361
+ ('weight_field', models.TextField(blank=True, null=True)),
362
+ ('id_field', models.TextField(blank=True, null=True)),
363
+ ('id_type', models.TextField(blank=True, null=True)),
364
+ ('task_id', models.TextField(blank=True, null=True)),
365
+ ('status', models.TextField(blank=True, null=True)),
366
+ ('progress', models.TextField(blank=True, null=True)),
367
+ ('num_records', models.IntegerField(blank=True, null=True)),
368
+ ('logfile', models.FileField(null=True, upload_to='sizelogs/%Y/%m/%d')),
369
+ ('import_date', models.DateTimeField(blank=True, null=True)),
370
+ ('processtime', models.FloatField(blank=True, null=True)),
371
+ ],
372
+ ),
373
+ migrations.CreateModel(
374
+ name='SkinDoseMapCalcSettings',
375
+ fields=[
376
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
377
+ ('enable_skin_dose_maps', models.BooleanField(default=False, verbose_name='Enable skin dose maps?')),
378
+ ('calc_on_import', models.BooleanField(default=True, verbose_name='Calculate skin dose map on import?')),
379
+ ],
380
+ options={
381
+ 'abstract': False,
382
+ },
383
+ ),
384
+ migrations.CreateModel(
385
+ name='SummaryFields',
386
+ fields=[
387
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
388
+ ('modality_type', models.CharField(max_length=2, null=True)),
389
+ ('complete', models.BooleanField(default=False)),
390
+ ('status_message', models.TextField(blank=True, null=True)),
391
+ ('total_studies', models.IntegerField(default=0)),
392
+ ('current_study', models.IntegerField(default=0)),
393
+ ],
394
+ ),
395
+ migrations.CreateModel(
396
+ name='UpgradeStatus',
397
+ fields=[
398
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
399
+ ('from_0_9_1_summary_fields', models.BooleanField(default=False)),
400
+ ],
401
+ options={
402
+ 'abstract': False,
403
+ },
404
+ ),
405
+ migrations.CreateModel(
406
+ name='XrayTubeCurrent',
407
+ fields=[
408
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
409
+ ('xray_tube_current', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
410
+ ('irradiation_event_xray_source_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRaySourceData')),
411
+ ],
412
+ ),
413
+ migrations.CreateModel(
414
+ name='XrayGrid',
415
+ fields=[
416
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
417
+ ('irradiation_event_xray_source_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRaySourceData')),
418
+ ('xray_grid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
419
+ ],
420
+ ),
421
+ migrations.CreateModel(
422
+ name='XrayFilters',
423
+ fields=[
424
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
425
+ ('xray_filter_thickness_minimum', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
426
+ ('xray_filter_thickness_maximum', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
427
+ ('irradiation_event_xray_source_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRaySourceData')),
428
+ ('xray_filter_material', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='xrayfilters_material', to='remapp.ContextID')),
429
+ ('xray_filter_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='xrayfilters_type', to='remapp.ContextID')),
430
+ ],
431
+ ),
432
+ migrations.CreateModel(
433
+ name='WEDSeriesOrInstances',
434
+ fields=[
435
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
436
+ ('wed_series_or_instance', models.TextField(blank=True, null=True)),
437
+ ('size_specific_dose_estimation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.SizeSpecificDoseEstimation')),
438
+ ],
439
+ ),
440
+ migrations.CreateModel(
441
+ name='UserProfile',
442
+ fields=[
443
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
444
+ ('itemsPerPage', models.IntegerField(choices=[(10, '10'), (25, '25'), (50, '50'), (100, '100'), (200, '200'), (400, '400')], default=25, null=True)),
445
+ ('median_available', models.BooleanField(default=False, editable=False)),
446
+ ('plotAverageChoice', models.CharField(choices=[('mean', 'mean'), ('median', 'median'), ('both', 'both')], default='mean', max_length=6)),
447
+ ('plotInitialSortingDirection', models.IntegerField(choices=[(1, 'Ascending'), (-1, 'Descending')], default=-1, null=True)),
448
+ ('plotCharts', models.BooleanField(default=False)),
449
+ ('plotDXAcquisitionMeanDAP', models.BooleanField(default=True)),
450
+ ('plotDXAcquisitionFreq', models.BooleanField(default=False)),
451
+ ('plotDXStudyMeanDAP', models.BooleanField(default=True)),
452
+ ('plotDXStudyFreq', models.BooleanField(default=True)),
453
+ ('plotDXRequestMeanDAP', models.BooleanField(default=True)),
454
+ ('plotDXRequestFreq', models.BooleanField(default=True)),
455
+ ('plotDXAcquisitionMeankVp', models.BooleanField(default=False)),
456
+ ('plotDXAcquisitionMeanmAs', models.BooleanField(default=False)),
457
+ ('plotDXStudyPerDayAndHour', models.BooleanField(default=False)),
458
+ ('plotDXAcquisitionMeankVpOverTime', models.BooleanField(default=False)),
459
+ ('plotDXAcquisitionMeanmAsOverTime', models.BooleanField(default=False)),
460
+ ('plotDXAcquisitionMeanDAPOverTime', models.BooleanField(default=False)),
461
+ ('plotDXAcquisitionMeanDAPOverTimePeriod', models.CharField(choices=[('days', 'Days'), ('weeks', 'Weeks'), ('months', 'Months'), ('years', 'Years')], default='months', max_length=6)),
462
+ ('plotDXInitialSortingChoice', models.CharField(choices=[('dap', 'DAP'), ('freq', 'Frequency'), ('name', 'Name')], default='freq', max_length=4)),
463
+ ('plotCTAcquisitionMeanDLP', models.BooleanField(default=True)),
464
+ ('plotCTAcquisitionMeanCTDI', models.BooleanField(default=True)),
465
+ ('plotCTAcquisitionFreq', models.BooleanField(default=False)),
466
+ ('plotCTStudyMeanDLP', models.BooleanField(default=True)),
467
+ ('plotCTStudyMeanCTDI', models.BooleanField(default=True)),
468
+ ('plotCTStudyFreq', models.BooleanField(default=False)),
469
+ ('plotCTStudyNumEvents', models.BooleanField(default=False)),
470
+ ('plotCTRequestMeanDLP', models.BooleanField(default=False)),
471
+ ('plotCTRequestFreq', models.BooleanField(default=False)),
472
+ ('plotCTRequestNumEvents', models.BooleanField(default=False)),
473
+ ('plotCTStudyPerDayAndHour', models.BooleanField(default=False)),
474
+ ('plotCTStudyMeanDLPOverTime', models.BooleanField(default=False)),
475
+ ('plotCTStudyMeanDLPOverTimePeriod', models.CharField(choices=[('days', 'Days'), ('weeks', 'Weeks'), ('months', 'Months'), ('years', 'Years')], default='months', max_length=6)),
476
+ ('plotCTInitialSortingChoice', models.CharField(choices=[('dlp', 'DLP'), ('ctdi', 'CTDI'), ('freq', 'Frequency'), ('name', 'Name')], default='freq', max_length=4)),
477
+ ('plotRFStudyPerDayAndHour', models.BooleanField(default=False)),
478
+ ('plotRFStudyFreq', models.BooleanField(default=False)),
479
+ ('plotRFStudyDAP', models.BooleanField(default=True)),
480
+ ('plotRFRequestDAP', models.BooleanField(default=True)),
481
+ ('plotRFRequestFreq', models.BooleanField(default=True)),
482
+ ('plotRFInitialSortingChoice', models.CharField(choices=[('dap', 'DAP'), ('freq', 'Frequency'), ('name', 'Name')], default='freq', max_length=4)),
483
+ ('plotMGStudyPerDayAndHour', models.BooleanField(default=False)),
484
+ ('plotMGAGDvsThickness', models.BooleanField(default=False)),
485
+ ('plotMGkVpvsThickness', models.BooleanField(default=False)),
486
+ ('plotMGmAsvsThickness', models.BooleanField(default=False)),
487
+ ('displayCT', models.BooleanField(default=True)),
488
+ ('displayRF', models.BooleanField(default=True)),
489
+ ('displayMG', models.BooleanField(default=True)),
490
+ ('displayDX', models.BooleanField(default=True)),
491
+ ('plotSeriesPerSystem', models.BooleanField(default=False)),
492
+ ('plotHistogramBins', models.PositiveSmallIntegerField(default=20)),
493
+ ('plotHistograms', models.BooleanField(default=False)),
494
+ ('plotCaseInsensitiveCategories', models.BooleanField(default=False)),
495
+ ('summaryWorkloadDaysA', models.IntegerField(blank=True, default=7, null=True, verbose_name='Number of days over which to sum studies A')),
496
+ ('summaryWorkloadDaysB', models.IntegerField(blank=True, default=28, null=True, verbose_name='Number of days over which to sum studies B')),
497
+ ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
498
+ ],
499
+ ),
500
+ migrations.CreateModel(
501
+ name='UniqueEquipmentNames',
502
+ fields=[
503
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
504
+ ('manufacturer', models.TextField(blank=True, null=True)),
505
+ ('manufacturer_hash', models.CharField(blank=True, max_length=64, null=True)),
506
+ ('institution_name', models.TextField(blank=True, null=True)),
507
+ ('institution_name_hash', models.CharField(blank=True, max_length=64, null=True)),
508
+ ('station_name', models.CharField(blank=True, max_length=32, null=True)),
509
+ ('station_name_hash', models.CharField(blank=True, max_length=64, null=True)),
510
+ ('institutional_department_name', models.TextField(blank=True, null=True)),
511
+ ('institutional_department_name_hash', models.CharField(blank=True, max_length=64, null=True)),
512
+ ('manufacturer_model_name', models.TextField(blank=True, null=True)),
513
+ ('manufacturer_model_name_hash', models.CharField(blank=True, max_length=64, null=True)),
514
+ ('device_serial_number', models.TextField(blank=True, null=True)),
515
+ ('device_serial_number_hash', models.CharField(blank=True, max_length=64, null=True)),
516
+ ('software_versions', models.TextField(blank=True, null=True)),
517
+ ('software_versions_hash', models.CharField(blank=True, max_length=64, null=True)),
518
+ ('gantry_id', models.TextField(blank=True, null=True)),
519
+ ('gantry_id_hash', models.CharField(blank=True, max_length=64, null=True)),
520
+ ('display_name', models.TextField(blank=True, null=True)),
521
+ ('user_defined_modality', models.CharField(blank=True, max_length=16, null=True)),
522
+ ('hash_generated', models.BooleanField(default=False)),
523
+ ('device_observer_uid', models.TextField(blank=True, null=True)),
524
+ ('device_observer_uid_hash', models.CharField(blank=True, max_length=64, null=True)),
525
+ ],
526
+ options={
527
+ 'unique_together': {('manufacturer_hash', 'institution_name_hash', 'station_name_hash', 'institutional_department_name_hash', 'manufacturer_model_name_hash', 'device_serial_number_hash', 'software_versions_hash', 'gantry_id_hash', 'device_observer_uid_hash')},
528
+ },
529
+ ),
530
+ migrations.CreateModel(
531
+ name='SourceOfCTDoseInformation',
532
+ fields=[
533
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
534
+ ('ct_radiation_dose', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtRadiationDose')),
535
+ ('source_of_dose_information', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
536
+ ],
537
+ ),
538
+ migrations.CreateModel(
539
+ name='ScanningLength',
540
+ fields=[
541
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
542
+ ('scanning_length', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
543
+ ('length_of_reconstructable_volume', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
544
+ ('exposed_range', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
545
+ ('top_z_location_of_reconstructable_volume', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
546
+ ('bottom_z_location_of_reconstructable_volume', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
547
+ ('top_z_location_of_scanning_length', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
548
+ ('bottom_z_location_of_scanning_length', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
549
+ ('frame_of_reference_uid', models.TextField(blank=True, null=True)),
550
+ ('ct_irradiation_event_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtIrradiationEventData')),
551
+ ],
552
+ ),
553
+ migrations.CreateModel(
554
+ name='PulseWidth',
555
+ fields=[
556
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
557
+ ('pulse_width', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
558
+ ('irradiation_event_xray_source_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRaySourceData')),
559
+ ],
560
+ ),
561
+ migrations.CreateModel(
562
+ name='ProjectionXRayRadiationDose',
563
+ fields=[
564
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
565
+ ('comment', models.TextField(blank=True, null=True)),
566
+ ('acquisition_device_type_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_type', to='remapp.ContextID')),
567
+ ('general_study_module_attributes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.GeneralStudyModuleAttr')),
568
+ ('has_intent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_intent', to='remapp.ContextID')),
569
+ ('procedure_reported', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_procedure', to='remapp.ContextID')),
570
+ ('scope_of_accumulation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_scope', to='remapp.ContextID')),
571
+ ('source_of_dose_information', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_infosource', to='remapp.ContextID')),
572
+ ('xray_detector_data_available', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_detector', to='remapp.ContextID')),
573
+ ('xray_mechanical_data_available', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_mech', to='remapp.ContextID')),
574
+ ('xray_source_data_available', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10001_source', to='remapp.ContextID')),
575
+ ],
576
+ ),
577
+ migrations.CreateModel(
578
+ name='PKsForSummedRFDoseStudiesInDeltaWeeks',
579
+ fields=[
580
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
581
+ ('study_pk_in_delta_weeks', models.IntegerField(blank=True, null=True)),
582
+ ('general_study_module_attributes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.GeneralStudyModuleAttr')),
583
+ ],
584
+ ),
585
+ migrations.CreateModel(
586
+ name='PersonParticipant',
587
+ fields=[
588
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
589
+ ('person_name', models.TextField(blank=True, null=True)),
590
+ ('person_role_in_procedure', models.CharField(blank=True, max_length=16)),
591
+ ('person_id', models.TextField(blank=True, null=True)),
592
+ ('person_id_issuer', models.TextField(blank=True, null=True)),
593
+ ('organization_name', models.TextField(blank=True, null=True)),
594
+ ('person_role_in_organization', models.TextField(blank=True, null=True)),
595
+ ('ct_accumulated_dose_data', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.CtAccumulatedDoseData')),
596
+ ('ct_dose_check_details_alert', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1020_alert', to='remapp.CtDoseCheckDetails')),
597
+ ('ct_dose_check_details_notification', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1020_notification', to='remapp.CtDoseCheckDetails')),
598
+ ('ct_irradiation_event_data', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.CtIrradiationEventData')),
599
+ ('ct_radiation_dose', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.CtRadiationDose')),
600
+ ('irradiation_event_xray_data', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRayData')),
601
+ ('person_role_in_organization_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1020_roleorg', to='remapp.ContextID')),
602
+ ('person_role_in_procedure_cid', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1020_roleproc', to='remapp.ContextID')),
603
+ ('projection_xray_radiation_dose', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ProjectionXRayRadiationDose')),
604
+ ],
605
+ ),
606
+ migrations.CreateModel(
607
+ name='PatientStudyModuleAttr',
608
+ fields=[
609
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
610
+ ('admitting_diagnosis_description', models.TextField(blank=True, null=True)),
611
+ ('admitting_diagnosis_code_sequence', models.TextField(blank=True, null=True)),
612
+ ('patient_age', models.CharField(blank=True, max_length=4, null=True)),
613
+ ('patient_age_decimal', models.DecimalField(blank=True, decimal_places=3, max_digits=7, null=True)),
614
+ ('patient_size', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
615
+ ('patient_weight', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
616
+ ('general_study_module_attributes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.GeneralStudyModuleAttr')),
617
+ ],
618
+ ),
619
+ migrations.CreateModel(
620
+ name='PatientModuleAttr',
621
+ fields=[
622
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
623
+ ('patient_name', models.TextField(blank=True, null=True)),
624
+ ('name_hashed', models.BooleanField(default=False)),
625
+ ('patient_id', models.TextField(blank=True, null=True)),
626
+ ('id_hashed', models.BooleanField(default=False)),
627
+ ('patient_birth_date', models.DateField(blank=True, null=True)),
628
+ ('patient_sex', models.CharField(blank=True, max_length=2, null=True)),
629
+ ('other_patient_ids', models.TextField(blank=True, null=True)),
630
+ ('not_patient_indicator', models.TextField(blank=True, null=True)),
631
+ ('general_study_module_attributes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.GeneralStudyModuleAttr')),
632
+ ],
633
+ ),
634
+ migrations.CreateModel(
635
+ name='ObserverContext',
636
+ fields=[
637
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
638
+ ('person_observer_name', models.TextField(blank=True, null=True)),
639
+ ('person_observer_organization_name', models.TextField(blank=True, null=True)),
640
+ ('device_observer_uid', models.TextField(blank=True, null=True)),
641
+ ('device_observer_name', models.TextField(blank=True, null=True)),
642
+ ('device_observer_manufacturer', models.TextField(blank=True, null=True)),
643
+ ('device_observer_model_name', models.TextField(blank=True, null=True)),
644
+ ('device_observer_serial_number', models.TextField(blank=True, null=True)),
645
+ ('device_observer_physical_location_during_observation', models.TextField(blank=True, null=True)),
646
+ ('ct_radiation_dose', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.CtRadiationDose')),
647
+ ('device_role_in_procedure', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1002_role', to='remapp.ContextID')),
648
+ ('observer_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1002_observertype', to='remapp.ContextID')),
649
+ ('person_observer_role_in_organization', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1002_ptroleorg', to='remapp.ContextID')),
650
+ ('person_observer_role_in_procedure', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1002_ptroleproc', to='remapp.ContextID')),
651
+ ('projection_xray_radiation_dose', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ProjectionXRayRadiationDose')),
652
+ ],
653
+ ),
654
+ migrations.CreateModel(
655
+ name='ObjectUIDsProcessed',
656
+ fields=[
657
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
658
+ ('sop_instance_uid', models.TextField(blank=True, null=True)),
659
+ ('general_study_module_attributes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.GeneralStudyModuleAttr')),
660
+ ],
661
+ ),
662
+ migrations.CreateModel(
663
+ name='Kvp',
664
+ fields=[
665
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
666
+ ('kvp', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
667
+ ('irradiation_event_xray_source_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRaySourceData')),
668
+ ],
669
+ ),
670
+ migrations.CreateModel(
671
+ name='IrradEventXRayMechanicalData',
672
+ fields=[
673
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
674
+ ('positioner_primary_angle', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
675
+ ('positioner_secondary_angle', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
676
+ ('positioner_primary_end_angle', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
677
+ ('positioner_secondary_end_angle', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
678
+ ('column_angulation', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
679
+ ('table_head_tilt_angle', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
680
+ ('table_horizontal_rotation_angle', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
681
+ ('table_cradle_tilt_angle', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
682
+ ('compression_thickness', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
683
+ ('compression_force', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
684
+ ('magnification_factor', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
685
+ ('crdr_mechanical_configuration', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
686
+ ('irradiation_event_xray_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRayData')),
687
+ ],
688
+ ),
689
+ migrations.CreateModel(
690
+ name='IrradEventXRayDetectorData',
691
+ fields=[
692
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
693
+ ('exposure_index', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
694
+ ('target_exposure_index', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
695
+ ('deviation_index', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
696
+ ('relative_xray_exposure', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
697
+ ('relative_exposure_unit', models.CharField(blank=True, max_length=16, null=True)),
698
+ ('sensitivity', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
699
+ ('irradiation_event_xray_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRayData')),
700
+ ],
701
+ ),
702
+ migrations.AddField(
703
+ model_name='irradeventxraydata',
704
+ name='projection_xray_radiation_dose',
705
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.ProjectionXRayRadiationDose'),
706
+ ),
707
+ migrations.AddField(
708
+ model_name='irradeventxraydata',
709
+ name='reference_point_definition',
710
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_rpdefinition', to='remapp.ContextID'),
711
+ ),
712
+ migrations.AddField(
713
+ model_name='irradeventxraydata',
714
+ name='target_region',
715
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10003_region', to='remapp.ContextID'),
716
+ ),
717
+ migrations.CreateModel(
718
+ name='ImageViewModifier',
719
+ fields=[
720
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
721
+ ('image_view_modifier', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
722
+ ('irradiation_event_xray_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRayData')),
723
+ ],
724
+ ),
725
+ migrations.CreateModel(
726
+ name='HighDoseMetricAlertRecipients',
727
+ fields=[
728
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
729
+ ('receive_high_dose_metric_alerts', models.BooleanField(default=False, verbose_name='Receive high dose e-mail alerts?')),
730
+ ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
731
+ ],
732
+ ),
733
+ migrations.CreateModel(
734
+ name='GeneralEquipmentModuleAttr',
735
+ fields=[
736
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
737
+ ('manufacturer', models.TextField(blank=True, null=True)),
738
+ ('institution_name', models.TextField(blank=True, null=True)),
739
+ ('institution_address', models.TextField(blank=True, null=True)),
740
+ ('station_name', models.CharField(blank=True, max_length=32, null=True)),
741
+ ('institutional_department_name', models.TextField(blank=True, null=True)),
742
+ ('manufacturer_model_name', models.TextField(blank=True, null=True)),
743
+ ('device_serial_number', models.TextField(blank=True, null=True)),
744
+ ('software_versions', models.TextField(blank=True, null=True)),
745
+ ('gantry_id', models.TextField(blank=True, null=True)),
746
+ ('spatial_resolution', models.DecimalField(blank=True, decimal_places=4, max_digits=8, null=True)),
747
+ ('date_of_last_calibration', models.DateTimeField(blank=True, null=True)),
748
+ ('time_of_last_calibration', models.DateTimeField(blank=True, null=True)),
749
+ ('general_study_module_attributes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.GeneralStudyModuleAttr')),
750
+ ('unique_equipment_name', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.UniqueEquipmentNames')),
751
+ ],
752
+ ),
753
+ migrations.CreateModel(
754
+ name='Exposure',
755
+ fields=[
756
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
757
+ ('exposure', models.DecimalField(blank=True, decimal_places=2, max_digits=16, null=True)),
758
+ ('irradiation_event_xray_source_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRaySourceData')),
759
+ ],
760
+ ),
761
+ migrations.CreateModel(
762
+ name='Exports',
763
+ fields=[
764
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
765
+ ('task_id', models.TextField()),
766
+ ('filename', models.FileField(null=True, upload_to='exports/%Y/%m/%d')),
767
+ ('status', models.TextField(blank=True, null=True)),
768
+ ('progress', models.TextField(blank=True, null=True)),
769
+ ('modality', models.CharField(blank=True, max_length=16, null=True)),
770
+ ('num_records', models.IntegerField(blank=True, null=True)),
771
+ ('export_type', models.TextField(blank=True, null=True)),
772
+ ('export_date', models.DateTimeField(blank=True, null=True)),
773
+ ('processtime', models.DecimalField(blank=True, decimal_places=10, max_digits=30, null=True)),
774
+ ('includes_pid', models.BooleanField(default=False)),
775
+ ('export_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
776
+ ],
777
+ ),
778
+ migrations.CreateModel(
779
+ name='DoseRelatedDistanceMeasurements',
780
+ fields=[
781
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
782
+ ('distance_source_to_isocenter', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
783
+ ('distance_source_to_reference_point', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
784
+ ('distance_source_to_detector', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
785
+ ('table_longitudinal_position', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
786
+ ('table_lateral_position', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
787
+ ('table_height_position', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
788
+ ('distance_source_to_table_plane', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
789
+ ('table_longitudinal_end_position', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
790
+ ('table_lateral_end_position', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
791
+ ('table_height_end_position', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
792
+ ('distance_source_to_entrance_surface', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
793
+ ('radiological_thickness', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
794
+ ('irradiation_event_xray_mechanical_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRayMechanicalData')),
795
+ ],
796
+ ),
797
+ migrations.CreateModel(
798
+ name='DicomQuery',
799
+ fields=[
800
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
801
+ ('complete', models.BooleanField(default=False)),
802
+ ('query_id', models.CharField(max_length=64)),
803
+ ('failed', models.BooleanField(default=False)),
804
+ ('message', models.TextField(blank=True, null=True)),
805
+ ('stage', models.TextField(blank=True, null=True)),
806
+ ('move_complete', models.BooleanField(default=False)),
807
+ ('qr_scp_fk', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.DicomRemoteQR')),
808
+ ('store_scp_fk', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.DicomStoreSCP')),
809
+ ],
810
+ ),
811
+ migrations.CreateModel(
812
+ name='DicomQRRspStudy',
813
+ fields=[
814
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
815
+ ('query_id', models.CharField(max_length=64)),
816
+ ('study_instance_uid', models.TextField(blank=True, null=True)),
817
+ ('modality', models.CharField(blank=True, max_length=16, null=True)),
818
+ ('modalities_in_study', models.CharField(blank=True, max_length=100, null=True)),
819
+ ('study_description', models.TextField(blank=True, null=True)),
820
+ ('number_of_study_related_series', models.IntegerField(blank=True, null=True)),
821
+ ('sop_classes_in_study', models.TextField(blank=True, null=True)),
822
+ ('station_name', models.CharField(blank=True, max_length=16, null=True)),
823
+ ('dicom_query', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.DicomQuery')),
824
+ ],
825
+ ),
826
+ migrations.CreateModel(
827
+ name='DicomQRRspSeries',
828
+ fields=[
829
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
830
+ ('query_id', models.CharField(max_length=64)),
831
+ ('series_instance_uid', models.TextField(blank=True, null=True)),
832
+ ('series_number', models.IntegerField(blank=True, null=True)),
833
+ ('series_time', models.TimeField(blank=True, null=True)),
834
+ ('modality', models.CharField(blank=True, max_length=16, null=True)),
835
+ ('series_description', models.TextField(blank=True, null=True)),
836
+ ('number_of_series_related_instances', models.IntegerField(blank=True, null=True)),
837
+ ('station_name', models.CharField(blank=True, max_length=16, null=True)),
838
+ ('sop_class_in_series', models.TextField(blank=True, null=True)),
839
+ ('image_level_move', models.BooleanField(default=False)),
840
+ ('dicom_qr_rsp_study', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.DicomQRRspStudy')),
841
+ ],
842
+ ),
843
+ migrations.CreateModel(
844
+ name='DicomQRRspImage',
845
+ fields=[
846
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
847
+ ('query_id', models.CharField(max_length=64)),
848
+ ('sop_instance_uid', models.TextField(blank=True, null=True)),
849
+ ('instance_number', models.IntegerField(blank=True, null=True)),
850
+ ('sop_class_uid', models.TextField(blank=True, null=True)),
851
+ ('dicom_qr_rsp_series', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.DicomQRRspSeries')),
852
+ ],
853
+ ),
854
+ migrations.CreateModel(
855
+ name='DeviceParticipant',
856
+ fields=[
857
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
858
+ ('device_name', models.TextField(blank=True, null=True)),
859
+ ('device_manufacturer', models.TextField(blank=True, null=True)),
860
+ ('device_model_name', models.TextField(blank=True, null=True)),
861
+ ('device_serial_number', models.TextField(blank=True, null=True)),
862
+ ('device_observer_uid', models.TextField(blank=True, null=True)),
863
+ ('accumulated_xray_dose', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.AccumXRayDose')),
864
+ ('ct_accumulated_dose_data', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.CtAccumulatedDoseData')),
865
+ ('ct_irradiation_event_data', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.CtIrradiationEventData')),
866
+ ('device_role_in_procedure', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
867
+ ('irradiation_event_xray_detector_data', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRayDetectorData')),
868
+ ('irradiation_event_xray_source_data', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.IrradEventXRaySourceData')),
869
+ ],
870
+ ),
871
+ migrations.CreateModel(
872
+ name='CtXRaySourceParameters',
873
+ fields=[
874
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
875
+ ('identification_of_the_xray_source', models.TextField(blank=True, null=True)),
876
+ ('kvp', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
877
+ ('maximum_xray_tube_current', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
878
+ ('xray_tube_current', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
879
+ ('exposure_time_per_rotation', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
880
+ ('xray_filter_aluminum_equivalent', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
881
+ ('ct_irradiation_event_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtIrradiationEventData')),
882
+ ],
883
+ ),
884
+ migrations.CreateModel(
885
+ name='CtReconstructionAlgorithm',
886
+ fields=[
887
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
888
+ ('ct_irradiation_event_data', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtIrradiationEventData')),
889
+ ('reconstruction_algorithm', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
890
+ ],
891
+ ),
892
+ migrations.AddField(
893
+ model_name='ctradiationdose',
894
+ name='general_study_module_attributes',
895
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.GeneralStudyModuleAttr'),
896
+ ),
897
+ migrations.AddField(
898
+ model_name='ctradiationdose',
899
+ name='has_intent',
900
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10011_intent', to='remapp.ContextID'),
901
+ ),
902
+ migrations.AddField(
903
+ model_name='ctradiationdose',
904
+ name='procedure_reported',
905
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10011_procedure', to='remapp.ContextID'),
906
+ ),
907
+ migrations.AddField(
908
+ model_name='ctradiationdose',
909
+ name='scope_of_accumulation',
910
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10011_scope', to='remapp.ContextID'),
911
+ ),
912
+ migrations.AddField(
913
+ model_name='ctradiationdose',
914
+ name='source_of_dose_information',
915
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10011_source', to='remapp.ContextID'),
916
+ ),
917
+ migrations.AddField(
918
+ model_name='ctradiationdose',
919
+ name='uid_type',
920
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid1011_uid', to='remapp.ContextID'),
921
+ ),
922
+ migrations.AddField(
923
+ model_name='ctirradiationeventdata',
924
+ name='ct_radiation_dose',
925
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtRadiationDose'),
926
+ ),
927
+ migrations.AddField(
928
+ model_name='ctirradiationeventdata',
929
+ name='ctdiw_phantom_type',
930
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10013_phantom', to='remapp.ContextID'),
931
+ ),
932
+ migrations.AddField(
933
+ model_name='ctirradiationeventdata',
934
+ name='label_type',
935
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10013_labeltype', to='remapp.ContextID'),
936
+ ),
937
+ migrations.AddField(
938
+ model_name='ctirradiationeventdata',
939
+ name='measurement_method',
940
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10013_method', to='remapp.ContextID'),
941
+ ),
942
+ migrations.AddField(
943
+ model_name='ctirradiationeventdata',
944
+ name='procedure_context',
945
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10013_context', to='remapp.ContextID'),
946
+ ),
947
+ migrations.AddField(
948
+ model_name='ctirradiationeventdata',
949
+ name='target_region',
950
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10013_region', to='remapp.ContextID'),
951
+ ),
952
+ migrations.AddField(
953
+ model_name='ctdosecheckdetails',
954
+ name='ct_irradiation_event_data',
955
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtIrradiationEventData'),
956
+ ),
957
+ migrations.AddField(
958
+ model_name='ctaccumulateddosedata',
959
+ name='ct_radiation_dose',
960
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.CtRadiationDose'),
961
+ ),
962
+ migrations.AddField(
963
+ model_name='ctaccumulateddosedata',
964
+ name='measurement_method',
965
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10012_method', to='remapp.ContextID'),
966
+ ),
967
+ migrations.AddField(
968
+ model_name='ctaccumulateddosedata',
969
+ name='reference_authority_code',
970
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tid10012_authority', to='remapp.ContextID'),
971
+ ),
972
+ migrations.CreateModel(
973
+ name='Calibration',
974
+ fields=[
975
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
976
+ ('calibration_date', models.DateTimeField(blank=True, null=True)),
977
+ ('calibration_factor', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
978
+ ('calibration_uncertainty', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
979
+ ('calibration_responsible_party', models.TextField(blank=True, null=True)),
980
+ ('accumulated_xray_dose', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.AccumXRayDose')),
981
+ ('dose_measurement_device', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
982
+ ],
983
+ ),
984
+ migrations.AddField(
985
+ model_name='accumxraydose',
986
+ name='acquisition_plane',
987
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID'),
988
+ ),
989
+ migrations.AddField(
990
+ model_name='accumxraydose',
991
+ name='projection_xray_radiation_dose',
992
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.ProjectionXRayRadiationDose'),
993
+ ),
994
+ migrations.CreateModel(
995
+ name='AccumProjXRayDose',
996
+ fields=[
997
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
998
+ ('fluoro_dose_area_product_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
999
+ ('fluoro_dose_rp_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1000
+ ('total_fluoro_time', models.DecimalField(blank=True, decimal_places=2, max_digits=7, null=True)),
1001
+ ('acquisition_dose_area_product_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1002
+ ('acquisition_dose_rp_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1003
+ ('total_acquisition_time', models.DecimalField(blank=True, decimal_places=8, max_digits=16, null=True)),
1004
+ ('dose_area_product_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1005
+ ('dose_rp_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1006
+ ('total_number_of_radiographic_frames', models.DecimalField(blank=True, decimal_places=0, max_digits=6, null=True)),
1007
+ ('reference_point_definition', models.TextField(blank=True, null=True)),
1008
+ ('accumulated_xray_dose', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.AccumXRayDose')),
1009
+ ('reference_point_definition_code', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
1010
+ ],
1011
+ ),
1012
+ migrations.CreateModel(
1013
+ name='AccumMammographyXRayDose',
1014
+ fields=[
1015
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1016
+ ('accumulated_average_glandular_dose', models.DecimalField(blank=True, decimal_places=4, max_digits=8, null=True)),
1017
+ ('accumulated_xray_dose', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.AccumXRayDose')),
1018
+ ('laterality', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
1019
+ ],
1020
+ ),
1021
+ migrations.CreateModel(
1022
+ name='AccumIntegratedProjRadiogDose',
1023
+ fields=[
1024
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1025
+ ('dose_area_product_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1026
+ ('dose_rp_total', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1027
+ ('total_number_of_radiographic_frames', models.DecimalField(blank=True, decimal_places=0, max_digits=6, null=True)),
1028
+ ('reference_point_definition', models.TextField(blank=True, null=True)),
1029
+ ('dose_area_product_total_over_delta_weeks', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1030
+ ('dose_rp_total_over_delta_weeks', models.DecimalField(blank=True, decimal_places=12, max_digits=16, null=True)),
1031
+ ('accumulated_xray_dose', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.AccumXRayDose')),
1032
+ ('reference_point_definition_code', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
1033
+ ],
1034
+ ),
1035
+ migrations.CreateModel(
1036
+ name='AccumCassetteBsdProjRadiogDose',
1037
+ fields=[
1038
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1039
+ ('total_number_of_radiographic_frames', models.DecimalField(blank=True, decimal_places=0, max_digits=6, null=True)),
1040
+ ('accumulated_xray_dose', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='remapp.AccumXRayDose')),
1041
+ ('detector_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='remapp.ContextID')),
1042
+ ],
1043
+ ),
1044
1044
  ]