app.api.result_api ================== .. py:module:: app.api.result_api .. autoapi-nested-parse:: Definition of result API endpoints accessible through swagger UI. Attributes ---------- .. autoapisummary:: app.api.result_api.PREFIX_PATIENT_MANAGER app.api.result_api.result_router app.api.result_api.oauth2_scheme Classes ------- .. autoapisummary:: app.api.result_api.CreateDicomResult Functions --------- .. autoapisummary:: app.api.result_api.create_dicom_result app.api.result_api.create_blank_result app.api.result_api.get_result app.api.result_api.get_all_task_results app.api.result_api.delete_result app.api.result_api.set_result app.api.result_api.get_dicom app.api.result_api.upload_to_xnat app.api.result_api._resolve_dicom_path app.api.result_api._resolve_mrd_path app.api.result_api.get_meta app.api.result_api.get_mrd_binary app.api.result_api.download_mrd Module Contents --------------- .. py:class:: CreateDicomResult Bases: :py:obj:`pydantic.BaseModel` Payload sent by the Dagster on_run_success sensor to register DICOM output. .. py:attribute:: directory :type: str .. py:attribute:: files :type: list[str] .. py:attribute:: meta :type: dict | None :value: None .. py:data:: PREFIX_PATIENT_MANAGER :value: 'http://patient-manager:8100/api/v1/patient' .. py:data:: result_router .. py:data:: oauth2_scheme .. py:function:: create_dicom_result(task_id: uuid.UUID | str, payload: CreateDicomResult, user: Annotated[scanhub_libraries.models.User, Depends(get_current_user)]) -> scanhub_libraries.models.ResultOut :async: Create a DICOM result entry after a successful Dagster reconstruction run. .. py:function:: create_blank_result(task_id: str | uuid.UUID, user: Annotated[scanhub_libraries.models.User, Depends(get_current_user)]) -> scanhub_libraries.models.ResultOut :async: Create a blank task result. .. py:function:: get_result(result_id: uuid.UUID | str, user: Annotated[scanhub_libraries.models.User, Depends(get_current_user)]) -> scanhub_libraries.models.ResultOut :async: Get an existing result. .. py:function:: get_all_task_results(task_id: uuid.UUID | str, user: Annotated[scanhub_libraries.models.User, Depends(get_current_user)]) -> list[scanhub_libraries.models.ResultOut] :async: Get all existing results of a certain task. .. py:function:: delete_result(result_id: uuid.UUID | str, user: Annotated[scanhub_libraries.models.User, Depends(get_current_user)]) -> None :async: Delete a result. .. py:function:: set_result(result_id: uuid.UUID | str, payload: scanhub_libraries.models.SetResult, user: Annotated[scanhub_libraries.models.User, Depends(get_current_user)]) -> scanhub_libraries.models.ResultOut :async: Update an existing result. .. py:function:: get_dicom(protocol_id: str, task_id: str, result_id: str, filename: str, user: Annotated[scanhub_libraries.models.User, Depends(get_current_user)]) -> starlette.responses.Response :async: Serve a DICOM instance. .. py:function:: upload_to_xnat(protocol_id: str, task_id: str, result_id: str, filename: str, access_token: Annotated[str, Depends(oauth2_scheme)]) -> dict :async: Upload a DICOM file to XNAT test database. .. py:function:: _resolve_dicom_path(result_id: str, filename: str) :async: Look up Result in DB and return validated path to the requested DICOM file. .. py:function:: _resolve_mrd_path(result_id: str) :async: Look up Result in DB and return path to the .mrd file. .. py:function:: get_meta(protocol_id: str, task_id: str, result_id: str) -> scanhub_libraries.models.MRDMetaResponse :async: Get MRD meta info. .. py:function:: get_mrd_binary(protocol_id: str, task_id: str, result_id: str, ids: str = Query(..., description="IDs: '0,1,10-20,40-50:2'"), coil_idx: int = Query(0, ge=0, description='Coil index'), stride: int = Query(1, ge=1, description='Decimate samples by stride')) :async: Get MRD as binary stream. .. py:function:: download_mrd(protocol_id: str, task_id: str, result_id: str, user: Annotated[scanhub_libraries.models.User, Depends(get_current_user)]) :async: Download the full MRD file.