endoreg-db 0.3.12__py3-none-any.whl → 0.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of endoreg-db might be problematic. Click here for more details.

Files changed (77) hide show
  1. endoreg_db/migrations/0001_initial.py +1020 -35
  2. {endoreg_db-0.3.12.dist-info → endoreg_db-0.4.0.dist-info}/METADATA +1 -1
  3. {endoreg_db-0.3.12.dist-info → endoreg_db-0.4.0.dist-info}/RECORD +5 -77
  4. endoreg_db/migrations/0002_rawvideofile.py +0 -26
  5. endoreg_db/migrations/0003_rawvideofile_frames_required.py +0 -18
  6. endoreg_db/migrations/0004_rename_hash_rawvideofile_video_hash.py +0 -18
  7. endoreg_db/migrations/0005_ffmpegmeta_remove_videoimportmeta_center_and_more.py +0 -56
  8. endoreg_db/migrations/0006_rawvideofile_center_alter_videometa_processor.py +0 -25
  9. endoreg_db/migrations/0007_rawvideofile_processor.py +0 -19
  10. endoreg_db/migrations/0008_rename_frames_required_rawvideofile_state_frames_required.py +0 -18
  11. endoreg_db/migrations/0009_sensitivemeta_rawvideofile_sensitive_meta.py +0 -31
  12. endoreg_db/migrations/0010_rename_endoscope_serial_number_sensitivemeta_endoscope_sn.py +0 -18
  13. endoreg_db/migrations/0011_rawvideofile_state_sensitive_data_retrieved.py +0 -18
  14. endoreg_db/migrations/0012_rawvideofile_prediction_dir_and_more.py +0 -109
  15. endoreg_db/migrations/0013_rawpdffile.py +0 -31
  16. endoreg_db/migrations/0014_pdftype_alter_rawpdffile_file_pdfmeta.py +0 -38
  17. endoreg_db/migrations/0015_rename_report_processed_rawpdffile_state_report_processed_and_more.py +0 -31
  18. endoreg_db/migrations/0016_rawpdffile_state_report_processing_required.py +0 -18
  19. endoreg_db/migrations/0017_firstname_lastname_center_first_names_and_more.py +0 -37
  20. endoreg_db/migrations/0018_reportreaderflag_reportreaderconfig.py +0 -37
  21. endoreg_db/migrations/0019_pdftype_cut_off_above_lines_and_more.py +0 -42
  22. endoreg_db/migrations/0020_rename_endoscopy_info_line_pdftype_endoscope_info_line.py +0 -18
  23. endoreg_db/migrations/0021_alter_pdftype_endoscope_info_line.py +0 -19
  24. endoreg_db/migrations/0022_alter_pdftype_endoscope_info_line.py +0 -19
  25. endoreg_db/migrations/0023_ttoquestionnaire_alter_pdftype_endoscope_info_line.py +0 -59
  26. endoreg_db/migrations/0024_remove_ttoquestionnaire_infections_and_more.py +0 -27
  27. endoreg_db/migrations/0025_event_alter_rawpdffile_file_patientevent.py +0 -42
  28. endoreg_db/migrations/0026_disease_diseaseclassification_and_more.py +0 -166
  29. endoreg_db/migrations/0027_labvalue_abbreviation_labvalue_default_normal_range_and_more.py +0 -38
  30. endoreg_db/migrations/0028_alter_unit_abbreviation.py +0 -18
  31. endoreg_db/migrations/0029_medicationintaketime_and_more.py +0 -75
  32. endoreg_db/migrations/0030_medicationindicationtype_and_more.py +0 -101
  33. endoreg_db/migrations/0031_rename_adapt_to_liver_function_medication_adapt_to_age_and_more.py +0 -38
  34. endoreg_db/migrations/0032_alter_medicationschedule_therapy_duration_d.py +0 -18
  35. endoreg_db/migrations/0033_medicationindication_sources.py +0 -18
  36. endoreg_db/migrations/0034_alter_rawpdffile_file.py +0 -20
  37. endoreg_db/migrations/0035_alter_medicationindication_sources.py +0 -18
  38. endoreg_db/migrations/0036_alter_rawpdffile_file.py +0 -20
  39. endoreg_db/migrations/0037_alter_medicationindication_sources.py +0 -18
  40. endoreg_db/migrations/0038_emissionfactor_material_product_productgroup_and_more.py +0 -164
  41. endoreg_db/migrations/0039_referenceproduct_name.py +0 -19
  42. endoreg_db/migrations/0040_quizanswertype_quizquestiontype_quizquestion_and_more.py +0 -50
  43. endoreg_db/migrations/0041_gender_patientmedication_medication_indication_and_more.py +0 -40
  44. endoreg_db/migrations/0042_casetemplateruletype_casetemplaterulevalue_and_more.py +0 -74
  45. endoreg_db/migrations/0043_casetemplatetype_name_de_casetemplatetype_name_en.py +0 -23
  46. endoreg_db/migrations/0044_casetemplateruletype_name_de_and_more.py +0 -23
  47. endoreg_db/migrations/0045_casetemplaterulevalue_value_type.py +0 -19
  48. endoreg_db/migrations/0046_casetemplaterulevalue_target_field.py +0 -18
  49. endoreg_db/migrations/0047_casetemplaterule_target_model.py +0 -18
  50. endoreg_db/migrations/0048_remove_casetemplaterule_chained_rules_and_more.py +0 -22
  51. endoreg_db/migrations/0049_remove_casetemplaterule_rule_values.py +0 -17
  52. endoreg_db/migrations/0050_casetemplaterule_rule_values.py +0 -18
  53. endoreg_db/migrations/0051_remove_casetemplaterule_calling_rules_and_more.py +0 -27
  54. endoreg_db/migrations/0052_rename_case_template_type_casetemplate_template_type.py +0 -18
  55. endoreg_db/migrations/0053_patientlabsampletype_patientlabsample_and_more.py +0 -38
  56. endoreg_db/migrations/0054_multiplecategoricalvaluedistribution_and_more.py +0 -69
  57. endoreg_db/migrations/0055_remove_casetemplaterule_rule_values_and_more.py +0 -59
  58. endoreg_db/migrations/0056_datevaluedistribution_and_more.py +0 -32
  59. endoreg_db/migrations/0057_remove_datevaluedistribution_max_date_and_more.py +0 -72
  60. endoreg_db/migrations/0058_datevaluedistribution_description_and_more.py +0 -28
  61. endoreg_db/migrations/0059_casetemplaterule_rule_values.py +0 -18
  62. endoreg_db/migrations/0060_labvalue__default_date_value_distribution_and_more.py +0 -44
  63. endoreg_db/migrations/0061_remove_patientlabvalue_date_patientlabvalue_datetime.py +0 -24
  64. endoreg_db/migrations/0062_labvalue_numeric_precision.py +0 -18
  65. endoreg_db/migrations/0063_alter_labvalue_numeric_precision.py +0 -18
  66. endoreg_db/migrations/0064_casetemplaterule_extra_parameters_and_more.py +0 -23
  67. endoreg_db/migrations/0065_rename__date_value_distribution_casetemplaterule_date_value_distribution_and_more.py +0 -58
  68. endoreg_db/migrations/0066_alter_patientlabvalue_patient_and_more.py +0 -29
  69. endoreg_db/migrations/0067_alter_medicationindication_indication_type.py +0 -19
  70. endoreg_db/migrations/0068_networkdevicetype_networkdevicetypemanager_and_more.py +0 -57
  71. endoreg_db/migrations/0069_delete_networkdevicetypemanager_networkdevice_online.py +0 -21
  72. endoreg_db/migrations/0070_logtype_alter_rawpdffile_file_networkdevicelogentry_and_more.py +0 -71
  73. endoreg_db/migrations/0071_aglservicelogentry.py +0 -33
  74. endoreg_db/migrations/0072_alter_rawpdffile_file.py +0 -20
  75. endoreg_db/migrations/0073_aglservicelogentry_device_and_more.py +0 -36
  76. {endoreg_db-0.3.12.dist-info → endoreg_db-0.4.0.dist-info}/LICENSE +0 -0
  77. {endoreg_db-0.3.12.dist-info → endoreg_db-0.4.0.dist-info}/WHEEL +0 -0
