Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ONI-58: Unique diagnosis validation endpoint. #113

Draft
wants to merge 1 commit into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion claim/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from core.models import Officer
from insuree.models import Insuree
from location.models import HealthFacility, Location
from .services import check_unique_claim_code
from .services import check_unique_claim_code, check_unique_claim_diagnosis
import django
from core.schema import signal_mutation_module_validate
from django.db.models import OuterRef, Subquery, Avg, Q
Expand Down Expand Up @@ -60,6 +60,14 @@ class Query(graphene.ObjectType):
description="Checks that the specified claim code is unique."
)

validate_claim_diagnosis = graphene.Field(
graphene.Boolean,
insuree_id=graphene.Int(required=True),
date_claimed=graphene.Date(required=False),
icd_id=graphene.Int(required=True),
description="Checks that the specified diagnosis is unique for a given insuree in a given day."
)

def resolve_insuree_name_by_chfid(self, info, **kwargs):
if not info.context.user.has_perms(ClaimConfig.gql_mutation_create_claims_perms)\
and not info.context.user.has_perms(ClaimConfig.gql_mutation_update_claims_perms):
Expand All @@ -81,6 +89,13 @@ def resolve_validate_claim_code(self, info, **kwargs):
errors = check_unique_claim_code(code=kwargs['claim_code'])
return False if errors else True

def resolve_validate_claim_diagnosis(self, info, **kwargs):
if not info.context.user.has_perms(ClaimConfig.gql_query_claims_perms):
raise PermissionDenied(_("unauthorized"))
errors = check_unique_claim_diagnosis(insuree_id=kwargs['insuree_id'], date_claimed=kwargs['date_claimed'],
icd_id=kwargs['icd_id'])
return False if errors else True

def resolve_claim(self, info, id=None, uuid=None, **kwargs):
if (
not info.context.user.has_perms(ClaimConfig.gql_query_claims_perms)
Expand Down
7 changes: 7 additions & 0 deletions claim/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -379,3 +379,10 @@ def check_unique_claim_code(code):
if Claim.objects.filter(code=code, validity_to__isnull=True).exists():
return [{"message": "Claim code %s already exists" % code}]
return []


def check_unique_claim_diagnosis(insuree_id, date_claimed, icd_id):
if Claim.objects.filter(insuree=insuree_id, date_from=date_claimed, icd_id=icd_id,
validity_to__isnull=True).exists():
return [{"message": "Insuree %s has been diagnosed with this condition on that day already." % insuree_id}]
return []
Loading