xray/orthanc/views.py

77 lines
3.2 KiB
Python
Raw Normal View History

2025-01-28 21:43:26 +10:00
# from rest_framework.views import APIView
# from rest_framework.response import Response
# from rest_framework import status
# from .models import Patient
# from .serializers import PatientSerializer
# from .tasks import fetch_patients, fetch_patient_details, sync_patients
#
#
# class PatientListView(APIView):
# def get(self, request):
# patients = Patient.objects.all()
# serializer = PatientSerializer(patients, many=True)
# return Response(serializer.data)
#
# class SyncPatientsView(APIView):
# def post(self, request):
# try:
# patient_ids = fetch_patients()
# for orthanc_id in patient_ids:
# patient_data = fetch_patient_details(orthanc_id)
# patient, created = Patient.objects.update_or_create(
# orthanc_id=orthanc_id,
# defaults={
# "patient_id": patient_data["MainDicomTags"].get("PatientID"),
# "patient_name": patient_data["MainDicomTags"].get("PatientName"),
# "patient_sex": patient_data["MainDicomTags"].get("PatientSex"),
# "patient_birth_date": patient_data["MainDicomTags"].get("PatientBirthDate"),
# "studies": patient_data.get("Studies", []),
# "patient_metadata": patient_data,
# },
# )
# return Response({"message": "Synchronization completed successfully"})
# except Exception as e:
# return Response({"error": str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
#
# class SyncPatientsView(APIView):
# def post(self, request):
# try:
# sync_patients()
# return Response({"detail": "Synchronization completed successfully."}, status=status.HTTP_200_OK)
# except Exception as e:
# return Response({"detail": str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .models import Patient
from .serializers import PatientSerializer
from .tasks import fetch_patients, fetch_patient_details, sync_patients
from rest_framework.permissions import IsAuthenticated
class ProtectedView(APIView):
permission_classes = [IsAuthenticated]
def get(self, request):
return Response({"message": f"Привет, {request.user.username}! Вы авторизованы."})
# Эндпоинт для получения списка пациентов
class PatientListView(APIView):
def get(self, request):
patients = Patient.objects.all()
serializer = PatientSerializer(patients, many=True)
return Response(serializer.data)
# Эндпоинт для синхронизации данных с Orthanc
class SyncPatientsView(APIView):
def post(self, request):
try:
sync_patients()
return Response({"detail": "Synchronization completed successfully."}, status=status.HTTP_200_OK)
except Exception as e:
return Response({"error": str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)