i should do these more often
This commit is contained in:
+28
-30
@@ -4,7 +4,7 @@ from django.shortcuts import get_object_or_404
|
||||
from django.urls import reverse
|
||||
from ninja import ModelSchema, Router, Schema, Field
|
||||
|
||||
from django.db import transaction
|
||||
from django.db import transaction, IntegrityError
|
||||
|
||||
# from .decorators import user_is_author_or_rapid_checker
|
||||
from django.core.exceptions import PermissionDenied
|
||||
@@ -109,7 +109,6 @@ def clear_dicoms(request):
|
||||
dicoms = UncategorisedDicom.objects.filter(user=request.user)
|
||||
|
||||
dicoms.delete()
|
||||
print(dicoms)
|
||||
|
||||
return True
|
||||
|
||||
@@ -163,28 +162,31 @@ def import_dicoms_helper(request, case_id: int | None = None):
|
||||
|
||||
tags = data[series_uid][0][1]
|
||||
|
||||
# Check if series with the id already exists (in which case we just add to htat)
|
||||
if Series.objects.filter(
|
||||
series_instance_uid=tags["SeriesInstanceUID"]
|
||||
).exists():
|
||||
series = Series.objects.get(series_instance_uid=tags["SeriesInstanceUID"])
|
||||
else:
|
||||
series = Series(
|
||||
modality=modality,
|
||||
description=tags["SeriesDescription"],
|
||||
series_instance_uid=tags["SeriesInstanceUID"],
|
||||
)
|
||||
|
||||
if tags["StudyDescription"]:
|
||||
examination, created = Examination.objects.get_or_create(
|
||||
examination=tags["StudyDescription"]
|
||||
try:
|
||||
with transaction.atomic():
|
||||
series, created = Series.objects.get_or_create(
|
||||
series_instance_uid=tags["SeriesInstanceUID"],
|
||||
defaults={
|
||||
"modality": modality,
|
||||
"description": tags["SeriesDescription"],
|
||||
}
|
||||
)
|
||||
if created:
|
||||
examination.modality = modality
|
||||
examination.save()
|
||||
series.examination = examination
|
||||
if created and tags["StudyDescription"]:
|
||||
examination, created_exam = Examination.objects.get_or_create(
|
||||
examination=tags["StudyDescription"]
|
||||
)
|
||||
if created_exam:
|
||||
examination.modality = modality
|
||||
examination.save()
|
||||
series.examination = examination
|
||||
series.save()
|
||||
except IntegrityError:
|
||||
# If a race condition still occurs, fetch the existing series
|
||||
pass
|
||||
|
||||
series.save()
|
||||
|
||||
if 'series' not in locals():
|
||||
series = Series.objects.get(series_instance_uid=tags["SeriesInstanceUID"])
|
||||
|
||||
|
||||
# We might only want to add the author during creation....
|
||||
@@ -192,8 +194,11 @@ def import_dicoms_helper(request, case_id: int | None = None):
|
||||
|
||||
if case_id is not None:
|
||||
case_object = get_object_or_404(Case, pk=case_id)
|
||||
if not series.case.contains(case_object):
|
||||
try:
|
||||
series.case.add(case_object)
|
||||
except IntegrityError:
|
||||
# The relation already exists, safe to ignore
|
||||
pass
|
||||
|
||||
for dicom, dicom_tags in data[series_uid]:
|
||||
series_image = SeriesImage(
|
||||
@@ -238,7 +243,6 @@ def import_dicoms_case(request, case_id: int):
|
||||
|
||||
@router.get("/orphan_series", auth=django_auth, response=List[SeriesSchema])
|
||||
def orphan_series(request):
|
||||
# print(request.user.series.filter(case=None))
|
||||
return request.user.series.filter(case=None)
|
||||
|
||||
|
||||
@@ -261,7 +265,6 @@ def series_remove_duplicate_images(request, series_id: int):
|
||||
|
||||
@router.get("/series_truncate/{series_id}/{start}/{end}/", auth=django_auth)
|
||||
def series_truncate(request, series_id: int, start: int, end: int):
|
||||
print(start, end)
|
||||
series = get_object_or_404(Series, pk=series_id)
|
||||
|
||||
if not series.check_user_can_edit(request.user):
|
||||
@@ -272,7 +275,6 @@ def series_truncate(request, series_id: int, start: int, end: int):
|
||||
if n >= start and n <= end:
|
||||
continue
|
||||
else:
|
||||
print(n, image)
|
||||
image.removed = True
|
||||
image.image = None
|
||||
image.save()
|
||||
@@ -291,7 +293,6 @@ def get_cases_user(request):
|
||||
@router.get("/check_image_hash/{hash}", auth=django_auth)
|
||||
def check_image_hash(request, hash: str):
|
||||
try:
|
||||
print(hash)
|
||||
series_image = SeriesImage.objects.get(image_blake3_hash=hash)
|
||||
data = {
|
||||
"status": "success",
|
||||
@@ -372,11 +373,8 @@ def series_split_by_tag(request, series_id: int, dicom_tag: str):
|
||||
|
||||
# Split teh associated images
|
||||
for image in series.images.all():
|
||||
print(image)
|
||||
ds = image.get_dicom_data()
|
||||
|
||||
# print("2a", ds[dicom_tag])
|
||||
|
||||
if dicom_tag in ds:
|
||||
val = ds[dicom_tag].value
|
||||
|
||||
|
||||
Reference in New Issue
Block a user