2025-08-12 13:33:25 +03:00

45 lines
1.8 KiB
Python

from rest_framework import viewsets, permissions
from rest_framework.decorators import action
from rest_framework.response import Response
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import filters
from ..models import PatientProfile
from .serializers import PatientProfileSerializer
class PatientProfileViewSet(viewsets.ModelViewSet):
"""ViewSet for patient profiles"""
queryset = PatientProfile.objects.all()
serializer_class = PatientProfileSerializer
permission_classes = [permissions.IsAuthenticated]
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]
filterset_fields = ['gender', 'blood_type', 'is_active']
search_fields = ['first_name', 'last_name', 'mrn', 'phone', 'email']
ordering_fields = ['last_name', 'first_name', 'date_of_birth', 'created_at']
ordering = ['last_name', 'first_name']
def get_queryset(self):
"""Filter by tenant"""
return PatientProfile.objects.filter(tenant=self.request.user.tenant)
def perform_create(self, serializer):
"""Set tenant when creating"""
serializer.save(tenant=self.request.user.tenant)
@action(detail=True, methods=['get'])
def emergency_contacts(self, request, pk=None):
"""Get emergency contacts for a patient"""
patient = self.get_object()
contacts = patient.emergency_contacts.all()
# Would need EmergencyContactSerializer
return Response({'contacts': []})
@action(detail=True, methods=['get'])
def insurance_info(self, request, pk=None):
"""Get insurance information for a patient"""
patient = self.get_object()
insurance = patient.insurance_info.all()
# Would need InsuranceInfoSerializer
return Response({'insurance': []})