1- from rest_framework import status
1+ from rest_framework import status , serializers as drf_serializers
22from rest_framework .permissions import AllowAny
33from rest_framework .response import Response
44from rest_framework .views import APIView
5+ from drf_spectacular .utils import extend_schema , inline_serializer
56
67from .models import Diagnosis , Medication , Suggestion
78from .serializers import MedicationSerializer
2425class GetMedication (APIView ):
2526 permission_classes = [AllowAny ]
2627
28+ @extend_schema (
29+ request = inline_serializer (
30+ name = 'GetMedicationRequest' ,
31+ fields = {
32+ 'state' : drf_serializers .CharField (help_text = 'Diagnosis state, e.g. "depressed", "manic"' ),
33+ 'suicideHistory' : drf_serializers .BooleanField (default = False ),
34+ 'kidneyHistory' : drf_serializers .BooleanField (default = False ),
35+ 'liverHistory' : drf_serializers .BooleanField (default = False ),
36+ 'bloodPressureHistory' : drf_serializers .BooleanField (default = False ),
37+ 'weightGainConcern' : drf_serializers .BooleanField (default = False ),
38+ 'priorMedications' : drf_serializers .CharField (required = False , default = '' , help_text = 'Comma-separated medication names' ),
39+ }
40+ ),
41+ responses = {
42+ 200 : inline_serializer (
43+ name = 'GetMedicationResponse' ,
44+ fields = {
45+ 'first' : drf_serializers .ListField (child = drf_serializers .DictField ()),
46+ 'second' : drf_serializers .ListField (child = drf_serializers .DictField ()),
47+ 'third' : drf_serializers .ListField (child = drf_serializers .DictField ()),
48+ }
49+ ),
50+ 404 : inline_serializer (name = 'GetMedicationNotFound' , fields = {
51+ 'error' : drf_serializers .CharField (),
52+ }),
53+ }
54+ )
2755 def post (self , request ):
2856 data = request .data
2957 state_query = data .get ('state' , '' )
@@ -75,6 +103,7 @@ def post(self, request):
75103
76104class ListOrDetailMedication (APIView ):
77105 permission_classes = [AllowAny ]
106+ serializer_class = MedicationSerializer
78107
79108 def get (self , request ):
80109 name_query = request .query_params .get ('name' , None )
@@ -98,6 +127,7 @@ class AddMedication(APIView):
98127 """
99128 API endpoint to add a medication to the database with its risks and benefits.
100129 """
130+ serializer_class = MedicationSerializer
101131
102132 def post (self , request ):
103133 data = request .data
@@ -129,6 +159,22 @@ class DeleteMedication(APIView):
129159 API endpoint to delete medication if medication in database.
130160 """
131161
162+ @extend_schema (
163+ request = inline_serializer (name = 'DeleteMedicationRequest' , fields = {
164+ 'name' : drf_serializers .CharField (),
165+ }),
166+ responses = {
167+ 200 : inline_serializer (name = 'DeleteMedicationSuccess' , fields = {
168+ 'success' : drf_serializers .CharField (),
169+ }),
170+ 400 : inline_serializer (name = 'DeleteMedicationBadRequest' , fields = {
171+ 'error' : drf_serializers .CharField (),
172+ }),
173+ 404 : inline_serializer (name = 'DeleteMedicationNotFound' , fields = {
174+ 'error' : drf_serializers .CharField (),
175+ }),
176+ }
177+ )
132178 def delete (self , request ):
133179 data = request .data
134180 name = data .get ('name' , '' ).strip ()
0 commit comments