diff --git a/pyproject.toml b/pyproject.toml index b2c257f..614fe8b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "HospitalAssistantBackend" -version = "1.2.1" +version = "1.3.0" description = "Backend for Hospital Assistant" readme = "README.md" requires-python = ">=3.13,<3.14" diff --git a/src/apps/users/v1/router.py b/src/apps/users/v1/router.py index 09bc141..73af599 100644 --- a/src/apps/users/v1/router.py +++ b/src/apps/users/v1/router.py @@ -5,7 +5,7 @@ from logging import getLogger from secrets import token_urlsafe from typing import Annotated -from fastapi import APIRouter, Body, Depends, UploadFile, status +from fastapi import APIRouter, Body, Depends, Response, UploadFile, status from orjson import loads from apps.remd.dependencies import convert_aemd_to_pdf, get_parsable_ids @@ -257,6 +257,27 @@ async def get_aemd_file( } +@router.get('/aemd/{emdrId}/download') +async def get_aemd_file_download( + user: Annotated[User, Depends(login)], emdrId: str, docKind: str +): + data = await cache.get(f'aemd:{user.vita_id}:{emdrId}') + + if not data: + raise e.NotFoundException(status_code=404, detail='File not found') + + b64 = loads(data)['data'] + decoded = base64.b64decode(b64) + pdf_bytes = await convert_aemd_to_pdf(decoded, docKind) + filename = f'{emdrId}.pdf' + + return Response( + content=pdf_bytes, + media_type='application/pdf', + headers={'Content-Disposition': f'attachment; filename="{filename}"'}, + ) + + @router.post('/measurement', status_code=status.HTTP_202_ACCEPTED) async def measurement( tdn_access_token: Annotated[str, Depends(token)],