endoreg-db 0.3.1__py3-none-any.whl → 0.3.3__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.
- endoreg_db/data/__init__.py +3 -1
- endoreg_db/data/center/data.yaml +45 -0
- endoreg_db/data/pdf_type/data.yaml +28 -0
- endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +26 -0
- endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +19 -0
- endoreg_db/management/commands/load_base_db_data.py +12 -3
- endoreg_db/management/commands/load_center_data.py +3 -3
- endoreg_db/management/commands/load_pdf_type_data.py +61 -0
- endoreg_db/management/commands/load_report_reader_flag.py +46 -0
- endoreg_db/management/commands/reset_celery_schedule.py +9 -0
- endoreg_db/migrations/0013_rawpdffile.py +31 -0
- endoreg_db/migrations/0014_pdftype_alter_rawpdffile_file_pdfmeta.py +38 -0
- endoreg_db/migrations/0015_rename_report_processed_rawpdffile_state_report_processed_and_more.py +31 -0
- endoreg_db/migrations/0016_rawpdffile_state_report_processing_required.py +18 -0
- endoreg_db/migrations/0017_firstname_lastname_center_first_names_and_more.py +37 -0
- endoreg_db/migrations/0018_reportreaderflag_reportreaderconfig.py +37 -0
- endoreg_db/migrations/0019_pdftype_cut_off_above_lines_and_more.py +42 -0
- endoreg_db/migrations/0020_rename_endoscopy_info_line_pdftype_endoscope_info_line.py +18 -0
- endoreg_db/migrations/0021_alter_pdftype_endoscope_info_line.py +19 -0
- endoreg_db/migrations/0022_alter_pdftype_endoscope_info_line.py +19 -0
- endoreg_db/models/__init__.py +2 -0
- endoreg_db/models/center.py +6 -0
- endoreg_db/models/data_file/__init__.py +2 -3
- endoreg_db/models/data_file/import_classes/__init__.py +1 -0
- endoreg_db/models/data_file/import_classes/processing_functions/__init__.py +35 -0
- endoreg_db/models/data_file/import_classes/processing_functions/pdf.py +28 -0
- endoreg_db/models/data_file/import_classes/{processing_functions.py → processing_functions/video.py} +6 -7
- endoreg_db/models/data_file/import_classes/raw_pdf.py +185 -0
- endoreg_db/models/data_file/import_classes/raw_video.py +7 -5
- endoreg_db/models/data_file/metadata/__init__.py +2 -132
- endoreg_db/models/data_file/metadata/pdf_meta.py +70 -0
- endoreg_db/models/data_file/metadata/sensitive_meta.py +19 -1
- endoreg_db/models/data_file/metadata/video_meta.py +132 -0
- endoreg_db/models/data_file/report_file.py +1 -0
- endoreg_db/models/persons/__init__.py +3 -1
- endoreg_db/models/persons/first_name.py +18 -0
- endoreg_db/models/persons/last_name.py +20 -0
- endoreg_db/models/report_reader/__init__.py +2 -0
- endoreg_db/models/report_reader/report_reader_config.py +53 -0
- endoreg_db/models/report_reader/report_reader_flag.py +20 -0
- endoreg_db/utils/dataloader.py +172 -56
- endoreg_db/utils/hashs.py +18 -0
- {endoreg_db-0.3.1.dist-info → endoreg_db-0.3.3.dist-info}/METADATA +2 -1
- {endoreg_db-0.3.1.dist-info → endoreg_db-0.3.3.dist-info}/RECORD +46 -20
- {endoreg_db-0.3.1.dist-info → endoreg_db-0.3.3.dist-info}/LICENSE +0 -0
- {endoreg_db-0.3.1.dist-info → endoreg_db-0.3.3.dist-info}/WHEEL +0 -0
endoreg_db/data/__init__.py
CHANGED
|
@@ -11,4 +11,6 @@ MODEL_TYPE_DATA_DIR = DATA_DIR / "model_type"
|
|
|
11
11
|
ENDOSCOPY_PROCESSOR_DATA_DIR = DATA_DIR / "endoscopy_processor"
|
|
12
12
|
ENDOSCOPE_TYPE_DATA_DIR = DATA_DIR / "endoscope_type"
|
|
13
13
|
ACTIVE_MODEL_DATA_DIR = DATA_DIR / "active_model"
|
|
14
|
-
PROFESSION_DATA_DIR = DATA_DIR / "profession"
|
|
14
|
+
PROFESSION_DATA_DIR = DATA_DIR / "profession"
|
|
15
|
+
PDF_TYPE_DATA_DIR = DATA_DIR / "pdf_type"
|
|
16
|
+
REPORT_READER_FLAG_DATA_DIR = DATA_DIR / "report_reader_flag"
|
endoreg_db/data/center/data.yaml
CHANGED
|
@@ -5,3 +5,48 @@
|
|
|
5
5
|
name: "university_hospital_wuerzburg"
|
|
6
6
|
name_de: "Universitätsklinikum Würzburg"
|
|
7
7
|
name_en: "University Hospital Würzburg"
|
|
8
|
+
|
|
9
|
+
first_names: [
|
|
10
|
+
"Markus",
|
|
11
|
+
"Linhel",
|
|
12
|
+
"Rainer",
|
|
13
|
+
"Hans",
|
|
14
|
+
"Anja",
|
|
15
|
+
"Dorothea",
|
|
16
|
+
"Doro",
|
|
17
|
+
"Angelika",
|
|
18
|
+
"Sven",
|
|
19
|
+
"Theodor",
|
|
20
|
+
"Alexander",
|
|
21
|
+
"Mandy",
|
|
22
|
+
"Kathrin",
|
|
23
|
+
"Florian",
|
|
24
|
+
"Philip",
|
|
25
|
+
"Laura"
|
|
26
|
+
]
|
|
27
|
+
last_names: [
|
|
28
|
+
"Kozielski",
|
|
29
|
+
"Reiter",
|
|
30
|
+
"Purrer",
|
|
31
|
+
"Kudlich",
|
|
32
|
+
"Brand",
|
|
33
|
+
"Weich",
|
|
34
|
+
"Lux",
|
|
35
|
+
"Meining",
|
|
36
|
+
"Hann",
|
|
37
|
+
"Retzbach",
|
|
38
|
+
"Hose",
|
|
39
|
+
"Henniger",
|
|
40
|
+
"Weich",
|
|
41
|
+
"Dela Cruz",
|
|
42
|
+
"Wiesemann",
|
|
43
|
+
"Weise",
|
|
44
|
+
"Sodmann"
|
|
45
|
+
]
|
|
46
|
+
- model: endoreg_db.center
|
|
47
|
+
fields:
|
|
48
|
+
name: "rbk_stuttgart"
|
|
49
|
+
name_de: "Robert-Bosch-Krankenhaus Stuttgart"
|
|
50
|
+
name_en: "Robert Bosch Hospital Stuttgart"
|
|
51
|
+
first_names: [] # many to many; if foreign key, we would just have a string; strings represent "name" attribute
|
|
52
|
+
last_names: []
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
|
|
2
|
+
- model: endoreg_db.pdf_type
|
|
3
|
+
fields:
|
|
4
|
+
name: "ukw-endoscopy-examination-report-generic"
|
|
5
|
+
patient_info_line: "ukw-examination-generic-patient-info-line"
|
|
6
|
+
endoscope_info_line: "ukw-examination-generic-endoscope-info-line"
|
|
7
|
+
examiner_info_line: "ukw-examination-generic-examiner-info-line"
|
|
8
|
+
cut_off_above_lines: [
|
|
9
|
+
"ukw-examination-generic-endoscope-info-line",
|
|
10
|
+
"ukw-examination-generic-examiner-info-line"
|
|
11
|
+
]
|
|
12
|
+
cut_off_below_lines: [
|
|
13
|
+
"ukw-examination-generic-cut-off-below-line-01"
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
- model: endoreg_db.pdf_type
|
|
18
|
+
fields:
|
|
19
|
+
name: "ukw-endoscopy-histology-report-generic"
|
|
20
|
+
patient_info_line: "ukw-histology-generic-patient-info-line"
|
|
21
|
+
endoscope_info_line: "ukw-histology-generic-endoscope-info-line"
|
|
22
|
+
examiner_info_line: "ukw-histology-generic-examiner-info-line"
|
|
23
|
+
cut_off_above_lines: [
|
|
24
|
+
"ukw-histology-generic-patient-info-line"
|
|
25
|
+
]
|
|
26
|
+
cut_off_below_lines: [
|
|
27
|
+
"ukw-endoscopy-histology-cut-off-below-line-flag-01"
|
|
28
|
+
]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# yaml definitions for report reader flag objects
|
|
2
|
+
# PATIENT_INFO_LINE_FLAG = "Patient: "
|
|
3
|
+
# ENDOSCOPE_INFO_LINE_FLAG = "Gerät: "
|
|
4
|
+
# EXAMINER_INFO_LINE_FLAG = "1. Unters.:"
|
|
5
|
+
# CUT_OFF_BELOW_LINE_FLAG = "________________"
|
|
6
|
+
|
|
7
|
+
- model: endoreg_db.report_reader_flag
|
|
8
|
+
fields:
|
|
9
|
+
name: "ukw-examination-generic-patient-info-line"
|
|
10
|
+
value: "Patient: "
|
|
11
|
+
|
|
12
|
+
- model: endoreg_db.report_reader_flag
|
|
13
|
+
fields:
|
|
14
|
+
name: "ukw-examination-generic-endoscope-info-line"
|
|
15
|
+
value: "Gerät: "
|
|
16
|
+
|
|
17
|
+
- model: endoreg_db.report_reader_flag
|
|
18
|
+
fields:
|
|
19
|
+
name: "ukw-examination-generic-examiner-info-line"
|
|
20
|
+
value: "1. Unters.:"
|
|
21
|
+
|
|
22
|
+
- model: endoreg_db.report_reader_flag
|
|
23
|
+
fields:
|
|
24
|
+
name: "ukw-examination-generic-cut-off-below-line-01"
|
|
25
|
+
value: "________________"
|
|
26
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
- model: endoreg_db.report_reader_flag
|
|
2
|
+
fields:
|
|
3
|
+
name: "ukw-histology-generic-patient-info-line"
|
|
4
|
+
value: "Patient:"
|
|
5
|
+
|
|
6
|
+
- model: endoreg_db.report_reader_flag
|
|
7
|
+
fields:
|
|
8
|
+
name: "ukw-histology-generic-examiner-info-line"
|
|
9
|
+
value: "Eingang am:"
|
|
10
|
+
|
|
11
|
+
- model: endoreg_db.report_reader_flag
|
|
12
|
+
fields:
|
|
13
|
+
name: "ukw-histology-generic-cut-off-below-line-01"
|
|
14
|
+
value: "$$-3"
|
|
15
|
+
|
|
16
|
+
- model: endoreg_db.report_reader_flag
|
|
17
|
+
fields:
|
|
18
|
+
name: "ukw-histology-generic-endoscope-info-line"
|
|
19
|
+
value: ""
|
|
@@ -23,6 +23,14 @@ class Command(BaseCommand):
|
|
|
23
23
|
self.stdout.write(self.style.SUCCESS("Running load_user_groups..."))
|
|
24
24
|
call_command('load_user_groups', verbose=verbose)
|
|
25
25
|
|
|
26
|
+
# run the load_report_reader_flag command
|
|
27
|
+
self.stdout.write(self.style.SUCCESS("Running load_report_reader_flag..."))
|
|
28
|
+
call_command('load_report_reader_flag', verbose=verbose)
|
|
29
|
+
|
|
30
|
+
# Run the load_pdf_type_data command
|
|
31
|
+
self.stdout.write(self.style.SUCCESS("Running load_pdf_type_data..."))
|
|
32
|
+
call_command('load_pdf_type_data', verbose=verbose)
|
|
33
|
+
|
|
26
34
|
# Run the load_endoscopy_processor_data command
|
|
27
35
|
self.stdout.write(self.style.SUCCESS("Running load_endoscopy_processor_data..."))
|
|
28
36
|
call_command('load_endoscopy_processor_data', verbose=verbose)
|
|
@@ -55,8 +63,9 @@ class Command(BaseCommand):
|
|
|
55
63
|
self.stdout.write(self.style.SUCCESS("Running load_ai_model_data..."))
|
|
56
64
|
call_command('load_ai_model_data', verbose=verbose)
|
|
57
65
|
|
|
58
|
-
#
|
|
59
|
-
|
|
60
|
-
|
|
66
|
+
# Necessary? Migrate? FIXME
|
|
67
|
+
# # Run the load_active_model_data command
|
|
68
|
+
# self.stdout.write(self.style.SUCCESS("Running load_active_model_data..."))
|
|
69
|
+
# call_command('load_active_model_data', verbose=verbose)
|
|
61
70
|
|
|
62
71
|
self.stdout.write(self.style.SUCCESS("All data loading commands executed successfully."))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from django.core.management.base import BaseCommand
|
|
2
2
|
from ...utils import load_model_data_from_yaml
|
|
3
|
-
from ...models import Center
|
|
3
|
+
from ...models import Center, FirstName, LastName
|
|
4
4
|
from ...data import CENTER_DATA_DIR
|
|
5
5
|
|
|
6
6
|
SOURCE_DIR = CENTER_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
|
|
@@ -15,8 +15,8 @@ IMPORT_METADATA = {
|
|
|
15
15
|
MODEL_0.__name__: {
|
|
16
16
|
"dir": SOURCE_DIR, # e.g. "interventions"
|
|
17
17
|
"model": MODEL_0, # e.g. Intervention
|
|
18
|
-
"foreign_keys": [], # e.g. ["intervention_types"]
|
|
19
|
-
"foreign_key_models": [] # e.g. [InterventionType]
|
|
18
|
+
"foreign_keys": ["first_names", "last_names"], # e.g. ["intervention_types"]
|
|
19
|
+
"foreign_key_models": [FirstName, LastName] # e.g. [InterventionType]
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
from django.conf import settings
|
|
2
|
+
import os
|
|
3
|
+
from django.core.management.base import BaseCommand
|
|
4
|
+
|
|
5
|
+
import yaml
|
|
6
|
+
from ...utils import load_model_data_from_yaml
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
#### CUSTOMIZE
|
|
10
|
+
from ...models import PdfType, ReportReaderFlag
|
|
11
|
+
from ...data import PDF_TYPE_DATA_DIR
|
|
12
|
+
|
|
13
|
+
SOURCE_DIR = PDF_TYPE_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
|
|
14
|
+
|
|
15
|
+
MODEL_0 = PdfType
|
|
16
|
+
|
|
17
|
+
IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
|
|
18
|
+
MODEL_0.__name__,
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
IMPORT_METADATA = {
|
|
22
|
+
MODEL_0.__name__: {
|
|
23
|
+
"dir": SOURCE_DIR, # e.g. "interventions"
|
|
24
|
+
"model": MODEL_0, # e.g. Intervention
|
|
25
|
+
"foreign_keys": [
|
|
26
|
+
"patient_info_line",
|
|
27
|
+
"endoscope_info_line",
|
|
28
|
+
"examiner_info_line",
|
|
29
|
+
"cut_off_below_lines",
|
|
30
|
+
"cut_off_above_lines"
|
|
31
|
+
], # e.g. ["intervention_types"]
|
|
32
|
+
"foreign_key_models": [
|
|
33
|
+
ReportReaderFlag,
|
|
34
|
+
ReportReaderFlag,
|
|
35
|
+
ReportReaderFlag,
|
|
36
|
+
ReportReaderFlag,
|
|
37
|
+
ReportReaderFlag
|
|
38
|
+
] # e.g. [InterventionType]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
class Command(BaseCommand):
|
|
43
|
+
help = f"""Load all .yaml files in the {SOURCE_DIR} directory"""
|
|
44
|
+
|
|
45
|
+
def add_arguments(self, parser):
|
|
46
|
+
parser.add_argument(
|
|
47
|
+
'--verbose',
|
|
48
|
+
action='store_true',
|
|
49
|
+
help='Display verbose output',
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
def handle(self, *args, **options):
|
|
53
|
+
verbose = options['verbose']
|
|
54
|
+
for model_name in IMPORT_MODELS:
|
|
55
|
+
_metadata = IMPORT_METADATA[model_name]
|
|
56
|
+
load_model_data_from_yaml(
|
|
57
|
+
self,
|
|
58
|
+
model_name,
|
|
59
|
+
_metadata,
|
|
60
|
+
verbose
|
|
61
|
+
)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from django.conf import settings
|
|
2
|
+
import os
|
|
3
|
+
from django.core.management.base import BaseCommand
|
|
4
|
+
from ...models import ReportReaderFlag
|
|
5
|
+
import yaml
|
|
6
|
+
from ...utils import load_model_data_from_yaml
|
|
7
|
+
from ...data import REPORT_READER_FLAG_DATA_DIR
|
|
8
|
+
|
|
9
|
+
SOURCE_DIR = REPORT_READER_FLAG_DATA_DIR # e.g. settings.DATA_DIR_INTERVENTION
|
|
10
|
+
|
|
11
|
+
MODEL_0 = ReportReaderFlag
|
|
12
|
+
|
|
13
|
+
IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
|
|
14
|
+
MODEL_0.__name__,
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
IMPORT_METADATA = {
|
|
18
|
+
MODEL_0.__name__: {
|
|
19
|
+
"dir": SOURCE_DIR, # e.g. "interventions"
|
|
20
|
+
"model": MODEL_0, # e.g. Intervention
|
|
21
|
+
"foreign_keys": [], # e.g. ["intervention_types"]
|
|
22
|
+
"foreign_key_models": [] # e.g. [InterventionType]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
class Command(BaseCommand):
|
|
27
|
+
help = """Load all .yaml files in the data/intervention directory
|
|
28
|
+
into the Intervention and InterventionType model"""
|
|
29
|
+
|
|
30
|
+
def add_arguments(self, parser):
|
|
31
|
+
parser.add_argument(
|
|
32
|
+
'--verbose',
|
|
33
|
+
action='store_true',
|
|
34
|
+
help='Display verbose output',
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
def handle(self, *args, **options):
|
|
38
|
+
verbose = options['verbose']
|
|
39
|
+
for model_name in IMPORT_MODELS:
|
|
40
|
+
_metadata = IMPORT_METADATA[model_name]
|
|
41
|
+
load_model_data_from_yaml(
|
|
42
|
+
self,
|
|
43
|
+
model_name,
|
|
44
|
+
_metadata,
|
|
45
|
+
verbose
|
|
46
|
+
)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from django.core.management.base import BaseCommand
|
|
2
|
+
from django_celery_beat.models import PeriodicTask
|
|
3
|
+
|
|
4
|
+
class Command(BaseCommand):
|
|
5
|
+
help = 'Deletes all periodic tasks from the database to reset the schedule'
|
|
6
|
+
|
|
7
|
+
def handle(self, *args, **kwargs):
|
|
8
|
+
PeriodicTask.objects.all().delete()
|
|
9
|
+
self.stdout.write(self.style.SUCCESS('Successfully deleted all periodic tasks.'))
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Generated by Django 4.2.11 on 2024-03-23 15:39
|
|
2
|
+
|
|
3
|
+
import django.core.files.storage
|
|
4
|
+
import django.core.validators
|
|
5
|
+
from django.db import migrations, models
|
|
6
|
+
import django.db.models.deletion
|
|
7
|
+
import pathlib
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Migration(migrations.Migration):
|
|
11
|
+
|
|
12
|
+
dependencies = [
|
|
13
|
+
('endoreg_db', '0012_rawvideofile_prediction_dir_and_more'),
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
operations = [
|
|
17
|
+
migrations.CreateModel(
|
|
18
|
+
name='RawPdfFile',
|
|
19
|
+
fields=[
|
|
20
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
21
|
+
('file', models.FileField(storage=django.core.files.storage.FileSystemStorage(location=pathlib.PurePosixPath('/mnt/hdd-sensitive/Pseudo/import/report')), upload_to='raw_pdf/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['pdf'])])),
|
|
22
|
+
('pdf_hash', models.CharField(max_length=255, unique=True)),
|
|
23
|
+
('report_processed', models.BooleanField(default=False)),
|
|
24
|
+
('text', models.TextField(blank=True, null=True)),
|
|
25
|
+
('anonymized_text', models.TextField(blank=True, null=True)),
|
|
26
|
+
('raw_meta', models.JSONField(blank=True, null=True)),
|
|
27
|
+
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
28
|
+
('sensitive_meta', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='raw_pdf_file', to='endoreg_db.sensitivemeta')),
|
|
29
|
+
],
|
|
30
|
+
),
|
|
31
|
+
]
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Generated by Django 4.2.11 on 2024-03-23 16:45
|
|
2
|
+
|
|
3
|
+
import django.core.files.storage
|
|
4
|
+
import django.core.validators
|
|
5
|
+
from django.db import migrations, models
|
|
6
|
+
import django.db.models.deletion
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class Migration(migrations.Migration):
|
|
10
|
+
|
|
11
|
+
dependencies = [
|
|
12
|
+
('endoreg_db', '0013_rawpdffile'),
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
operations = [
|
|
16
|
+
migrations.CreateModel(
|
|
17
|
+
name='PdfType',
|
|
18
|
+
fields=[
|
|
19
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
20
|
+
('name', models.CharField(max_length=255)),
|
|
21
|
+
],
|
|
22
|
+
),
|
|
23
|
+
migrations.AlterField(
|
|
24
|
+
model_name='rawpdffile',
|
|
25
|
+
name='file',
|
|
26
|
+
field=models.FileField(storage=django.core.files.storage.FileSystemStorage(location='/mnt/hdd-sensitive/Pseudo/import/pdf'), upload_to='raw_pdf/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['pdf'])]),
|
|
27
|
+
),
|
|
28
|
+
migrations.CreateModel(
|
|
29
|
+
name='PdfMeta',
|
|
30
|
+
fields=[
|
|
31
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
32
|
+
('date', models.DateField()),
|
|
33
|
+
('time', models.TimeField()),
|
|
34
|
+
('pdf_hash', models.CharField(max_length=255, unique=True)),
|
|
35
|
+
('pdf_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.pdftype')),
|
|
36
|
+
],
|
|
37
|
+
),
|
|
38
|
+
]
|
endoreg_db/migrations/0015_rename_report_processed_rawpdffile_state_report_processed_and_more.py
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Generated by Django 4.2.11 on 2024-03-24 09:20
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
import django.db.models.deletion
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
dependencies = [
|
|
10
|
+
('endoreg_db', '0014_pdftype_alter_rawpdffile_file_pdfmeta'),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.RenameField(
|
|
15
|
+
model_name='rawpdffile',
|
|
16
|
+
old_name='report_processed',
|
|
17
|
+
new_name='state_report_processed',
|
|
18
|
+
),
|
|
19
|
+
migrations.AddField(
|
|
20
|
+
model_name='rawpdffile',
|
|
21
|
+
name='center',
|
|
22
|
+
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.center'),
|
|
23
|
+
preserve_default=False,
|
|
24
|
+
),
|
|
25
|
+
migrations.AddField(
|
|
26
|
+
model_name='rawpdffile',
|
|
27
|
+
name='pdf_type',
|
|
28
|
+
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.pdftype'),
|
|
29
|
+
preserve_default=False,
|
|
30
|
+
),
|
|
31
|
+
]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Generated by Django 4.2.11 on 2024-03-24 10:09
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('endoreg_db', '0015_rename_report_processed_rawpdffile_state_report_processed_and_more'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AddField(
|
|
14
|
+
model_name='rawpdffile',
|
|
15
|
+
name='state_report_processing_required',
|
|
16
|
+
field=models.BooleanField(default=True),
|
|
17
|
+
),
|
|
18
|
+
]
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Generated by Django 4.2.11 on 2024-03-24 12:26
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('endoreg_db', '0016_rawpdffile_state_report_processing_required'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.CreateModel(
|
|
14
|
+
name='FirstName',
|
|
15
|
+
fields=[
|
|
16
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
17
|
+
('name', models.CharField(max_length=255, unique=True)),
|
|
18
|
+
],
|
|
19
|
+
),
|
|
20
|
+
migrations.CreateModel(
|
|
21
|
+
name='LastName',
|
|
22
|
+
fields=[
|
|
23
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
24
|
+
('name', models.CharField(max_length=255, unique=True)),
|
|
25
|
+
],
|
|
26
|
+
),
|
|
27
|
+
migrations.AddField(
|
|
28
|
+
model_name='center',
|
|
29
|
+
name='first_names',
|
|
30
|
+
field=models.ManyToManyField(related_name='centers', to='endoreg_db.firstname'),
|
|
31
|
+
),
|
|
32
|
+
migrations.AddField(
|
|
33
|
+
model_name='center',
|
|
34
|
+
name='last_names',
|
|
35
|
+
field=models.ManyToManyField(related_name='centers', to='endoreg_db.lastname'),
|
|
36
|
+
),
|
|
37
|
+
]
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Generated by Django 4.2.11 on 2024-03-24 14:13
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
import django.db.models.deletion
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
dependencies = [
|
|
10
|
+
('endoreg_db', '0017_firstname_lastname_center_first_names_and_more'),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.CreateModel(
|
|
15
|
+
name='ReportReaderFlag',
|
|
16
|
+
fields=[
|
|
17
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
18
|
+
('name', models.CharField(max_length=255, unique=True)),
|
|
19
|
+
('value', models.CharField(max_length=255)),
|
|
20
|
+
],
|
|
21
|
+
),
|
|
22
|
+
migrations.CreateModel(
|
|
23
|
+
name='ReportReaderConfig',
|
|
24
|
+
fields=[
|
|
25
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
26
|
+
('locale', models.CharField(default='de_DE', max_length=10)),
|
|
27
|
+
('text_date_format', models.CharField(default='%d.%m.%Y', max_length=10)),
|
|
28
|
+
('cut_off_above', models.ManyToManyField(related_name='report_reader_configs_cut_off_above', to='endoreg_db.reportreaderflag')),
|
|
29
|
+
('cut_off_below', models.ManyToManyField(related_name='report_reader_configs_cut_off_below', to='endoreg_db.reportreaderflag')),
|
|
30
|
+
('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')),
|
|
31
|
+
('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')),
|
|
32
|
+
('first_names', models.ManyToManyField(related_name='report_reader_configs', to='endoreg_db.firstname')),
|
|
33
|
+
('last_names', models.ManyToManyField(related_name='report_reader_configs', to='endoreg_db.lastname')),
|
|
34
|
+
('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')),
|
|
35
|
+
],
|
|
36
|
+
),
|
|
37
|
+
]
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Generated by Django 4.2.11 on 2024-03-24 14:57
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
import django.db.models.deletion
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
dependencies = [
|
|
10
|
+
('endoreg_db', '0018_reportreaderflag_reportreaderconfig'),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AddField(
|
|
15
|
+
model_name='pdftype',
|
|
16
|
+
name='cut_off_above_lines',
|
|
17
|
+
field=models.ManyToManyField(related_name='pdf_type_cut_off_above_lines', to='endoreg_db.reportreaderflag'),
|
|
18
|
+
),
|
|
19
|
+
migrations.AddField(
|
|
20
|
+
model_name='pdftype',
|
|
21
|
+
name='cut_off_below_lines',
|
|
22
|
+
field=models.ManyToManyField(related_name='pdf_type_cut_off_below_lines', to='endoreg_db.reportreaderflag'),
|
|
23
|
+
),
|
|
24
|
+
migrations.AddField(
|
|
25
|
+
model_name='pdftype',
|
|
26
|
+
name='endoscopy_info_line',
|
|
27
|
+
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='pdf_type_endoscopy_info_line', to='endoreg_db.reportreaderflag'),
|
|
28
|
+
preserve_default=False,
|
|
29
|
+
),
|
|
30
|
+
migrations.AddField(
|
|
31
|
+
model_name='pdftype',
|
|
32
|
+
name='examiner_info_line',
|
|
33
|
+
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='pdf_type_examiner_info_line', to='endoreg_db.reportreaderflag'),
|
|
34
|
+
preserve_default=False,
|
|
35
|
+
),
|
|
36
|
+
migrations.AddField(
|
|
37
|
+
model_name='pdftype',
|
|
38
|
+
name='patient_info_line',
|
|
39
|
+
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='pdf_type_patient_info_line', to='endoreg_db.reportreaderflag'),
|
|
40
|
+
preserve_default=False,
|
|
41
|
+
),
|
|
42
|
+
]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Generated by Django 4.2.11 on 2024-03-24 15:32
|
|
2
|
+
|
|
3
|
+
from django.db import migrations
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('endoreg_db', '0019_pdftype_cut_off_above_lines_and_more'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.RenameField(
|
|
14
|
+
model_name='pdftype',
|
|
15
|
+
old_name='endoscopy_info_line',
|
|
16
|
+
new_name='endoscope_info_line',
|
|
17
|
+
),
|
|
18
|
+
]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Generated by Django 4.2.11 on 2024-03-24 19:02
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
import django.db.models.deletion
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
dependencies = [
|
|
10
|
+
('endoreg_db', '0020_rename_endoscopy_info_line_pdftype_endoscope_info_line'),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AlterField(
|
|
15
|
+
model_name='pdftype',
|
|
16
|
+
name='endoscope_info_line',
|
|
17
|
+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='pdf_type_endoscopy_info_line', to='endoreg_db.reportreaderflag'),
|
|
18
|
+
),
|
|
19
|
+
]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Generated by Django 4.2.11 on 2024-03-24 20:27
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
import django.db.models.deletion
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
dependencies = [
|
|
10
|
+
('endoreg_db', '0021_alter_pdftype_endoscope_info_line'),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AlterField(
|
|
15
|
+
model_name='pdftype',
|
|
16
|
+
name='endoscope_info_line',
|
|
17
|
+
field=models.ForeignKey(default='', on_delete=django.db.models.deletion.CASCADE, related_name='pdf_type_endoscopy_info_line', to='endoreg_db.reportreaderflag'),
|
|
18
|
+
),
|
|
19
|
+
]
|
endoreg_db/models/__init__.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from .unit import Unit
|
|
2
2
|
from .information_source import InformationSource
|
|
3
3
|
from .center import Center
|
|
4
|
+
from .report_reader import ReportReaderConfig, ReportReaderFlag
|
|
4
5
|
from .persons import (
|
|
5
6
|
Person,
|
|
6
7
|
Patient,
|
|
@@ -9,6 +10,7 @@ from .persons import (
|
|
|
9
10
|
ExaminerSerializer,
|
|
10
11
|
PortalUserInfo,
|
|
11
12
|
Profession,
|
|
13
|
+
FirstName, LastName
|
|
12
14
|
)
|
|
13
15
|
|
|
14
16
|
from .examination import (
|
endoreg_db/models/center.py
CHANGED
|
@@ -12,6 +12,12 @@ class Center(models.Model):
|
|
|
12
12
|
name_de = models.CharField(max_length=255, blank=True, null=True)
|
|
13
13
|
name_en = models.CharField(max_length=255, blank=True, null=True)
|
|
14
14
|
|
|
15
|
+
first_names = models.ManyToManyField(
|
|
16
|
+
'FirstName',
|
|
17
|
+
related_name='centers',
|
|
18
|
+
)
|
|
19
|
+
last_names = models.ManyToManyField('LastName', related_name='centers')
|
|
20
|
+
|
|
15
21
|
def natural_key(self):
|
|
16
22
|
return (self.name,)
|
|
17
23
|
|
|
@@ -2,6 +2,5 @@ from .frame import Frame, LegacyFrame
|
|
|
2
2
|
from .report_file import ReportFile
|
|
3
3
|
from .video import Video, LegacyVideo, VideoImportMeta
|
|
4
4
|
from .video_segment import LegacyLabelVideoSegment, LabelVideoSegment
|
|
5
|
-
from .metadata import
|
|
6
|
-
|
|
7
|
-
from .import_classes import RawVideoFile
|
|
5
|
+
from .metadata import *
|
|
6
|
+
from .import_classes import *
|