@@ -1,6 +1,8 @@
1
- # Generated by Django 4.2.10 on 2024-02-13 22:19
1
+ # Generated by Django 4.2.15 on 2024-08-25 12:09
2
2
 
3
3
  from django.conf import settings
4
+ import django.core.files.storage
5
+ import django.core.validators
4
6
  from django.db import migrations, models
5
7
  import django.db.models.deletion
6
8
 
@@ -14,6 +16,65 @@ class Migration(migrations.Migration):
14
16
  ]
15
17
 
16
18
  operations = [
19
+ migrations.CreateModel(
20
+ name='AglService',
21
+ fields=[
22
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
23
+ ('name', models.CharField(max_length=255)),
24
+ ('description', models.CharField(max_length=255)),
25
+ ('online', models.BooleanField(default=False)),
26
+ ('created', models.DateTimeField(auto_now_add=True)),
27
+ ('updated', models.DateTimeField(auto_now=True)),
28
+ ('port', models.IntegerField(blank=True, null=True)),
29
+ ('protocol', models.CharField(blank=True, max_length=255, null=True)),
30
+ ('url', models.URLField(blank=True, null=True)),
31
+ ],
32
+ options={
33
+ 'ordering': ['name'],
34
+ },
35
+ ),
36
+ migrations.CreateModel(
37
+ name='CaseTemplateRuleType',
38
+ fields=[
39
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
40
+ ('name', models.CharField(max_length=255)),
41
+ ('name_de', models.CharField(max_length=255, null=True)),
42
+ ('name_en', models.CharField(max_length=255, null=True)),
43
+ ('description', models.TextField(blank=True, null=True)),
44
+ ],
45
+ ),
46
+ migrations.CreateModel(
47
+ name='CaseTemplateRuleValue',
48
+ fields=[
49
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
50
+ ('name', models.CharField(max_length=255)),
51
+ ('description', models.TextField(blank=True, null=True)),
52
+ ('fk_value', models.CharField(blank=True, max_length=255, null=True)),
53
+ ('numeric_value', models.FloatField(blank=True, null=True)),
54
+ ('text_value', models.CharField(blank=True, max_length=255, null=True)),
55
+ ],
56
+ ),
57
+ migrations.CreateModel(
58
+ name='CaseTemplateRuleValueType',
59
+ fields=[
60
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
61
+ ('name', models.CharField(max_length=255)),
62
+ ('name_de', models.CharField(max_length=255, null=True)),
63
+ ('name_en', models.CharField(max_length=255, null=True)),
64
+ ('description', models.TextField(blank=True, null=True)),
65
+ ('distribution_type', models.CharField(choices=[('single_categorical', 'single_categorical'), ('multiple_categorical', 'multiple_categorical'), ('numeric', 'numeric')], max_length=255)),
66
+ ],
67
+ ),
68
+ migrations.CreateModel(
69
+ name='CaseTemplateType',
70
+ fields=[
71
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
72
+ ('name', models.CharField(max_length=255)),
73
+ ('name_de', models.CharField(max_length=255, null=True)),
74
+ ('name_en', models.CharField(max_length=255, null=True)),
75
+ ('description', models.TextField(blank=True, null=True)),
76
+ ],
77
+ ),
17
78
  migrations.CreateModel(
18
79
  name='Center',
19
80
  fields=[
@@ -23,6 +84,68 @@ class Migration(migrations.Migration):
23
84
  ('name_en', models.CharField(blank=True, max_length=255, null=True)),
24
85
  ],
25
86
  ),
87
+ migrations.CreateModel(
88
+ name='DateValueDistribution',
89
+ fields=[
90
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
91
+ ('name', models.CharField(max_length=100)),
92
+ ('name_de', models.CharField(blank=True, max_length=100, null=True)),
93
+ ('name_en', models.CharField(blank=True, max_length=100, null=True)),
94
+ ('description', models.TextField(blank=True, null=True)),
95
+ ('distribution_type', models.CharField(choices=[('uniform', 'Uniform'), ('normal', 'Normal')], max_length=20)),
96
+ ('mode', models.CharField(choices=[('date', 'Date'), ('timedelta', 'Timedelta')], max_length=20)),
97
+ ('date_min', models.DateField(blank=True, null=True)),
98
+ ('date_max', models.DateField(blank=True, null=True)),
99
+ ('date_mean', models.DateField(blank=True, null=True)),
100
+ ('date_std_dev', models.IntegerField(blank=True, null=True)),
101
+ ('timedelta_days_min', models.IntegerField(blank=True, null=True)),
102
+ ('timedelta_days_max', models.IntegerField(blank=True, null=True)),
103
+ ('timedelta_days_mean', models.IntegerField(blank=True, null=True)),
104
+ ('timedelta_days_std_dev', models.IntegerField(blank=True, null=True)),
105
+ ],
106
+ options={
107
+ 'abstract': False,
108
+ },
109
+ ),
110
+ migrations.CreateModel(
111
+ name='Disease',
112
+ fields=[
113
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
114
+ ('name', models.CharField(max_length=255, unique=True)),
115
+ ('name_de', models.CharField(blank=True, max_length=255, null=True)),
116
+ ('name_en', models.CharField(blank=True, max_length=255, null=True)),
117
+ ],
118
+ ),
119
+ migrations.CreateModel(
120
+ name='DiseaseClassification',
121
+ fields=[
122
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
123
+ ('name', models.CharField(max_length=255, unique=True)),
124
+ ('name_de', models.CharField(blank=True, max_length=255, null=True)),
125
+ ('name_en', models.CharField(blank=True, max_length=255, null=True)),
126
+ ('disease', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.disease')),
127
+ ],
128
+ ),
129
+ migrations.CreateModel(
130
+ name='DiseaseClassificationChoice',
131
+ fields=[
132
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
133
+ ('name', models.CharField(max_length=255, unique=True)),
134
+ ('name_de', models.CharField(blank=True, max_length=255, null=True)),
135
+ ('name_en', models.CharField(blank=True, max_length=255, null=True)),
136
+ ('disease_classification', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.diseaseclassification')),
137
+ ],
138
+ ),
139
+ migrations.CreateModel(
140
+ name='EmissionFactor',
141
+ fields=[
142
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
143
+ ('name', models.CharField(max_length=255)),
144
+ ('name_de', models.CharField(max_length=255, null=True)),
145
+ ('name_en', models.CharField(max_length=255, null=True)),
146
+ ('value', models.FloatField()),
147
+ ],
148
+ ),
26
149
  migrations.CreateModel(
27
150
  name='Endoscope',
28
151
  fields=[
@@ -91,6 +214,16 @@ class Migration(migrations.Migration):
91
214
  ('endoscope_sn_height', models.IntegerField(blank=True, null=True)),
92
215
  ],
93
216
  ),
217
+ migrations.CreateModel(
218
+ name='Event',
219
+ fields=[
220
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
221
+ ('name', models.CharField(max_length=100, unique=True)),
222
+ ('name_de', models.CharField(blank=True, max_length=100, null=True)),
223
+ ('name_en', models.CharField(blank=True, max_length=100, null=True)),
224
+ ('description', models.TextField(blank=True, null=True)),
225
+ ],
226
+ ),
94
227
  migrations.CreateModel(
95
228
  name='Examination',
96
229
  fields=[
@@ -123,7 +256,6 @@ class Migration(migrations.Migration):
123
256
  ('first_name', models.CharField(max_length=255)),
124
257
  ('last_name', models.CharField(max_length=255)),
125
258
  ('dob', models.DateField(blank=True, null=True, verbose_name='Date of Birth')),
126
- ('gender', models.CharField(blank=True, choices=[('Male', 'Male'), ('Female', 'Female'), ('Other', 'Other')], max_length=10, null=True)),
127
259
  ('email', models.EmailField(blank=True, max_length=255, null=True)),
128
260
  ('phone', models.CharField(blank=True, max_length=255, null=True)),
129
261
  ('is_real_person', models.BooleanField(default=True)),
@@ -133,6 +265,27 @@ class Migration(migrations.Migration):
133
265
  'abstract': False,
134
266
  },
135
267
  ),
268
+ migrations.CreateModel(
269
+ name='FFMpegMeta',
270
+ fields=[
271
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
272
+ ('duration', models.FloatField(blank=True, null=True)),
273
+ ('width', models.IntegerField(blank=True, null=True)),
274
+ ('height', models.IntegerField(blank=True, null=True)),
275
+ ('frame_rate', models.FloatField(blank=True, null=True)),
276
+ ('video_codec', models.CharField(blank=True, max_length=50, null=True)),
277
+ ('audio_codec', models.CharField(blank=True, max_length=50, null=True)),
278
+ ('audio_channels', models.IntegerField(blank=True, null=True)),
279
+ ('audio_sample_rate', models.IntegerField(blank=True, null=True)),
280
+ ],
281
+ ),
282
+ migrations.CreateModel(
283
+ name='FirstName',
284
+ fields=[
285
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
286
+ ('name', models.CharField(max_length=255, unique=True)),
287
+ ],
288
+ ),
136
289
  migrations.CreateModel(
137
290
  name='Frame',
138
291
  fields=[
@@ -145,6 +298,17 @@ class Migration(migrations.Migration):
145
298
  'abstract': False,
146
299
  },
147
300
  ),
301
+ migrations.CreateModel(
302
+ name='Gender',
303
+ fields=[
304
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
305
+ ('name', models.CharField(max_length=255)),
306
+ ('name_de', models.CharField(max_length=255, null=True)),
307
+ ('name_en', models.CharField(max_length=255, null=True)),
308
+ ('abbreviation', models.CharField(max_length=255, null=True)),
309
+ ('description', models.TextField(blank=True, null=True)),
310
+ ],
311
+ ),
148
312
  migrations.CreateModel(
149
313
  name='InformationSource',
150
314
  fields=[
@@ -152,6 +316,9 @@ class Migration(migrations.Migration):
152
316
  ('name', models.CharField(max_length=100)),
153
317
  ('name_de', models.CharField(blank=True, max_length=100, null=True)),
154
318
  ('name_en', models.CharField(blank=True, max_length=100, null=True)),
319
+ ('url', models.URLField(blank=True, null=True)),
320
+ ('description', models.TextField(blank=True, null=True)),
321
+ ('date', models.DateField(blank=True, null=True)),
155
322
  ],
156
323
  ),
157
324
  migrations.CreateModel(
@@ -180,6 +347,29 @@ class Migration(migrations.Migration):
180
347
  ('description', models.TextField(blank=True, null=True)),
181
348
  ],
182
349
  ),
350
+ migrations.CreateModel(
351
+ name='LabValue',
352
+ fields=[
353
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
354
+ ('name', models.CharField(max_length=255, unique=True)),
355
+ ('name_de', models.CharField(blank=True, max_length=255, null=True)),
356
+ ('name_en', models.CharField(blank=True, max_length=255, null=True)),
357
+ ('abbreviation', models.CharField(blank=True, max_length=10, null=True)),
358
+ ('numeric_precision', models.IntegerField(default=3)),
359
+ ('default_normal_range', models.JSONField(blank=True, null=True)),
360
+ ('normal_range_age_dependent', models.BooleanField(default=False)),
361
+ ('normal_range_gender_dependent', models.BooleanField(default=False)),
362
+ ('normal_range_special_case', models.BooleanField(default=False)),
363
+ ('default_date_value_distribution', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='default_date_value_distribution', to='endoreg_db.datevaluedistribution')),
364
+ ],
365
+ ),
366
+ migrations.CreateModel(
367
+ name='LastName',
368
+ fields=[
369
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
370
+ ('name', models.CharField(max_length=255, unique=True)),
371
+ ],
372
+ ),
183
373
  migrations.CreateModel(
184
374
  name='LegacyImage',
185
375
  fields=[
@@ -210,54 +400,389 @@ class Migration(migrations.Migration):
210
400
  ('endoscopy_processor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.endoscopyprocessor')),
211
401
  ],
212
402
  options={
213
- 'abstract': False,
403
+ 'abstract': False,
404
+ },
405
+ ),
406
+ migrations.CreateModel(
407
+ name='LogType',
408
+ fields=[
409
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
410
+ ('name', models.CharField(max_length=255)),
411
+ ('description', models.CharField(max_length=255)),
412
+ ('created', models.DateTimeField(auto_now_add=True)),
413
+ ('updated', models.DateTimeField(auto_now=True)),
414
+ ],
415
+ options={
416
+ 'ordering': ['name'],
417
+ },
418
+ ),
419
+ migrations.CreateModel(
420
+ name='Material',
421
+ fields=[
422
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
423
+ ('name', models.CharField(max_length=255)),
424
+ ('name_de', models.CharField(max_length=255, null=True)),
425
+ ('name_en', models.CharField(max_length=255, null=True)),
426
+ ('emission_factor', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.emissionfactor')),
427
+ ],
428
+ ),
429
+ migrations.CreateModel(
430
+ name='Medication',
431
+ fields=[
432
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
433
+ ('name', models.CharField(max_length=255, unique=True)),
434
+ ('name_de', models.CharField(blank=True, max_length=255, null=True)),
435
+ ('name_en', models.CharField(blank=True, max_length=255, null=True)),
436
+ ('adapt_to_renal_function', models.BooleanField(default=False)),
437
+ ('adapt_to_hepatic_function', models.BooleanField(default=False)),
438
+ ('adapt_to_indication', models.BooleanField(default=False)),
439
+ ('adapt_to_age', models.BooleanField(default=False)),
440
+ ('adapt_to_weight', models.BooleanField(default=False)),
441
+ ('adapt_to_risk', models.BooleanField(default=False)),
442
+ ],
443
+ ),
444
+ migrations.CreateModel(
445
+ name='MedicationIndication',
446
+ fields=[
447
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
448
+ ('name', models.CharField(max_length=255, unique=True)),
449
+ ('classification_choices', models.ManyToManyField(to='endoreg_db.diseaseclassificationchoice')),
450
+ ('diseases', models.ManyToManyField(to='endoreg_db.disease')),
451
+ ('events', models.ManyToManyField(to='endoreg_db.event')),
452
+ ],
453
+ ),
454
+ migrations.CreateModel(
455
+ name='MedicationIndicationType',
456
+ fields=[
457
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
458
+ ('name', models.CharField(max_length=255, unique=True)),
459
+ ('name_de', models.CharField(blank=True, max_length=255, null=True)),
460
+ ('name_en', models.CharField(blank=True, max_length=255, null=True)),
461
+ ],
462
+ ),
463
+ migrations.CreateModel(
464
+ name='MedicationIntakeTime',
465
+ fields=[
466
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
467
+ ('name', models.CharField(max_length=255)),
468
+ ('name_de', models.CharField(blank=True, max_length=255, null=True)),
469
+ ('name_en', models.CharField(blank=True, max_length=255, null=True)),
470
+ ('repeats', models.CharField(default='daily', max_length=20)),
471
+ ('time', models.TimeField()),
472
+ ],
473
+ ),
474
+ migrations.CreateModel(
475
+ name='MedicationSchedule',
476
+ fields=[
477
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
478
+ ('name', models.CharField(max_length=255)),
479
+ ('name_de', models.CharField(blank=True, max_length=255, null=True)),
480
+ ('name_en', models.CharField(blank=True, max_length=255, null=True)),
481
+ ('description', models.TextField(blank=True, null=True)),
482
+ ('therapy_duration_d', models.FloatField(blank=True, null=True)),
483
+ ('dose', models.FloatField()),
484
+ ('intake_times', models.ManyToManyField(to='endoreg_db.medicationintaketime')),
485
+ ('medication', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.medication')),
486
+ ],
487
+ ),
488
+ migrations.CreateModel(
489
+ name='ModelMeta',
490
+ fields=[
491
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
492
+ ('name', models.CharField(max_length=255)),
493
+ ('version', models.CharField(max_length=255)),
494
+ ('weights', models.FileField(upload_to='weights/')),
495
+ ('description', models.TextField(blank=True, null=True)),
496
+ ('date_created', models.DateTimeField(auto_now_add=True)),
497
+ ('labelset', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='models', to='endoreg_db.labelset')),
498
+ ],
499
+ ),
500
+ migrations.CreateModel(
501
+ name='ModelType',
502
+ fields=[
503
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
504
+ ('name', models.CharField(max_length=255)),
505
+ ('description', models.TextField(blank=True, null=True)),
506
+ ],
507
+ ),
508
+ migrations.CreateModel(
509
+ name='MultipleCategoricalValueDistribution',
510
+ fields=[
511
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
512
+ ('name', models.CharField(max_length=100)),
513
+ ('categories', models.JSONField()),
514
+ ('min_count', models.IntegerField()),
515
+ ('max_count', models.IntegerField()),
516
+ ('count_distribution_type', models.CharField(choices=[('uniform', 'Uniform'), ('normal', 'Normal')], max_length=20)),
517
+ ('count_mean', models.FloatField(blank=True, null=True)),
518
+ ('count_std_dev', models.FloatField(blank=True, null=True)),
519
+ ],
520
+ options={
521
+ 'abstract': False,
522
+ },
523
+ ),
524
+ migrations.CreateModel(
525
+ name='NetworkDevice',
526
+ fields=[
527
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
528
+ ('name', models.CharField(max_length=255)),
529
+ ('ip', models.GenericIPAddressField(blank=True, null=True)),
530
+ ('description', models.CharField(max_length=255)),
531
+ ('online', models.BooleanField(default=False)),
532
+ ('created', models.DateTimeField(auto_now_add=True)),
533
+ ('updated', models.DateTimeField(auto_now=True)),
534
+ ],
535
+ options={
536
+ 'db_table': 'network_devices',
537
+ 'ordering': ['name'],
538
+ },
539
+ ),
540
+ migrations.CreateModel(
541
+ name='NetworkDeviceType',
542
+ fields=[
543
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
544
+ ('name', models.CharField(max_length=255)),
545
+ ('description', models.CharField(max_length=255)),
546
+ ('created', models.DateTimeField(auto_now_add=True)),
547
+ ('updated', models.DateTimeField(auto_now=True)),
548
+ ],
549
+ options={
550
+ 'db_table': 'network_device_types',
551
+ 'ordering': ['name'],
552
+ },
553
+ ),
554
+ migrations.CreateModel(
555
+ name='NumericValueDistribution',
556
+ fields=[
557
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
558
+ ('name', models.CharField(max_length=100)),
559
+ ('distribution_type', models.CharField(choices=[('uniform', 'Uniform'), ('normal', 'Normal'), ('skewed_normal', 'Skewed Normal')], max_length=20)),
560
+ ('min_value', models.FloatField()),
561
+ ('max_value', models.FloatField()),
562
+ ('mean', models.FloatField(blank=True, null=True)),
563
+ ('std_dev', models.FloatField(blank=True, null=True)),
564
+ ('skewness', models.FloatField(blank=True, null=True)),
565
+ ],
566
+ options={
567
+ 'abstract': False,
568
+ },
569
+ ),
570
+ migrations.CreateModel(
571
+ name='Patient',
572
+ fields=[
573
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
574
+ ('first_name', models.CharField(max_length=255)),
575
+ ('last_name', models.CharField(max_length=255)),
576
+ ('dob', models.DateField(blank=True, null=True, verbose_name='Date of Birth')),
577
+ ('email', models.EmailField(blank=True, max_length=255, null=True)),
578
+ ('phone', models.CharField(blank=True, max_length=255, null=True)),
579
+ ('is_real_person', models.BooleanField(default=True)),
580
+ ('center', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.center')),
581
+ ('gender', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.gender')),
582
+ ],
583
+ options={
584
+ 'abstract': False,
585
+ },
586
+ ),
587
+ migrations.CreateModel(
588
+ name='PatientLabSample',
589
+ fields=[
590
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
591
+ ('date', models.DateTimeField()),
592
+ ('patient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lab_samples', to='endoreg_db.patient')),
593
+ ],
594
+ ),
595
+ migrations.CreateModel(
596
+ name='PatientLabSampleType',
597
+ fields=[
598
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
599
+ ('name', models.CharField(max_length=255)),
600
+ ('name_de', models.CharField(max_length=255, null=True)),
601
+ ('name_en', models.CharField(max_length=255, null=True)),
602
+ ('description', models.TextField(blank=True, null=True)),
603
+ ],
604
+ ),
605
+ migrations.CreateModel(
606
+ name='PatientMedication',
607
+ fields=[
608
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
609
+ ('dosage', models.JSONField()),
610
+ ('active', models.BooleanField(default=True)),
611
+ ('medication_indication', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='patient_medications', to='endoreg_db.medicationindication')),
612
+ ('medication_schedules', models.ManyToManyField(to='endoreg_db.medicationschedule')),
613
+ ('patient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.patient')),
614
+ ],
615
+ options={
616
+ 'verbose_name': 'Patient Medication',
617
+ 'verbose_name_plural': 'Patient Medications',
618
+ },
619
+ ),
620
+ migrations.CreateModel(
621
+ name='PdfType',
622
+ fields=[
623
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
624
+ ('name', models.CharField(max_length=255)),
625
+ ],
626
+ ),
627
+ migrations.CreateModel(
628
+ name='Product',
629
+ fields=[
630
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
631
+ ('name', models.CharField(max_length=255)),
632
+ ('name_de', models.CharField(max_length=255, null=True)),
633
+ ('name_en', models.CharField(max_length=255, null=True)),
634
+ ],
635
+ ),
636
+ migrations.CreateModel(
637
+ name='ProductGroup',
638
+ fields=[
639
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
640
+ ('name', models.CharField(max_length=255)),
641
+ ('name_de', models.CharField(max_length=255, null=True)),
642
+ ('name_en', models.CharField(max_length=255, null=True)),
643
+ ],
644
+ ),
645
+ migrations.CreateModel(
646
+ name='Profession',
647
+ fields=[
648
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
649
+ ('name', models.CharField(max_length=100)),
650
+ ('name_de', models.CharField(blank=True, max_length=100, null=True)),
651
+ ('name_en', models.CharField(blank=True, max_length=100, null=True)),
652
+ ('description', models.TextField(blank=True, null=True)),
653
+ ],
654
+ ),
655
+ migrations.CreateModel(
656
+ name='QuizAnswerType',
657
+ fields=[
658
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
659
+ ('name', models.CharField(max_length=255)),
660
+ ('description', models.TextField(blank=True, null=True)),
661
+ ],
662
+ ),
663
+ migrations.CreateModel(
664
+ name='QuizQuestionType',
665
+ fields=[
666
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
667
+ ('name', models.CharField(max_length=255)),
668
+ ('description', models.TextField(blank=True, null=True)),
669
+ ],
670
+ ),
671
+ migrations.CreateModel(
672
+ name='ReportReaderFlag',
673
+ fields=[
674
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
675
+ ('name', models.CharField(max_length=255, unique=True)),
676
+ ('value', models.CharField(max_length=255)),
677
+ ],
678
+ ),
679
+ migrations.CreateModel(
680
+ name='Resource',
681
+ fields=[
682
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
683
+ ('name', models.CharField(max_length=255)),
684
+ ('name_de', models.CharField(max_length=255, null=True)),
685
+ ('name_en', models.CharField(max_length=255, null=True)),
686
+ ],
687
+ ),
688
+ migrations.CreateModel(
689
+ name='Rule',
690
+ fields=[
691
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
692
+ ('name', models.CharField(max_length=255, unique=True)),
693
+ ('name_de', models.CharField(blank=True, max_length=255, null=True)),
694
+ ('name_en', models.CharField(blank=True, max_length=255, null=True)),
695
+ ('description', models.TextField(blank=True, null=True)),
696
+ ('attribute_key', models.CharField(max_length=255)),
697
+ ],
698
+ options={
699
+ 'verbose_name': 'Rule',
700
+ 'verbose_name_plural': 'Rules',
214
701
  },
215
702
  ),
