class FeedbackInputType(InputObjectType):
    id = graphene.Int(required=False, read_only=True)
    care_rendered = graphene.Boolean(required=False)
    payment_asked = graphene.Boolean(required=False)
    drug_prescribed = graphene.Boolean(required=False)
    drug_received = graphene.Boolean(required=False)
    asessment = SmallInt(required=False,
                         description="Be careful, this field name has a typo")
    officer_id = graphene.Int(required=False)
    feedback_date = graphene.DateTime(required=False)
    validity_from = graphene.DateTime(required=False)
    validity_to = graphene.DateTime(required=False)
class ClaimServiceInputType(InputObjectType):
    id = graphene.Int(required=False)
    legacy_id = graphene.Int(required=False)
    service_id = graphene.Int(required=True)
    status = TinyInt(required=True)
    qty_provided = graphene.Decimal(max_digits=18,
                                    decimal_places=2,
                                    required=False)
    qty_approved = graphene.Decimal(max_digits=18,
                                    decimal_places=2,
                                    required=False)
    price_asked = graphene.Decimal(max_digits=18,
                                   decimal_places=2,
                                   required=False)
    price_adjusted = graphene.Decimal(max_digits=18,
                                      decimal_places=2,
                                      required=False)
    price_approved = graphene.Decimal(max_digits=18,
                                      decimal_places=2,
                                      required=False)
    price_valuated = graphene.Decimal(max_digits=18,
                                      decimal_places=2,
                                      required=False)
    explanation = graphene.String(required=False)
    justification = graphene.String(required=False)
    rejection_reason = SmallInt(required=False)
    validity_to = graphene.DateTime(required=False)
    validity_from_review = graphene.DateTime(required=False)
    validity_to_review = graphene.DateTime(required=False)
    audit_user_id_review = graphene.Int(required=False)
    limitation_value = graphene.Decimal(max_digits=18,
                                        decimal_places=2,
                                        required=False)
    limitation = graphene.String(max_length=1, required=False)
    policy_id = graphene.Int(required=False)
    remunerated_amount = graphene.Decimal(max_digits=18,
                                          decimal_places=2,
                                          required=False)
    deductable_amount = graphene.Decimal(
        max_digits=18,
        decimal_places=2,
        required=False,
        description="deductable is spelled with a, not deductible")
    exceed_ceiling_amount = graphene.Decimal(max_digits=18,
                                             decimal_places=2,
                                             required=False)
    price_origin = graphene.String(max_length=1, required=False)
    exceed_ceiling_amount_category = graphene.Decimal(max_digits=18,
                                                      decimal_places=2,
                                                      required=False)
class ClaimItemInputType(InputObjectType):
    id = graphene.Int(required=False)
    item_id = graphene.Int(required=True)
    status = TinyInt(required=True)
    qty_provided = graphene.Decimal(max_digits=18,
                                    decimal_places=2,
                                    required=False)
    qty_approved = graphene.Decimal(max_digits=18,
                                    decimal_places=2,
                                    required=False)
    price_asked = graphene.Decimal(max_digits=18,
                                   decimal_places=2,
                                   required=False)
    price_adjusted = graphene.Decimal(max_digits=18,
                                      decimal_places=2,
                                      required=False)
    price_approved = graphene.Decimal(max_digits=18,
                                      decimal_places=2,
                                      required=False)
    price_valuated = graphene.Decimal(max_digits=18,
                                      decimal_places=2,
                                      required=False)
    explanation = graphene.String(required=False)
    justification = graphene.String(required=False)
    rejection_reason = SmallInt(required=False)

    validity_from_review = graphene.DateTime(required=False)
    validity_to_review = graphene.DateTime(required=False)
    limitation_value = graphene.Decimal(max_digits=18,
                                        decimal_places=2,
                                        required=False)
    limitation = graphene.String(required=False)
    # policy_id
    remunerated_amount = graphene.Decimal(max_digits=18,
                                          decimal_places=2,
                                          required=False)
    deductable_amount = graphene.Decimal(max_digits=18,
                                         decimal_places=2,
                                         required=False)
    exceed_ceiling_amount = graphene.Decimal(max_digits=18,
                                             decimal_places=2,
                                             required=False)
    price_origin = graphene.String(required=False)
    exceed_ceiling_amount_category = graphene.Decimal(max_digits=18,
                                                      decimal_places=2,
                                                      required=False)