endoreg-db 0.8.5.2__py3-none-any.whl → 0.8.5.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.
Potentially problematic release.
This version of endoreg-db might be problematic. Click here for more details.
- endoreg_db/models/metadata/sensitive_meta_logic.py +68 -11
- {endoreg_db-0.8.5.2.dist-info → endoreg_db-0.8.5.3.dist-info}/METADATA +1 -1
- {endoreg_db-0.8.5.2.dist-info → endoreg_db-0.8.5.3.dist-info}/RECORD +5 -5
- {endoreg_db-0.8.5.2.dist-info → endoreg_db-0.8.5.3.dist-info}/WHEEL +0 -0
- {endoreg_db-0.8.5.2.dist-info → endoreg_db-0.8.5.3.dist-info}/licenses/LICENSE +0 -0
|
@@ -215,7 +215,7 @@ def create_pseudo_examiner_logic(instance: "SensitiveMeta") -> "Examiner":
|
|
|
215
215
|
)
|
|
216
216
|
# Ensure default center exists or handle appropriately
|
|
217
217
|
try:
|
|
218
|
-
default_center = Center.objects.
|
|
218
|
+
default_center = Center.objects.get(name="endoreg_db_demo")
|
|
219
219
|
except Center.DoesNotExist:
|
|
220
220
|
logger.error(
|
|
221
221
|
"Default center 'endoreg_db_demo' not found. Cannot create default examiner."
|
|
@@ -448,7 +448,50 @@ def perform_save_logic(instance: "SensitiveMeta") -> "Examiner":
|
|
|
448
448
|
def create_sensitive_meta_from_dict(
|
|
449
449
|
cls: Type["SensitiveMeta"], data: Dict[str, Any]
|
|
450
450
|
) -> "SensitiveMeta":
|
|
451
|
-
"""
|
|
451
|
+
"""
|
|
452
|
+
Create a SensitiveMeta instance from a dictionary.
|
|
453
|
+
|
|
454
|
+
**Center handling:**
|
|
455
|
+
This function accepts TWO ways to specify the center:
|
|
456
|
+
1. `center` (Center object) - Directly pass a Center instance
|
|
457
|
+
2. `center_name` (string) - Pass the center name as a string (will be resolved to Center object)
|
|
458
|
+
|
|
459
|
+
At least ONE of these must be provided.
|
|
460
|
+
|
|
461
|
+
**Example usage:**
|
|
462
|
+
```python
|
|
463
|
+
# Option 1: With Center object
|
|
464
|
+
data = {
|
|
465
|
+
"patient_first_name": "Patient",
|
|
466
|
+
"patient_last_name": "Unknown",
|
|
467
|
+
"patient_dob": date(1990, 1, 1),
|
|
468
|
+
"examination_date": date.today(),
|
|
469
|
+
"center": center_obj, # ← Center object
|
|
470
|
+
}
|
|
471
|
+
sm = SensitiveMeta.create_from_dict(data)
|
|
472
|
+
|
|
473
|
+
# Option 2: With center name string
|
|
474
|
+
data = {
|
|
475
|
+
"patient_first_name": "Patient",
|
|
476
|
+
"patient_last_name": "Unknown",
|
|
477
|
+
"patient_dob": date(1990, 1, 1),
|
|
478
|
+
"examination_date": date.today(),
|
|
479
|
+
"center_name": "university_hospital_wuerzburg", # ← String
|
|
480
|
+
}
|
|
481
|
+
sm = SensitiveMeta.create_from_dict(data)
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
Args:
|
|
485
|
+
cls: The SensitiveMeta class
|
|
486
|
+
data: Dictionary containing field values
|
|
487
|
+
|
|
488
|
+
Returns:
|
|
489
|
+
SensitiveMeta: The created instance
|
|
490
|
+
|
|
491
|
+
Raises:
|
|
492
|
+
ValueError: If neither center nor center_name is provided
|
|
493
|
+
ValueError: If center_name does not match any Center in database
|
|
494
|
+
"""
|
|
452
495
|
|
|
453
496
|
field_names = {
|
|
454
497
|
f.name
|
|
@@ -585,15 +628,29 @@ def create_sensitive_meta_from_dict(
|
|
|
585
628
|
)
|
|
586
629
|
selected_data.pop("examination_date", None)
|
|
587
630
|
|
|
588
|
-
# Handle Center
|
|
631
|
+
# Handle Center - accept both center_name (string) and center (object)
|
|
632
|
+
from ..administration import Center
|
|
633
|
+
|
|
634
|
+
center = data.get("center") # First try direct Center object
|
|
589
635
|
center_name = data.get("center_name")
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
center
|
|
636
|
+
|
|
637
|
+
if center is not None:
|
|
638
|
+
# Center object provided directly - validate it's a Center instance
|
|
639
|
+
if not isinstance(center, Center):
|
|
640
|
+
raise ValueError(f"'center' must be a Center instance, got {type(center)}")
|
|
594
641
|
selected_data["center"] = center
|
|
595
|
-
|
|
596
|
-
|
|
642
|
+
elif center_name:
|
|
643
|
+
# center_name string provided - resolve to Center object
|
|
644
|
+
try:
|
|
645
|
+
center = Center.objects.get(name=center_name)
|
|
646
|
+
selected_data["center"] = center
|
|
647
|
+
except Center.DoesNotExist:
|
|
648
|
+
raise ValueError(f"Center with name '{center_name}' does not exist.")
|
|
649
|
+
else:
|
|
650
|
+
# Neither center nor center_name provided
|
|
651
|
+
raise ValueError(
|
|
652
|
+
"Either 'center' (Center object) or 'center_name' (string) is required in data dictionary."
|
|
653
|
+
)
|
|
597
654
|
|
|
598
655
|
# Handle Names and Gender
|
|
599
656
|
first_name = selected_data.get("patient_first_name") or DEFAULT_UNKNOWN_NAME
|
|
@@ -712,9 +769,9 @@ def update_sensitive_meta_from_dict(
|
|
|
712
769
|
center_name = data.get("center_name")
|
|
713
770
|
if center_name:
|
|
714
771
|
try:
|
|
715
|
-
center = Center.objects.
|
|
772
|
+
center = Center.objects.get(name=center_name)
|
|
716
773
|
instance.center = center # Update center directly
|
|
717
|
-
except Center.DoesNotExist
|
|
774
|
+
except Center.DoesNotExist:
|
|
718
775
|
logger.warning(
|
|
719
776
|
f"Center '{center_name}' not found during update. Keeping existing center."
|
|
720
777
|
)
|
|
@@ -468,7 +468,7 @@ endoreg_db/models/metadata/model_meta.py,sha256=F_r-PTLeNi4J-4EaGCQkGIguhdl7Bwba
|
|
|
468
468
|
endoreg_db/models/metadata/model_meta_logic.py,sha256=vAbNDaoZygH8xOCulWlXoHoR1T0BSvr9kIloxjzhfjo,12533
|
|
469
469
|
endoreg_db/models/metadata/pdf_meta.py,sha256=BTmpSgqxmPKi0apcNjyrZAS4AFKCPXVdBd6VBeyyv6E,3174
|
|
470
470
|
endoreg_db/models/metadata/sensitive_meta.py,sha256=ekLHrW-b5uYcjfkRd0EW5ncx5ef8Bu-K6msDkpWCAbk,13034
|
|
471
|
-
endoreg_db/models/metadata/sensitive_meta_logic.py,sha256=
|
|
471
|
+
endoreg_db/models/metadata/sensitive_meta_logic.py,sha256=3JXkLpynNbvE3NVHpkhI8purvdHXpkeA-ut1chkLskE,42001
|
|
472
472
|
endoreg_db/models/metadata/video_meta.py,sha256=c6xWdLW3uNqJ5VPJXHCxXA3mbXw-b0uR54-TOS3qL2Q,14966
|
|
473
473
|
endoreg_db/models/metadata/video_prediction_logic.py,sha256=j5N82mHtiomeeIaf1HA65kT5d0htQfJmbI2bJb8mpxQ,7677
|
|
474
474
|
endoreg_db/models/metadata/video_prediction_meta.py,sha256=EyfctAAAVcW9L0gf76ZBc9-G8MLMcD-tc2kkjaaLH4w,10592
|
|
@@ -788,7 +788,7 @@ endoreg_db/views/video/video_meta.py,sha256=C1wBMTtQb_yzEUrhFGAy2UHEWMk_CbU75WXX
|
|
|
788
788
|
endoreg_db/views/video/video_processing_history.py,sha256=mhFuS8RG5GV8E-lTtuD0qrq-bIpnUFp8vy9aERfC-J8,770
|
|
789
789
|
endoreg_db/views/video/video_remove_frames.py,sha256=2FmvNrSPM0fUXiBxINN6vBUUDCqDlBkNcGR3WsLDgKo,1696
|
|
790
790
|
endoreg_db/views/video/video_stream.py,sha256=kLyuf0ORTmsLeYUQkTQ6iRYqlIQozWhMMR3Lhfe_trk,12148
|
|
791
|
-
endoreg_db-0.8.5.
|
|
792
|
-
endoreg_db-0.8.5.
|
|
793
|
-
endoreg_db-0.8.5.
|
|
794
|
-
endoreg_db-0.8.5.
|
|
791
|
+
endoreg_db-0.8.5.3.dist-info/METADATA,sha256=ojjMkB3oG0VaXKZODsX9LuGiObuhKCLfKdyFXGiGvTM,14719
|
|
792
|
+
endoreg_db-0.8.5.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
793
|
+
endoreg_db-0.8.5.3.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
794
|
+
endoreg_db-0.8.5.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|