Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 22 additions & 2 deletions apps/backend/app/routers/reports.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,16 @@ async def get_report_bids(
"""
Receives form data and two files: a NIfTI file and a DICOM file.
"""
try:
parsed_modality = ModalityTypeValues(modality) if modality else ModalityTypeValues.ASL
except ValueError:
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Invalid modality '{modality}'. Accepted values: {[m.value for m in ModalityTypeValues]}"
)

data = {
"modality": ModalityTypeValues(modality) if modality else ModalityTypeValues.ASL,
"modality": parsed_modality,
"files": [],
"nifti_file": None,
"dcm_files": []
Expand All @@ -52,6 +60,9 @@ async def get_report_bids(
file_path = await save_upload(file, base_dir=f"uploads/{report_id}/dicom")
data["dcm_files"].append(file_path)

if not data["files"] and not data["dcm_files"]:
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="No BIDS or DICOM files provided")

try:
report = generate_report(data)
await remove_dir(f"uploads/{report_id}")
Expand All @@ -66,6 +77,15 @@ async def get_report_dicom(
modality: Optional[str] = Form(None),
dcm_files: Optional[List[UploadFile]] = File(None),
):
# Validate modality first
try:
parsed_modality = ModalityTypeValues(modality) if modality else ModalityTypeValues.ASL
except ValueError:
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Invalid modality '{modality}'. Accepted values: {[m.value for m in ModalityTypeValues]}"
)

if not dcm_files:
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="No DICOM files provided")

Expand All @@ -76,7 +96,7 @@ async def get_report_dicom(
print(base_dir)

data = {
"modality": ModalityTypeValues(modality) if modality else ModalityTypeValues.ASL,
"modality": parsed_modality,
"dicom_dir": f"{base_dir}/dicom"
}

Expand Down
21 changes: 11 additions & 10 deletions package/src/pyaslreport/modalities/testdsc/processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,18 @@ def __init__(self, data) -> None:
"""
super().__init__(data)

def process(self) -> str:
def process(self) -> dict:
"""
Process the input DSC data.

:param data: The input DSC data to be processed.
:return: Processed DSC data.
:return: Dictionary containing processing results.
"""
# Implement the processing logic for DSC data here
# For now, we will just return the input data as a placeholder

print("Processing DSC data...")

# Placeholder for actual processing logic
return "dsc data"
# DSC processing is not yet implemented — return a structured placeholder
# that matches the expected dict return type for all processors
return {
"status": "not_implemented",
"message": "DSC processing is not yet implemented.",
"modality": "DSC",
"asl_parameters": [],
"report": []
}