Versions Compared

Key

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

Purpose

...

Page Properties

Link

https://ehealthmisapi1.docs.apiary.io/#reference/public.-reimbursement/medication-request/reject-medication-request

Посилання на Apiary або Swagger

Resource

/api/medication_requests/{{id}}/actions/reject

Посилання на ресурс, наприклад: /api/persons/create

Scope

medication_request:reject

Scope для доступу

Components

ePrescription

Зазначається перелік бізнес компонентів, які використовують цей метод, наприклад: ePrescription

Microservices

API paragraph not found

Перелік мікросервісів, які використовує метод API, наприклад: Auth, ABAC

Protocol type

REST

Тип протоколу, який використовується запитом, наприклад: SOAP | REST

Request type

PATCH

Тип запиту API, наприклад: GET, POST, PATCH…

Sync/Async

Sync

Метод є синхронним чи асинхронним?

Public/Private/Internal

Public

Потрібно зазначити тип методу за ступенем доступності

Logic

  1. Save signed content to media storage.

  2. Update Medication request in OPS DB:

    1. set status = 'REJECTED'

    2. set reject_reason_code = $.reject_reason_code

    3. set reject_reason = $.reject_reason

    4. set updated_by = user_id

    5. set updated_at = now()

  3. Send SMS for person

    1. If Medication request has program with medical program setting medication_request_notification_disabled = true, then don't send SMS.

      Else:

      1. Get authentication_method of person from MPI

      2. If authentication_method == OTP, then send SMS to a person from Medication request:

        1. Generate SMS text (

          1. get template from reject_template_sms parameter

          2. enrich template with data from Medication request

        2. Send SMS to a person

  4. Add new status to event manager

field

value

event_type

StatusChangeEvent

entity_type

MedicationRequest

entity_id

$.id

properties.status.new_value

$.status

event_time

$.update_at

changed_by

$.changed_by

  1. f the medication request is based on the activity with quantity:

    1. Recalculate and set remaining_quantity for the activity as described at Create Medication Request: Validate based_on (p. 2.d.1 )and do not include current MR but include all MD which related to current MR

Технічний опис бізнес-процесу виписування рецепту в ЕСОЗ (загальний процес для усіх рецептурних ЛЗ, в т.ч. і тих, які підлягають реімбурсації)

...

  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 = 'medication_request:reject')

    • return 403 (“Your scope does not allow to access this resource. Missing allowances: medication_request:reject”) in case of invalid scope(s)

  4. If BLOCK_UNVERIFIED_PARTY_USERS is true, then check party's data match following condition: verification_status != NOT_VERIFIED or (verification_status = NOT_VERIFIED and updated_at <= current_date - UNVERIFIED_PARTY_PERIOD_DAYS_ALLOWED):

    • in case not match - return 403 ("Access denied. Party is not verified")

Headers

Content-Type:application/json

...

  • Medical program is optional object in order.

  • Medical program is absent in plan.

Validation transition

...

For info - status charts: Medication_request.

...

Get Medication request status by $.id.

...

Check status of medication request == ACTIVE

  1. if invalid - return 409 error (message: "Invalid status Medication request for reject transition!")'.

...

Check connected medication dispenses medication_dispenses.status !== PROCESSED or NEW

  1. if invalid - return 409 error (message: "Medication request with connected processed medication dispenses can not be rejected").

...

Validate request using JSON schema

  1. In case validation fails - generate 422 error.

Validate content. Check equality decoded signed content with previously created medication request, except, "Reason"!

...

  • .

Validate Digital Sign

  • Validate request is signed

    • in case of error - return 400 (“document must be signed by 1 signer but contains 0 signatures”).

  • Check DS is valid and not expired.

  • Validate that DS belongs to the user

    • in case of error - return 400 (“Invalid signature“).

...

  • Medical program is required in order.

  • Medical program is absent in plan.

Validation transition

  • Get status of Medication request by $.id in OPS DB. Check that Medication request is in status ‘ACTIVE’

    • if invalid - return 409 ("Invalid status Medication request for reject transition!").

For more information look at Medication request status model .

Validate reject reason code

  • Validate $.reject_reason_code is a value from MEDICATION_REQUEST_REJECT_REASON dictionary

    • in case of error - return 422 ("value is not allowed in enum")

Parameters that are used when processing the request

...