File size: 1,425 Bytes
1947612
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from rest_framework import serializers


class PredictionSerializer(serializers.Serializer):
    label      = serializers.CharField()
    confidence = serializers.FloatField()


class AnalyseRequestSerializer(serializers.Serializer):
    image             = serializers.ImageField()
    include_heatmap   = serializers.BooleanField(default=False)
    include_narrative = serializers.BooleanField(default=True)

    # Patient context — all optional, forwarded to Groq prompt
    # Parsed directly from request.data in views.py (not validated here
    # because they are plain strings and always safe to default to "")
    # Listed here for documentation purposes only.


class AnalyseResponseSerializer(serializers.Serializer):
    # Structured clinical fields — written by Groq
    primaryFinding    = serializers.CharField()
    confidence        = serializers.IntegerField()
    urgency           = serializers.ChoiceField(choices=["High", "Moderate", "Low"])
    urgencyText       = serializers.CharField()
    treatmentNotes    = serializers.ListField(child=serializers.CharField())
    recommendedAction = serializers.CharField()
    referralNote      = serializers.CharField()
    conditionCode     = serializers.CharField()

    # Raw model output
    allPredictions    = PredictionSerializer(many=True)
    heatmap_b64       = serializers.CharField(allow_null=True)
    model_version     = serializers.CharField()