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': []})