216
703
  migrations.CreateModel(
217
- name='ModelMeta',
704
+ name='RuleAttributeDType',
218
705
  fields=[
219
706
  ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
220
- ('name', models.CharField(max_length=255)),
221
- ('version', models.CharField(max_length=255)),
222
- ('weights', models.FileField(upload_to='weights/')),
223
- ('description', models.TextField(blank=True, null=True)),
224
- ('date_created', models.DateTimeField(auto_now_add=True)),
225
- ('labelset', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='models', to='endoreg_db.labelset')),
707
+ ('name', models.CharField(max_length=255, unique=True)),
708
+ ('name_de', models.CharField(blank=True, max_length=255, null=True)),
709
+ ('name_en', models.CharField(blank=True, max_length=255, null=True)),
226
710
  ],
227
711
  ),
228
712
  migrations.CreateModel(
229
- name='ModelType',
713
+ name='RuleType',
230
714
  fields=[
231
715
  ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
232
- ('name', models.CharField(max_length=255)),
233
- ('description', models.TextField(blank=True, null=True)),
716
+ ('name', models.CharField(max_length=255, unique=True)),
717
+ ('name_de', models.CharField(blank=True, max_length=255, null=True)),
718
+ ('name_en', models.CharField(blank=True, max_length=255, null=True)),
234
719
  ],
720
+ options={
721
+ 'verbose_name': 'Rule Type',
722
+ 'verbose_name_plural': 'Rule Types',
723
+ },
235
724
  ),
