class FacilityLocalGovtBodySerializer(serializers.ModelSerializer): local_body = LocalBodySerializer() district = DistrictSerializer() class Meta: model = FacilityLocalGovtBody fields = "__all__"
class FacilityBasicInfoSerializer(serializers.ModelSerializer): local_body_object = LocalBodySerializer(source="local_body", read_only=True) district_object = DistrictSerializer(source="district", read_only=True) state_object = StateSerializer(source="state", read_only=True) facility_type = serializers.SerializerMethodField() def get_facility_type(self, facility): return { "id": facility.facility_type, "name": FACILITY_TYPES[facility.facility_type - 1][1] } class Meta: model = Facility fields = ( "id", "name", "local_body", "district", "state", "local_body_object", "district_object", "state_object", "facility_type", )
class FacilityBasicInfoSerializer(serializers.ModelSerializer): id = serializers.UUIDField(source="external_id", read_only=True) ward_object = WardSerializer(source="ward", read_only=True) local_body_object = LocalBodySerializer(source="local_body", read_only=True) district_object = DistrictSerializer(source="district", read_only=True) state_object = StateSerializer(source="state", read_only=True) facility_type = serializers.SerializerMethodField() def get_facility_type(self, facility): return { "id": facility.facility_type, "name": facility.get_facility_type_display() } class Meta: model = Facility fields = ( "id", "name", "local_body", "district", "state", "ward_object", "local_body_object", "district_object", "state_object", "facility_type", )
class PatientListSerializer(serializers.ModelSerializer): id = serializers.CharField(source="external_id", read_only=True) facility = serializers.UUIDField(source="facility.external_id", allow_null=True, read_only=True) facility_object = FacilityBasicInfoSerializer(source="facility", read_only=True) ward_object = WardSerializer(source="ward", read_only=True) local_body_object = LocalBodySerializer(source="local_body", read_only=True) district_object = DistrictSerializer(source="district", read_only=True) state_object = StateSerializer(source="state", read_only=True) blood_group = ChoiceField(choices=BLOOD_GROUP_CHOICES, required=True) disease_status = ChoiceField(choices=DISEASE_STATUS_CHOICES, default=DiseaseStatusEnum.SUSPECTED.value) source = ChoiceField(choices=PatientRegistration.SourceChoices) class Meta: model = PatientRegistration exclude = ( "created_by", "deleted", "ongoing_medication", "patient_search_id", "year_of_birth", "meta_info", "countries_travelled_old", "allergies", "external_id", ) read_only = TIMESTAMP_FIELDS
class FacilitySerializer(serializers.ModelSerializer): """Serializer for facility.models.Facility.""" facility_type = ChoiceField(choices=FACILITY_TYPES) # A valid location => { # "latitude": 49.8782482189424, # "longitude": 24.452545489 # } location = PointField(required=False) local_body_object = LocalBodySerializer(source="local_body", read_only=True) district_object = DistrictSerializer(source="district", read_only=True) state_object = StateSerializer(source="state", read_only=True) class Meta: model = Facility fields = [ "id", "name", "local_body", "district", "state", "facility_type", "address", "location", "oxygen_capacity", "phone_number", "local_body_object", "district_object", "state_object", ]
class UserSerializer(SignUpSerializer): user_type = ChoiceField(choices=User.TYPE_CHOICES, read_only=True) is_superuser = serializers.BooleanField(read_only=True) local_body_object = LocalBodySerializer(source="local_body", read_only=True) district_object = DistrictSerializer(source="district", read_only=True) state_object = StateSerializer(source="state", read_only=True) class Meta: model = User fields = ( "id", "username", "first_name", "last_name", "email", "user_type", "local_body", "district", "state", "phone_number", "gender", "age", "is_superuser", "verified", "local_body_object", "district_object", "state_object", ) read_only_fields = ("is_superuser", "verified", "user_type", "ward", "local_body", "district", "state") extra_kwargs = {"url": {"lookup_field": "username"}}
class UserListSerializer(serializers.ModelSerializer): local_body_object = LocalBodySerializer(source="local_body", read_only=True) district_object = DistrictSerializer(source="district", read_only=True) state_object = StateSerializer(source="state", read_only=True) class Meta: model = User fields = ("id", "first_name", "last_name", "local_body_object", "district_object", "state_object")
def get_all_local_body(self, *args, **kwargs): district = self.get_object() data = [] for lsg_object in LocalBody.objects.filter(district=district): local_body_object = LocalBodySerializer(lsg_object).data local_body_object["wards"] = WardSerializer( Ward.objects.filter(local_body=lsg_object), many=True).data data.append(local_body_object) return Response(data)
class PatientListSerializer(serializers.ModelSerializer): local_body_object = LocalBodySerializer(source="local_body", read_only=True) district_object = DistrictSerializer(source="district", read_only=True) state_object = StateSerializer(source="state", read_only=True) class Meta: model = PatientRegistration exclude = ("created_by", "deleted")
class UserListSerializer(serializers.ModelSerializer): local_body_object = LocalBodySerializer(source="local_body", read_only=True) district_object = DistrictSerializer(source="district", read_only=True) state_object = StateSerializer(source="state", read_only=True) user_type = ChoiceField(choices=User.TYPE_CHOICES, read_only=True) class Meta: model = User fields = ("id", "first_name", "last_name", "local_body_object", "district_object", "state_object", "user_type")
class PatientListSerializer(serializers.ModelSerializer): facility = serializers.IntegerField(source="facility_id", allow_null=True, read_only=True) local_body_object = LocalBodySerializer(source="local_body", read_only=True) district_object = DistrictSerializer(source="district", read_only=True) state_object = StateSerializer(source="state", read_only=True) class Meta: model = PatientRegistration exclude = ("created_by", "deleted")
class PatientListSerializer(serializers.ModelSerializer): facility = serializers.IntegerField(source="facility_id", allow_null=True, read_only=True) facility_object = FacilityBasicInfoSerializer(source="facility", read_only=True) local_body_object = LocalBodySerializer(source="local_body", read_only=True) district_object = DistrictSerializer(source="district", read_only=True) state_object = StateSerializer(source="state", read_only=True) disease_status = ChoiceField(choices=DISEASE_STATUS_CHOICES, default=DiseaseStatusEnum.SUSPECTED.value) source = ChoiceField(choices=PatientRegistration.SourceChoices) class Meta: model = PatientRegistration exclude = ("created_by", "deleted", "ongoing_medication", "patient_search_id", "year_of_birth", "meta_info") read_only = TIMESTAMP_FIELDS
class PatientListSerializer(serializers.ModelSerializer): local_body_object = LocalBodySerializer(source="local_body", read_only=True) district_object = DistrictSerializer(source="district", read_only=True) state_object = StateSerializer(source="state", read_only=True) def to_representation(self, obj): repr = super().to_representation(obj) if not self.context["request"].user.is_superuser: repr.pop("name") repr.pop("phone_number") return repr class Meta: model = PatientRegistration exclude = ("created_by", "deleted")
def local_bodies(self, *args, **kwargs): district = self.get_object() serializer = LocalBodySerializer( district.localbody_set.all().order_by("name"), many=True) return Response(data=serializer.data)
class PatientExternalTestSerializer(serializers.ModelSerializer): ward_object = WardSerializer(source="ward", read_only=True) local_body_object = LocalBodySerializer(source="local_body", read_only=True) district_object = DistrictSerializer(source="district", read_only=True) sample_collection_date = serializers.DateField(input_formats=["%Y-%m-%d"], required=False) result_date = serializers.DateField(input_formats=["%Y-%m-%d"], required=False) def validate_empty_values(self, data, *args, **kwargs): # if "is_repeat" in data: # is_repeat = data["is_repeat"] # if is_repeat.lower() == "yes": # data["is_repeat"] = True # else: # data["is_repeat"] = False district_obj = None if "district" in data: district = data["district"] district_obj = District.objects.filter( name__icontains=district).first() if district_obj: data["district"] = district_obj.id else: raise ValidationError( {"district": ["District Does not Exist"]}) else: raise ValidationError( {"district": ["District Not Present in Data"]}) local_body_obj = None if "local_body" in data and district_obj: if not data["local_body"]: raise ValidationError( {"local_body": ["Local Body Cannot Be Empty"]}) local_body = data["local_body"] local_body_obj = LocalBody.objects.filter( name__icontains=local_body, district=district_obj).first() if local_body_obj: data["local_body"] = local_body_obj.id else: raise ValidationError( {"local_body": ["Local Body Does not Exist"]}) else: raise ValidationError( {"local_body": ["Local Body Not Present in Data"]}) if "ward" in data and local_body_obj: if data["ward"]: ward_obj = Ward.objects.filter( number=data["ward"], local_body=local_body_obj).first() if ward_obj: data["ward"] = ward_obj.id else: raise ValidationError({"ward": ["Ward Does not Exist"]}) return super().validate_empty_values(data, *args, **kwargs) # def validate_ward(self, value): # print(value) class Meta: model = PatientExternalTest fields = "__all__"