Versions Compared

Key

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

...

Page Properties
idAPI_Specification

Link

https://ehealthmisapi1.docs.apiary.io/#reference/public.-medical-service-provider-integration-layer/divisions/update-division

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

Resource

/api/divisions/{{id}}

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

Scope

division:write

Scope для доступу

Components

Divisions

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

Microservices

il/api

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

Protocol type

REST

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

Request type

PATCH

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

Sync/Async

Sync

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

Public/Private/Internal

Public

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

Logic

  1. Only authenticated and authorized user of this legal entity with appropriate scope can update division.

  2. Division can be updated for RESIDENCE, REGISTRATION addresses types.

  3. Division can be updated for legal entities in ACTIVE or SUSPENDED statuses.

  4. Editable information on division:

    • name

    • addresses

    • phones

    • email

    •  add the gps-coordinates attributed to the division (location)

    • working hours

...

Expand
titleRequest example
Code Block
{
  "name": "Бориспільське відділення Клініки Ноунейм",
  "addresses": [
    {
      "type": "RESIDENCE",
      "country": "UA",
      "area": "Житомирська",
      "region": "Бердичівський",
      "settlement": "Київ",
      "settlement_type": "CITY",
      "settlement_id": "b075f148",
      "street_type": "STREET",
      "street": "вул. Ніжинська",
      "building": "15",
      "apartment": "23",
      "zip": "02090"
    }
  ],
  "phones": [
    {
      "type": "MOBILE",
      "number": "+380503410870"
    }
  ],
  "email": "email@example.com",
  "working_hours": {
    "mon": [
      [
        "08.00",
        "12.00"
      ],
      [
        "14.00",
        "18.00"
      ]
    ],
    "tue": [
      [
        "08.00",
        "12.00"
      ]
    ],
    "wed": [
      [
        "08.00",
        "12.00"
      ]
    ],
    "thu": [
      [
        "08.00",
        "12.00"
      ]
    ],
    "fri": [
      [
        "08.00",
        "12.00"
      ]
    ]
  },
  "type": "CLINIC",
  "legal_entity_id": "c8aadb87-ecb9-41ca-9ad4-ffdfe1dd89c9",
  "external_id": "3213213",
  "location": {
    "latitude": 30.1233,
    "longitude": 50.32423
  }
}

Authorize

Request to process the request using a token in the headers

Headers

Content-Type:application/json
Authorization:Bearer {{access_token}}
API-key:{{secret}}

Request data validation

  1. Verify the validity of access token

  2. Check user scope (scope = 'division:write') in order to perform this action

    1. In case error generate 401 response

  3. 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):

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

Headers

Content-Type:application/json
Authorization:Bearer {{access_token}}
API-key:{{secret}}

Request data validation

Validate location

Location is required for divisions related to legal entity with type PHARMACY

...

  1. Check that addresses.type exists in dictionaries. Addresses type required (RESIDENCE,REGISTRATION)

    1. In case error generate 422 response"value is not allowed in enum"

  2. Check that address addresses.area exists in Uaddresses.areas

    1. in case error generate 422 response

...

    1. "invalid area value"

  1. Check that addresses.settlement exists in Uaddresses.settlements

    1. in case error generate 422 "invalid settlement value"

  2. Check that phone addresses.settlement_type exists in dictionaries. PHONE_TYPE required (MOBILE,LAND_LINE)

    1. in case error generate 422 response

    Check phone number is valid according to "^\\+38[0-9]{10}$"
    1. "value is not allowed in enum"

  3. Check that addresses.settlement_id exists in Uaddresses.settlements

    1. in case error generate 422 response

Validate email

  1. Check that email is valid according to "~r/^[\\w!#$%&'*+\\/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+\\/=?`{|}~^-]+)*@(?:[A-Z0-9-]+\\.)+[A-Z]{2,6}$/i"
    1. "settlement with id = <id> does not exist"

  2. Check that addresses.street_type exists in dictionaries.

    1. In case error generate 422 "value is not allowed in enum"

  3. Check that addresses.zip in "^[0-9]{5}$" format.

    1. In case error generate 422 "string does not match pattern \"^[0-9]{5}$\""

  4. Check mapping legal_entity_type, division_type and address_type and its obligation. See validation rules here: Validation rules on Divisions 

    1. in case error generate 422 response

Validate

...

phone

  1. Check that phone type exists in dictionaries. Type  PHONE_TYPE required   (DRUGSTORE,DRUGSTORE2,CLINIC,AMBULANT_CLINIC,FAPMOBILE,LAND_LINE)

    1. in case error generate 422 response

  2. Check mapping of legal_entity_type and division type. phone number is valid according to "^\\+38[0-9]{10}$"

    1. in case error generate 422 response

Processing

...

Verify the validity of access token

...

Check user scope (scope = 'division:write') in order to perform this action

  1. In case error generate 401 response

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):

...

Validate email

  1. Check that email is valid according to "~r/^[\\w!#$%&'*+\\/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+\\/=?`{|}~^-]+)*@(?:[A-Z0-9-]+\\.)+[A-Z]{2,6}$/i"

    1. in case error generate 422 response

Validate type

  1. Check that type exists in dictionaries. Type required  (DRUGSTORE,DRUGSTORE2,CLINIC,AMBULANT_CLINIC,FAP)

    1. in case error generate 422 response

  2. Check mapping of legal_entity_type and division type. 

    1. in case error generate 422 response

Processing

Response structure

Example:

...

Page Properties
idAPI_HTTP status codes

HTTP status code

Message

What caused the error

 200

 Response

 

401

Authorization failed

403

Access denied

422

Validation failed