236
725
  migrations.CreateModel(
237
- name='Patient',
726
+ name='SensitiveMeta',
238
727
  fields=[
239
728
  ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
240
- ('first_name', models.CharField(max_length=255)),
241
- ('last_name', models.CharField(max_length=255)),
242
- ('dob', models.DateField(blank=True, null=True, verbose_name='Date of Birth')),
243
- ('gender', models.CharField(blank=True, choices=[('Male', 'Male'), ('Female', 'Female'), ('Other', 'Other')], max_length=10, null=True)),
244
- ('email', models.EmailField(blank=True, max_length=255, null=True)),
245
- ('phone', models.CharField(blank=True, max_length=255, null=True)),
246
- ('is_real_person', models.BooleanField(default=True)),
247
- ('center', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.center')),
729
+ ('examination_date', models.DateField(blank=True, null=True)),
730
+ ('patient_first_name', models.CharField(blank=True, max_length=255, null=True)),
731
+ ('patient_last_name', models.CharField(blank=True, max_length=255, null=True)),
732
+ ('patient_dob', models.DateField(blank=True, null=True)),
733
+ ('endoscope_type', models.CharField(blank=True, max_length=255, null=True)),
734
+ ('endoscope_sn', models.CharField(blank=True, max_length=255, null=True)),
735
+ ],
736
+ ),
737
+ migrations.CreateModel(
738
+ name='SingleCategoricalValueDistribution',
739
+ fields=[
740
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
741
+ ('name', models.CharField(max_length=100)),
742
+ ('categories', models.JSONField()),
248
743
  ],
249
744
  options={
250
745
  'abstract': False,
251
746
  },
252
747
  ),
253
748
  migrations.CreateModel(
254
- name='Profession',
749
+ name='TtoQuestionnaire',
255
750
  fields=[
256
751
  ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
257
- ('name', models.CharField(max_length=100)),
258
- ('name_de', models.CharField(blank=True, max_length=100, null=True)),
259
- ('name_en', models.CharField(blank=True, max_length=100, null=True)),
260
- ('description', models.TextField(blank=True, null=True)),
752
+ ('patient_name', models.CharField(max_length=255, verbose_name='Identifikation des Patienten (Name)')),
753
+ ('birth_date', models.DateField(verbose_name='Geburtsdatum')),
754
+ ('emergency_patient', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Notfallpatient/kürzlich untersuchter Patient (Verzicht auf Team-Time-Out möglich)')),
755
+ ('consent_signed', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Einverständniserklärung unterschrieben (Arzt, Patient)')),
756
+ ('documents_present', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Alle Dokumente liegen vor (Labor, Befunde, etc.)')),
757
+ ('communication_possible', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Kommunikation mit Patient möglich')),
758
+ ('work_incapacity_certificate', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Arbeitsunfähigkeitsbescheinigung')),
759
+ ('pregnancy', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Schwangerschaft')),
760
+ ('asa_classification_checked', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='ASA-Klassifikation/Komorbidität geprüft')),
761
+ ('previous_anesthesia_complications', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Komplikationen bei bisherigen Narkosen?')),
762
+ ('last_meal_over_6_hours_ago', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Zeitpunkt letzte Mahlzeit > 6 Stunden')),
763
+ ('allergies', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Allergien, welche?')),
764
+ ('outpatient_accompaniment_post_sedation', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Nur bei ambulanter Vorstellung: Begleitung nach Sedierung?')),
765
+ ('dental_prosthesis', models.BooleanField(default=False, verbose_name='Zahnprothese')),
766
+ ('glasses', models.BooleanField(default=False, verbose_name='Brille')),
767
+ ('implants', models.BooleanField(default=False, verbose_name='Implantate')),
768
+ ('hearing_aids', models.BooleanField(default=False, verbose_name='Hörgeräte')),
769
+ ('anticoagulants_ass', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Antikoagulation, ASS')),
770
+ ('blood_pressure_medication', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Blutdruckmedikamente')),
771
+ ('glaucoma', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Glaukom')),
772
+ ('metal_implants', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Metallimplantate')),
773
+ ('pacemaker_icd', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Herzschrittmacher/ICD')),
774
+ ('copd', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='COPD')),
775
+ ('liver_cirrhosis', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Leberzirrhose')),
776
+ ('ibd', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='CED (Chronisch entzündliche Darmerkrankungen)')),
777
+ ('radiation', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Bestrahlung')),
778
+ ('surgeries', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='OP´s')),
779
+ ('team_introduction', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Teamvorstellung mit Name und Aufgabe')),
780
+ ('instruments_available', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Notwendige Instrumente vorhanden?')),
781
+ ('monitoring_medications_equipment_checked', models.CharField(choices=[('yes', 'Ja'), ('no', 'Nein')], max_length=3, verbose_name='Monitoring, Medikamente, Equipment zum Atemwegsmanagement zur Verfügung und überprüft?')),
782
+ ('complete_documentation_inclusive_care_notes', models.TextField(verbose_name='Vollständige Dokumentation inklusive Hinweise für Nachsorge')),
783
+ ('notes', models.TextField(default='Keine Bemerkungen', verbose_name='Bemerkungen')),
784
+ ('specimens_secured', models.BooleanField(default=False, verbose_name='Histologische Proben gesichert')),
785
+ ('patient_condition_documented', models.TextField(verbose_name='Patientenzustand dokumentiert (je nach Ausgangszustand)')),
261
786
  ],
262
787
  ),
263
788
  migrations.CreateModel(
@@ -268,7 +793,7 @@ class Migration(migrations.Migration):
268
793
  ('name_de', models.CharField(blank=True, max_length=100, null=True)),
269
794
  ('name_en', models.CharField(blank=True, max_length=100, null=True)),
270
795
  ('description', models.CharField(blank=True, max_length=100, null=True)),
271
- ('abbreviation', models.CharField(blank=True, max_length=10, null=True)),
796
+ ('abbreviation', models.CharField(blank=True, max_length=25, null=True)),
272
797
  ],
273
798
  ),
274
799
  migrations.CreateModel(
@@ -296,6 +821,26 @@ class Migration(migrations.Migration):
296
821
  'abstract': False,
297
822
  },
298
823
  ),
824
+ migrations.CreateModel(
825
+ name='VideoImportMeta',
826
+ fields=[
827
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
828
+ ('video_anonymized', models.BooleanField(default=False)),
829
+ ('video_patient_data_detected', models.BooleanField(default=False)),
830
+ ('outside_detected', models.BooleanField(default=False)),
831
+ ('patient_data_removed', models.BooleanField(default=False)),
832
+ ('outside_removed', models.BooleanField(default=False)),
833
+ ],
834
+ ),
835
+ migrations.CreateModel(
836
+ name='Waste',
837
+ fields=[
838
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
839
+ ('name', models.CharField(max_length=255)),
840
+ ('name_de', models.CharField(max_length=255, null=True)),
841
+ ('name_en', models.CharField(max_length=255, null=True)),
842
+ ],
843
+ ),
299
844
  migrations.CreateModel(
300
845
  name='VideoPredictionMeta',
301
846
  fields=[
@@ -312,17 +857,14 @@ class Migration(migrations.Migration):
312
857
  },
313
858
  ),
314
859
  migrations.CreateModel(
315
- name='VideoImportMeta',
860
+ name='VideoMeta',
316
861
  fields=[
317
862
  ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
318
- ('video_anonymized', models.BooleanField(default=False)),
319
- ('video_patient_data_detected', models.BooleanField(default=False)),
320
- ('outside_detected', models.BooleanField(default=False)),
321
- ('patient_data_removed', models.BooleanField(default=False)),
322
- ('outside_removed', models.BooleanField(default=False)),
323
863
  ('center', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.center')),
324
864
  ('endoscope', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.endoscope')),
325
- ('processor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.endoscopyprocessor')),
865
+ ('ffmpeg_meta', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.ffmpegmeta')),
866
+ ('import_meta', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.videoimportmeta')),
867
+ ('processor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.endoscopyprocessor')),
326
868
  ],
327
869
  ),
328
870
  migrations.AddField(
@@ -335,6 +877,53 @@ class Migration(migrations.Migration):
335
877
  name='patient',
336
878
  field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.patient'),
337
879
  ),
880
+ migrations.CreateModel(
881
+ name='TransportRoute',
882
+ fields=[
883
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
884
+ ('distance', models.FloatField()),
885
+ ('name', models.CharField(max_length=255)),
886
+ ('name_de', models.CharField(max_length=255, null=True)),
887
+ ('name_en', models.CharField(max_length=255, null=True)),
888
+ ('emission_factor', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.emissionfactor')),
889
+ ('unit', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.unit')),
890
+ ],
891
+ ),
892
+ migrations.CreateModel(
893
+ name='Ruleset',
894
+ fields=[
895
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
896
+ ('name', models.CharField(max_length=255, unique=True)),
897
+ ('name_de', models.CharField(blank=True, max_length=255, null=True)),
898
+ ('name_en', models.CharField(blank=True, max_length=255, null=True)),
899
+ ('rules', models.ManyToManyField(to='endoreg_db.rule')),
900
+ ],
901
+ ),
902
+ migrations.AddField(
903
+ model_name='rule',
904
+ name='attribute_dtype',
905
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.ruleattributedtype'),
906
+ ),
907
+ migrations.AddField(
908
+ model_name='rule',
909
+ name='rule_type',
910
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.ruletype'),
911
+ ),
912
+ migrations.CreateModel(
913
+ name='ReportReaderConfig',
914
+ fields=[
915
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
916
+ ('locale', models.CharField(default='de_DE', max_length=10)),
917
+ ('text_date_format', models.CharField(default='%d.%m.%Y', max_length=10)),
918
+ ('cut_off_above', models.ManyToManyField(related_name='report_reader_configs_cut_off_above', to='endoreg_db.reportreaderflag')),
919
+ ('cut_off_below', models.ManyToManyField(related_name='report_reader_configs_cut_off_below', to='endoreg_db.reportreaderflag')),
920
+ ('endoscope_info_line_flag', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='report_reader_configs_endoscope_info_line', to='endoreg_db.reportreaderflag')),
921
+ ('examiner_info_line_flag', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='report_reader_configs_examiner_info_line', to='endoreg_db.reportreaderflag')),
922
+ ('first_names', models.ManyToManyField(related_name='report_reader_configs', to='endoreg_db.firstname')),
923
+ ('last_names', models.ManyToManyField(related_name='report_reader_configs', to='endoreg_db.lastname')),
924
+ ('patient_info_line_flag', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='report_reader_configs_patient_info_line', to='endoreg_db.reportreaderflag')),
925
+ ],
926
+ ),
338
927
  migrations.CreateModel(
339
928
  name='ReportFile',
340
929
  fields=[
@@ -351,6 +940,126 @@ class Migration(migrations.Migration):
351
940
  ('patient', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.patient')),
352
941
  ],
353
942
  ),
943
+ migrations.CreateModel(
944
+ name='ReferenceProduct',
945
+ fields=[
946
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
947
+ ('name', models.CharField(max_length=255)),
948
+ ('emission_factor_package', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='reference_product_package', to='endoreg_db.emissionfactor')),
949
+ ('emission_factor_product', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='reference_product_product', to='endoreg_db.emissionfactor')),
950
+ ('emission_factor_total', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.emissionfactor')),
951
+ ('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.product')),
952
+ ('product_group', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='reference_product', to='endoreg_db.productgroup')),
953
+ ],
954
+ ),
955
+ migrations.CreateModel(
956
+ name='RawVideoFile',
957
+ fields=[
958
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
959
+ ('uuid', models.UUIDField()),
960
+ ('file', models.FileField(upload_to='raw_data/')),
961
+ ('original_file_name', models.CharField(max_length=255)),
962
+ ('video_hash', models.CharField(max_length=255, unique=True)),
963
+ ('uploaded_at', models.DateTimeField(auto_now_add=True)),
964
+ ('state_frames_required', models.BooleanField(default=True)),
965
+ ('state_frames_extracted', models.BooleanField(default=False)),
966
+ ('state_initial_prediction_required', models.BooleanField(default=True)),
967
+ ('state_initial_prediction_completed', models.BooleanField(default=False)),
968
+ ('state_initial_prediction_import_required', models.BooleanField(default=True)),
969
+ ('state_initial_prediction_import_completed', models.BooleanField(default=False)),
970
+ ('state_ocr_required', models.BooleanField(default=True)),
971
+ ('state_ocr_completed', models.BooleanField(default=False)),
972
+ ('state_outside_validated', models.BooleanField(default=False)),
973
+ ('state_ocr_result_validated', models.BooleanField(default=False)),
974
+ ('state_sensitive_data_retrieved', models.BooleanField(default=False)),
975
+ ('state_histology_required', models.BooleanField(blank=True, null=True)),
976
+ ('state_histology_available', models.BooleanField(default=False)),
977
+ ('state_follow_up_intervention_required', models.BooleanField(blank=True, null=True)),
978
+ ('state_follow_up_intervention_available', models.BooleanField(default=False)),
979
+ ('state_dataset_complete', models.BooleanField(default=False)),
980
+ ('state_anonym_video_required', models.BooleanField(default=True)),
981
+ ('state_anonym_video_performed', models.BooleanField(default=False)),
982
+ ('state_original_reports_deleted', models.BooleanField(default=False)),
983
+ ('state_original_video_deleted', models.BooleanField(default=False)),
984
+ ('state_finalized', models.BooleanField(default=False)),
985
+ ('frame_dir', models.CharField(max_length=255)),
986
+ ('prediction_dir', models.CharField(max_length=255)),
987
+ ('center', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.center')),
988
+ ('processor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.endoscopyprocessor')),
989
+ ('sensitive_meta', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.sensitivemeta')),
990
+ ('video_meta', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.videometa')),
991
+ ],
992
+ ),
993
+ migrations.CreateModel(
994
+ name='RawPdfFile',
995
+ fields=[
996
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
997
+ ('file', models.FileField(storage=django.core.files.storage.FileSystemStorage(location='/home/agl-admin/agl-monitor/agl_monitor/agl_monitor/erc_data/raw_pdf'), upload_to='raw_pdf/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['pdf'])])),
998
+ ('pdf_hash', models.CharField(max_length=255, unique=True)),
999
+ ('state_report_processing_required', models.BooleanField(default=True)),
1000
+ ('state_report_processed', models.BooleanField(default=False)),
1001
+ ('text', models.TextField(blank=True, null=True)),
1002
+ ('anonymized_text', models.TextField(blank=True, null=True)),
1003
+ ('raw_meta', models.JSONField(blank=True, null=True)),
1004
+ ('created_at', models.DateTimeField(auto_now_add=True)),
1005
+ ('center', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.center')),
1006
+ ('pdf_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.pdftype')),
1007
+ ('sensitive_meta', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='raw_pdf_file', to='endoreg_db.sensitivemeta')),
1008
+ ],
1009
+ ),
1010
+ migrations.CreateModel(
1011
+ name='QuizQuestion',
1012
+ fields=[
1013
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1014
+ ('text', models.TextField()),
1015
+ ('description', models.TextField(blank=True, null=True)),
1016
+ ('question_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.quizquestiontype')),
1017
+ ],
1018
+ ),
1019
+ migrations.CreateModel(
1020
+ name='QuizAnswer',
1021
+ fields=[
1022
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1023
+ ('text_value', models.CharField(blank=True, max_length=255, null=True)),
1024
+ ('number_value', models.FloatField(blank=True, null=True)),
1025
+ ('last_updated', models.DateTimeField(auto_now=True)),
1026
+ ('answer_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.quizanswertype')),
1027
+ ('question', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.quizquestion')),
1028
+ ],
1029
+ ),
1030
+ migrations.CreateModel(
1031
+ name='ProductWeight',
1032
+ fields=[
1033
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1034
+ ('name', models.CharField(max_length=255, null=True)),
1035
+ ('measured', models.FloatField(null=True)),
1036
+ ('verified', models.FloatField(null=True)),
1037
+ ('manufacturer', models.FloatField(null=True)),
1038
+ ('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.product')),
1039
+ ('unit', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.unit')),
1040
+ ],
1041
+ ),
1042
+ migrations.CreateModel(
1043
+ name='ProductMaterial',
1044
+ fields=[
1045
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1046
+ ('component', models.CharField(max_length=255)),
1047
+ ('quantity', models.FloatField()),
1048
+ ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.material')),
1049
+ ('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='product_materials', to='endoreg_db.product')),
1050
+ ('unit', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.unit')),
1051
+ ],
1052
+ ),
1053
+ migrations.AddField(
1054
+ model_name='product',
1055
+ name='product_group',
1056
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.productgroup'),
1057
+ ),
1058
+ migrations.AddField(
1059
+ model_name='product',
1060
+ name='transport_route',
1061
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.transportroute'),
1062
+ ),
354
1063
  migrations.CreateModel(
355
1064
  name='PortalUserInfo',
356
1065
  fields=[
@@ -360,6 +1069,75 @@ class Migration(migrations.Migration):
360
1069
  ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
361
1070
  ],
362
1071
  ),
1072
+ migrations.AddField(
1073
+ model_name='pdftype',
1074
+ name='cut_off_above_lines',
1075
+ field=models.ManyToManyField(related_name='pdf_type_cut_off_above_lines', to='endoreg_db.reportreaderflag'),
1076
+ ),
1077
+ migrations.AddField(
1078
+ model_name='pdftype',
1079
+ name='cut_off_below_lines',
1080
+ field=models.ManyToManyField(related_name='pdf_type_cut_off_below_lines', to='endoreg_db.reportreaderflag'),
1081
+ ),
1082
+ migrations.AddField(
1083
+ model_name='pdftype',
1084
+ name='endoscope_info_line',
1085
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='pdf_type_endoscopy_info_line', to='endoreg_db.reportreaderflag'),
1086
+ ),
1087
+ migrations.AddField(
1088
+ model_name='pdftype',
1089
+ name='examiner_info_line',
1090
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='pdf_type_examiner_info_line', to='endoreg_db.reportreaderflag'),
1091
+ ),
1092
+ migrations.AddField(
1093
+ model_name='pdftype',
1094
+ name='patient_info_line',
1095
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='pdf_type_patient_info_line', to='endoreg_db.reportreaderflag'),
1096
+ ),
1097
+ migrations.CreateModel(
1098
+ name='PdfMeta',
1099
+ fields=[
1100
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1101
+ ('date', models.DateField()),
1102
+ ('time', models.TimeField()),
1103
+ ('pdf_hash', models.CharField(max_length=255, unique=True)),
1104
+ ('pdf_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.pdftype')),
1105
+ ],
1106
+ ),
1107
+ migrations.CreateModel(
1108
+ name='PatientMedicationSchedule',
1109
+ fields=[
1110
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1111
+ ('created_at', models.DateTimeField(auto_now_add=True)),
1112
+ ('updated_at', models.DateTimeField(auto_now=True)),
1113
+ ('medication', models.ManyToManyField(related_name='patient_medication_schedules', to='endoreg_db.patientmedication')),
1114
+ ('patient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.patient')),
1115
+ ],
1116
+ ),
1117
+ migrations.AddField(
1118
+ model_name='patientmedication',
1119
+ name='unit',
1120
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.unit'),
1121
+ ),
1122
+ migrations.CreateModel(
1123
+ name='PatientLabValue',
1124
+ fields=[
1125
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1126
+ ('value', models.FloatField(blank=True, null=True)),
1127
+ ('value_str', models.CharField(blank=True, max_length=255, null=True)),
1128
+ ('datetime', models.DateTimeField(auto_now_add=True)),
1129
+ ('normal_range', models.JSONField(default=dict)),
1130
+ ('lab_value', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.labvalue')),
1131
+ ('patient', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='lab_values', to='endoreg_db.patient')),
1132
+ ('sample', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='values', to='endoreg_db.patientlabsample')),
1133
+ ('unit', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.unit')),
1134
+ ],
1135
+ ),
1136
+ migrations.AddField(
1137
+ model_name='patientlabsample',
1138
+ name='sample_type',
1139
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.patientlabsampletype'),
1140
+ ),
363
1141
  migrations.CreateModel(
364
1142
  name='PatientExamination',
365
1143
  fields=[
@@ -375,11 +1153,83 @@ class Migration(migrations.Migration):
375
1153
  'ordering': ['patient', 'examination'],
376
1154
  },
377
1155
  ),
1156
+ migrations.CreateModel(
1157
+ name='PatientEvent',
1158
+ fields=[
1159
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1160
+ ('date_start', models.DateField()),
1161
+ ('date_end', models.DateField(blank=True, null=True)),
1162
+ ('description', models.TextField(blank=True, null=True)),
1163
+ ('last_update', models.DateTimeField(auto_now=True)),
1164
+ ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.event')),
1165
+ ('patient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.patient')),
1166
+ ],
1167
+ ),
1168
+ migrations.CreateModel(
1169
+ name='PatientDisease',
1170
+ fields=[
1171
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1172
+ ('start_date', models.DateField(blank=True, null=True)),
1173
+ ('end_date', models.DateField(blank=True, null=True)),
1174
+ ('last_update', models.DateTimeField(auto_now=True)),
1175
+ ('classification_choices', models.ManyToManyField(to='endoreg_db.diseaseclassificationchoice')),
1176
+ ('disease', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.disease')),
1177
+ ('patient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.patient')),
1178
+ ],
1179
+ ),
1180
+ migrations.CreateModel(
1181
+ name='NetworkDeviceLogEntry',
1182
+ fields=[
1183
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1184
+ ('timestamp', models.DateTimeField(auto_now_add=True)),
1185
+ ('ip_address', models.GenericIPAddressField(blank=True, null=True)),
1186
+ ('user_agent', models.CharField(blank=True, max_length=256, null=True)),
1187
+ ('message', models.TextField()),
1188
+ ('json_content', models.JSONField(blank=True, null=True)),
1189
+ ('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.networkdevice')),
1190
+ ('log_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.logtype')),
1191
+ ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
1192
+ ],
1193
+ options={
1194
+ 'verbose_name': 'Network Device Log Entry',
1195
+ 'verbose_name_plural': 'Network Device Log Entries',
1196
+ },
1197
+ ),
1198
+ migrations.AddField(
1199
+ model_name='networkdevice',
1200
+ name='device_type',
1201
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.networkdevicetype'),
1202
+ ),
378
1203
  migrations.AddField(
379
1204
  model_name='modelmeta',
380
1205
  name='type',
381
1206
  field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='models', to='endoreg_db.modeltype'),
382
1207
  ),
1208
+ migrations.AddField(
1209
+ model_name='medicationschedule',
1210
+ name='unit',
1211
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.unit'),
1212
+ ),
1213
+ migrations.AddField(
1214
+ model_name='medicationindication',
1215
+ name='indication_type',
1216
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='medication_indications', to='endoreg_db.medicationindicationtype'),
1217
+ ),
1218
+ migrations.AddField(
1219
+ model_name='medicationindication',
1220
+ name='medication_schedules',
1221
+ field=models.ManyToManyField(to='endoreg_db.medicationschedule'),
1222
+ ),
1223
+ migrations.AddField(
1224
+ model_name='medicationindication',
1225
+ name='sources',
1226
+ field=models.ManyToManyField(to='endoreg_db.informationsource'),
1227
+ ),
1228
+ migrations.AddField(
1229
+ model_name='medication',
1230
+ name='default_unit',
1231
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.unit'),
1232
+ ),
383
1233
  migrations.CreateModel(
384
1234
  name='LegacyVideoPredictionMeta',
385
1235
  fields=[
@@ -443,6 +1293,26 @@ class Migration(migrations.Migration):
443
1293
  'abstract': False,
444
1294
  },
445
1295
  ),
1296
+ migrations.AddField(
1297
+ model_name='labvalue',
1298
+ name='default_multiple_categorical_value_distribution',
1299
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='default_multiple_categorical_value_distribution', to='endoreg_db.multiplecategoricalvaluedistribution'),
1300
+ ),
1301
+ migrations.AddField(
1302
+ model_name='labvalue',
1303
+ name='default_numerical_value_distribution',
1304
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='default_numerical_value_distribution', to='endoreg_db.numericvaluedistribution'),
1305
+ ),
1306
+ migrations.AddField(
1307
+ model_name='labvalue',
1308
+ name='default_single_categorical_value_distribution',
1309
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='default_single_categorical_value_distribution', to='endoreg_db.singlecategoricalvaluedistribution'),
1310
+ ),
1311
+ migrations.AddField(
1312
+ model_name='labvalue',
1313
+ name='default_unit',
1314
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.unit'),
1315
+ ),
446
1316
  migrations.CreateModel(
447
1317
  name='LabelVideoSegment',
448
1318
  fields=[
@@ -496,6 +1366,11 @@ class Migration(migrations.Migration):
496
1366
  name='video',
497
1367
  field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='frames', to='endoreg_db.video'),
498
1368
  ),
1369
+ migrations.AddField(
1370
+ model_name='examiner',
1371
+ name='gender',
1372
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.gender'),
1373
+ ),
499
1374
  migrations.CreateModel(
500
1375
  name='ExaminationTimeType',
501
1376
  fields=[
@@ -533,6 +1408,92 @@ class Migration(migrations.Migration):
533
1408
  name='examination_types',
534
1409
  field=models.ManyToManyField(blank=True, to='endoreg_db.examinationtype'),
535
1410
  ),
1411
+ migrations.AddField(
1412
+ model_name='emissionfactor',
1413
+ name='unit',
1414
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.unit'),
1415
+ ),
1416
+ migrations.CreateModel(
1417
+ name='CenterWaste',
1418
+ fields=[
1419
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1420
+ ('year', models.IntegerField()),
1421
+ ('quantity', models.FloatField()),
1422
+ ('center', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.center')),
1423
+ ('emission_factor', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.emissionfactor')),
1424
+ ('unit', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.unit')),
1425
+ ('waste', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.waste')),
1426
+ ],
1427
+ ),
1428
+ migrations.CreateModel(
1429
+ name='CenterResource',
1430
+ fields=[
1431
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1432
+ ('name', models.CharField(max_length=255, null=True)),
1433
+ ('name_de', models.CharField(max_length=255, null=True)),
1434
+ ('name_en', models.CharField(max_length=255, null=True)),
1435
+ ('quantity', models.FloatField()),
1436
+ ('year', models.IntegerField()),
1437
+ ('center', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.center')),
1438
+ ('resource', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.resource')),
1439
+ ('transport_emission_factor', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='center_resource_transport_emission_factor', to='endoreg_db.emissionfactor')),
1440
+ ('unit', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.unit')),
1441
+ ('use_emission_factor', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='center_resource_use_emission_factor', to='endoreg_db.emissionfactor')),
1442
+ ],
1443
+ ),
1444
+ migrations.CreateModel(
1445
+ name='CenterProduct',
1446
+ fields=[
1447
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1448
+ ('date_used', models.DateField()),
1449
+ ('center', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.center')),
1450
+ ('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.product')),
1451
+ ],
1452
+ ),
1453
+ migrations.AddField(
1454
+ model_name='center',
1455
+ name='first_names',
1456
+ field=models.ManyToManyField(related_name='centers', to='endoreg_db.firstname'),
1457
+ ),
1458
+ migrations.AddField(
1459
+ model_name='center',
1460
+ name='last_names',
1461
+ field=models.ManyToManyField(related_name='centers', to='endoreg_db.lastname'),
1462
+ ),
1463
+ migrations.CreateModel(
1464
+ name='CaseTemplateRule',
1465
+ fields=[
1466
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1467
+ ('name', models.CharField(max_length=255)),
1468
+ ('name_de', models.CharField(max_length=255, null=True)),
1469
+ ('name_en', models.CharField(max_length=255, null=True)),
1470
+ ('description', models.TextField(blank=True, null=True)),
1471
+ ('parent_model', models.CharField(blank=True, max_length=255, null=True)),
1472
+ ('parent_field', models.CharField(blank=True, max_length=255, null=True)),
1473
+ ('target_field', models.CharField(blank=True, max_length=255, null=True)),
1474
+ ('target_model', models.CharField(blank=True, max_length=255, null=True)),
1475
+ ('rule_values', models.JSONField(blank=True, null=True)),
1476
+ ('extra_parameters', models.JSONField(blank=True, null=True)),
1477
+ ('chained_rules', models.ManyToManyField(related_name='calling_rules', to='endoreg_db.casetemplaterule')),
1478
+ ('date_value_distribution', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.datevaluedistribution')),
1479
+ ('multiple_categorical_value_distribution', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.multiplecategoricalvaluedistribution')),
1480
+ ('numerical_value_distribution', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.numericvaluedistribution')),
1481
+ ('rule_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.casetemplateruletype')),
1482
+ ('single_categorical_value_distribution', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.singlecategoricalvaluedistribution')),
1483
+ ('value_type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='endoreg_db.casetemplaterulevaluetype')),
1484
+ ],
1485
+ ),
1486
+ migrations.CreateModel(
1487
+ name='CaseTemplate',
1488
+ fields=[
1489
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1490
+ ('name', models.CharField(max_length=255, unique=True)),
1491
+ ('description', models.TextField(blank=True, null=True)),
1492
+ ('rules', models.ManyToManyField(to='endoreg_db.casetemplaterule')),
1493
+ ('secondary_rules', models.ManyToManyField(related_name='secondary_rules', to='endoreg_db.casetemplaterule')),
1494
+ ('template_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='case_templates', to='endoreg_db.casetemplatetype')),
1495
+ ],
1496
+ ),
536
1497
  migrations.CreateModel(
537
1498
  name='BinaryClassificationAnnotationTask',
538
1499
  fields=[
@@ -551,6 +1512,30 @@ class Migration(migrations.Migration):
551
1512
  'abstract': False,
552
1513
  },
553
1514
  ),
1515
+ migrations.CreateModel(
1516
+ name='AglServiceLogEntry',
1517
+ fields=[
1518
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
1519
+ ('timestamp', models.DateTimeField(auto_now_add=True)),
1520
+ ('ip_address', models.GenericIPAddressField(blank=True, null=True)),
1521
+ ('user_agent', models.CharField(blank=True, max_length=256, null=True)),
1522
+ ('message', models.TextField()),
1523
+ ('json_content', models.JSONField(blank=True, null=True)),
1524
+ ('device', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.networkdevice')),
1525
+ ('log_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.logtype')),
1526
+ ('service', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.aglservice')),
1527
+ ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
1528
+ ],
1529
+ options={
1530
+ 'verbose_name': 'AGL Service Log Entry',
1531
+ 'verbose_name_plural': 'AGL Service Log Entries',
1532
+ },
1533
+ ),
1534
+ migrations.AddField(
1535
+ model_name='aglservice',
1536
+ name='devices',
1537
+ field=models.ManyToManyField(related_name='services', to='endoreg_db.networkdevice'),
1538
+ ),
554
1539
  migrations.CreateModel(
555
1540
  name='ActiveModel',
556
1541
  fields=[