Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Purpose

This WS is designed to terminate active declaration by Patient.

Specification

Apiary

Authorization

  1. Verify the validity of access token

    • in case of error - return 401 (“Invalid access token”) in case of validation fails

  2. Verify that token is not expired

    • in case of error - return 401 (“Invalid access token”)

  3. Check user scopes in order to perform this action (scope = 'declaration:terminate_pis')

    • return 403 (“Your scope does not allow to access this resource. Missing allowances: ‘declaration:terminate_pis’) in case of invalid scope(s)

Validation

Validate Person

  • Get person_id from token (x-person-id header)

  • Validate patient status is active (status = ‘active' & is_active = 'true’)

    • in case of error - return 404 ('not found')

  • Validate verification status of person not NOT_VERIFIED

    • in case of error - return return 403 ("Access denied. Person is not verified")

Validate confidant person and relationship (optional)

If person is not legally capable - system must ensure that declaration is terminated by confidant person and there is registered and verified their relationship

...

  • If equals - check that person must not be authorized by confidant person, so it doesn’t correspond to following rules:

    • persons age < no_self_registration_age global parameter;

    • persons age between no_self_registration_age and person_full_legal_capacity_age global parameters and person does not have document with type from PIS_PERSON_LEGAL_CAPACITY_DOCUMENT_TYPES config parameter;

    • persons age > person_full_legal_capacity_age global parameter and exists at least one active and approved confidant person relationship for person (using following process Check confidant person relationship with person_id = person from request - expected :ok, :approved response)

      • In case of error - return 409 (‘Request must be authorized by confidant person’)

  • If not equal - validate relationship with following steps:

    • Check that there is registered relationship between person_id and applicant_person_id (MPI.confidant_person_relationships)

    • Check that relationship is VERIFIED

      • In case of error - return 409 (‘Can’t confirm relationship’)

    • Check that applicant_person_id exists (status = 'active' & is_active = 'true') and has verification_status any but NOT_VERIFIED

      • In case of error - return 409 (‘Confidant person not found or is not verified’)

Validate Declaration

  • Check that declaration with such ID:

    • exists in the system (ops DB)

    • belongs to patient

      • in case of error - return 404 ('not found')

  • Check declaration status = active

    • in case of error return 403. Message: ‘Declaration is not active’

  • Check declaration status one of the following (active, pending_verification)

    • in case of error return 409. Message: ‘Invalid declaration status’

Service logic

  1. Update declaration in ops.declarations table:

    1. set status = 'TERMINATED'

    2. set reason_description = $.reason_description from request

    3. set declarations.reason to `manual_person`

  2. Add new status to event manager

...