Untitled

 avatar
user_7854577
plain_text
4 months ago
4.3 kB
2
Indexable
# nurse_management/models.py
from django.db import models
from user_management.models import User
from patient_management.models import PatientProfile
from room_management.models import Room
from doctor_management.models import DoctorProfile

class PatientUpdate(models.Model):
    nurse = models.ForeignKey(User, on_delete=models.CASCADE, related_name='updates')
    patient = models.ForeignKey(PatientProfile, on_delete=models.CASCADE, related_name='updates')
    doctor = models.ForeignKey(DoctorProfile, on_delete=models.CASCADE, related_name='patient_updates')
    update_text = models.TextField()
    timestamp = models.DateTimeField(auto_now_add=True)

class RoomAssignment(models.Model):
    nurse = models.ForeignKey(User, on_delete=models.CASCADE, related_name='room_assignments')
    room = models.ForeignKey(Room, on_delete=models.CASCADE, related_name='assignments')
    patient = models.ForeignKey(PatientProfile, on_delete=models.CASCADE, related_name='room_assignments')
    assigned_date = models.DateTimeField(auto_now_add=True)
    is_active = models.BooleanField(default=True)


# nurse_management/serializers.py
from rest_framework import serializers
from .models import PatientUpdate, RoomAssignment

class PatientUpdateSerializer(serializers.ModelSerializer):
    class Meta:
        model = PatientUpdate
        fields = ['id', 'nurse', 'patient', 'doctor', 'update_text', 'timestamp']

class RoomAssignmentSerializer(serializers.ModelSerializer):
    class Meta:
        model = RoomAssignment
        fields = ['id', 'nurse', 'room', 'patient', 'assigned_date', 'is_active']


# nurse_management/views.py
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated
from rest_framework import status
from .models import PatientUpdate, RoomAssignment
from .serializers import PatientUpdateSerializer, RoomAssignmentSerializer

class PatientUpdateView(APIView):
    permission_classes = [IsAuthenticated]

    def get(self, request):
        if request.user.role != 'Nurse':
            return Response({'error': 'Only nurses can access this resource.'}, status=status.HTTP_403_FORBIDDEN)
        updates = PatientUpdate.objects.filter(nurse=request.user)
        serializer = PatientUpdateSerializer(updates, many=True)
        return Response(serializer.data)

    def post(self, request):
        if request.user.role != 'Nurse':
            return Response({'error': 'Only nurses can send updates.'}, status=status.HTTP_403_FORBIDDEN)
        serializer = PatientUpdateSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save(nurse=request.user)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)


class RoomAssignmentView(APIView):
    permission_classes = [IsAuthenticated]

    def get(self, request):
        if request.user.role != 'Nurse':
            return Response({'error': 'Only nurses can view room assignments.'}, status=status.HTTP_403_FORBIDDEN)
        assignments = RoomAssignment.objects.filter(nurse=request.user, is_active=True)
        serializer = RoomAssignmentSerializer(assignments, many=True)
        return Response(serializer.data)

    def post(self, request):
        if request.user.role != 'Nurse':
            return Response({'error': 'Only nurses can manage room assignments.'}, status=status.HTTP_403_FORBIDDEN)
        serializer = RoomAssignmentSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save(nurse=request.user)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)


# nurse_management/urls.py
from django.urls import path
from .views import PatientUpdateView, RoomAssignmentView

urlpatterns = [
    path('updates/', PatientUpdateView.as_view(), name='patient_update'),
    path('room-assignments/', RoomAssignmentView.as_view(), name='room_assignment'),
]


# settings.py (additional INSTALLED_APPS configuration)
INSTALLED_APPS += [
    'nurse_management',
]
Editor is loading...
Leave a Comment