fix image hashes (possible)
This commit is contained in:
+47
-20
@@ -21,17 +21,25 @@ from .models import Case, DuplicateDicom, Series, SeriesImage, UncategorisedDico
|
||||
|
||||
router = Router()
|
||||
|
||||
|
||||
class SeriesSchema(ModelSchema):
|
||||
case_id: List[int] = []
|
||||
|
||||
class Config:
|
||||
model = Series
|
||||
model_fields = ["id", "modality", "examination", "series_instance_uid", "author"]
|
||||
model_fields = [
|
||||
"id",
|
||||
"modality",
|
||||
"examination",
|
||||
"series_instance_uid",
|
||||
"author",
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def resolve_case_id(obj):
|
||||
return [i.id for i in obj.case.all()]
|
||||
|
||||
|
||||
class CaseSchema(ModelSchema):
|
||||
class Config:
|
||||
model = Case
|
||||
@@ -51,6 +59,7 @@ def upload_dicom(request, files: List[UploadedFile] = File(...)):
|
||||
|
||||
uploaded.append((file.name, ud.image_md5_hash))
|
||||
except DuplicateDicom:
|
||||
print(ud.check_for_duplicates(ud.image_md5_hash))
|
||||
duplicate.append((file.name, ud.image_md5_hash))
|
||||
pass
|
||||
|
||||
@@ -75,10 +84,12 @@ def uncategorised_dicoms(request):
|
||||
tags = d.get_basic_dicom_tags()
|
||||
|
||||
data[tags["SeriesInstanceUID"]].append(tags)
|
||||
data["image_hash"].append(d.image_md5_hash)
|
||||
|
||||
return data
|
||||
|
||||
def import_dicoms_helper(request, case_id: int | None=None):
|
||||
|
||||
def import_dicoms_helper(request, case_id: int | None = None):
|
||||
dicoms = UncategorisedDicom.objects.filter(user=request.user)
|
||||
|
||||
data = defaultdict(list)
|
||||
@@ -89,7 +100,6 @@ def import_dicoms_helper(request, case_id: int | None=None):
|
||||
|
||||
series_list = []
|
||||
for series_uid in data:
|
||||
|
||||
modality = get_object_or_404(Modality, short_code=tags["Modality"])
|
||||
tags = data[series_uid][0][1]
|
||||
|
||||
@@ -111,9 +121,14 @@ def import_dicoms_helper(request, case_id: int | None=None):
|
||||
series.case.add(case_id)
|
||||
|
||||
for dicom, dicom_tags in data[series_uid]:
|
||||
series_image = SeriesImage(image=dicom.image, series=series)
|
||||
series_image = SeriesImage(
|
||||
image=dicom.image,
|
||||
series=series,
|
||||
is_dicom=True,
|
||||
image_md5_hash=dicom.image_md5_hash,
|
||||
)
|
||||
series_image.save()
|
||||
#dicom.image.delete()
|
||||
# dicom.image.delete()
|
||||
|
||||
dicom.delete()
|
||||
series_list.append(series)
|
||||
@@ -123,23 +138,22 @@ def import_dicoms_helper(request, case_id: int | None=None):
|
||||
|
||||
@router.get("/import_dicoms", auth=django_auth, response=List[SeriesSchema])
|
||||
def import_dicoms(request):
|
||||
|
||||
return import_dicoms_helper(request)
|
||||
|
||||
|
||||
@router.get("/import_dicoms/{case_id}", auth=django_auth, response=List[SeriesSchema])
|
||||
def import_dicoms_case(request, case_id: int):
|
||||
|
||||
return import_dicoms_helper(request, case_id=case_id)
|
||||
|
||||
|
||||
@router.get("/orphan_series", auth=django_auth, response=List[SeriesSchema])
|
||||
def orphan_series(request):
|
||||
#print(request.user.series.filter(case=None))
|
||||
# print(request.user.series.filter(case=None))
|
||||
return request.user.series.filter(case=None)
|
||||
|
||||
|
||||
@router.get("/series_remove_duplicate_images", auth=django_auth)
|
||||
def series_remove_duplicate_images(request, series_id: int):
|
||||
|
||||
series = get_object_or_404(Series, pk=series_id)
|
||||
|
||||
img_ids = set()
|
||||
@@ -154,21 +168,34 @@ def series_remove_duplicate_images(request, series_id: int):
|
||||
|
||||
return len(dupes)
|
||||
|
||||
|
||||
@router.get("/get_cases_user", auth=django_auth, response=List[CaseSchema])
|
||||
def get_cases_user(request):
|
||||
print("HELLO")
|
||||
return Case.objects.filter(author=request.user)
|
||||
|
||||
|
||||
@router.get("/check_image_hash/{hash}", auth=django_auth)
|
||||
def check_image_hash(request, hash: str):
|
||||
try:
|
||||
series_image = SeriesImage.objects.get(image_md5_hash=hash)
|
||||
data = {
|
||||
"status": "success",
|
||||
"id": series_image.pk,
|
||||
"url": series_image.series.get_absolute_url(),
|
||||
}
|
||||
return data
|
||||
except SeriesImage.DoesNotExist:
|
||||
data = {"status": "success", "id": False}
|
||||
return data
|
||||
try:
|
||||
print(hash)
|
||||
series_image = SeriesImage.objects.get(image_md5_hash=hash)
|
||||
data = {
|
||||
"status": "success",
|
||||
"id": series_image.pk,
|
||||
"url": series_image.series.get_absolute_url(),
|
||||
}
|
||||
return data
|
||||
except SeriesImage.DoesNotExist:
|
||||
data = {"status": "success", "id": False}
|
||||
return data
|
||||
|
||||
@router.get("/generate_image_hash/{id}", auth=django_auth)
|
||||
def generate_image_hash(request, id: int):
|
||||
series_image = SeriesImage.objects.get(pk=id)
|
||||
|
||||
series_image.image_md5_hash = ""
|
||||
|
||||
series_image.save()
|
||||
|
||||
print(series_image)
|
||||
|
||||
Reference in New Issue
Block a user