Table of Contents | ||||
---|---|---|---|---|
|
...
Page Properties | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Логіка
...
Забрати employee_id з запиту
Перевірити співробітника
На існування
в разі помилки повернути код 422 з повідомленням ("Employee not found")
Перевірити, що $.employees.status == APPROVED
в разі помилки повернути код 409 з повідомленням ("Employee is not active")
Перевірити, що $.employees.legal_entity_id == client_id from token
в разі помилки повернути код 422 з повідомленням ("Employee does not belong to legal entity from token")
Перевірити, що $.employees.employee_type == <employee_type>
якщо medical_program_id є в запиті перевірити medical_program_settings.skip_employee_validation == false (або відсутня)
перевірити <employee_type>
отримати $.medical_programs.medical_program_setting по medical_program_id з запиту
перевірити, що employee_type наявна в параметрі employee_types_for_create_medication_request
в разі помилки повернути код 422 з повідомленням ("Employee type can't create medication request with medical program from request")
якщо employee_type = DOCTOR
отримати $.declarations by employee_id, person_id, status=ACTIVE або перевірити параметр MEDICATION_REQUEST_DECLARATION_VERIFY (який дозволяє створити запит на рецепт для будь-якого лікаря в LE де персона має декларацію)
якщо не знайдено - повернути код 422 (повідомлення: "Employee must have an active declaration with the patient to create medication request!")
якщо employee_type = SPECIALIST
отримати $.employees.speciality.speciality(speciality_officio == true)
перевірити, що вказана спеціальність in$.medical_programs.medical_program_setting.speciality_types_allowed variable
в разі помилки повернути код 422 з повідомленням ("Employee's specialty doesn't allow create medication request with medical program from request")
у випадку, якщо Employee_type = MED_COORDINATOR
і. пропустити перевірку спеціальності в змінній $.medical_programs.medical_program_setting.speciality_types_allowed
якщо medical_program_settings.skip_employee_validation == true або відсутня medical_program_id в запиті, будь-який користувач, який має скоуп може створити запит на рецепт
...
Перевірити План лікування:
Від повинен належати тій же персоні, що і набір в MRR
в разі помилки повернути код 422 з повідомленням ("Care plan not found")
Від повинен бути в статусі active
Перевірити вказану активність:
Вона відповідає Плану лікування.
в разі помилки повернути код 422 з повідомленням ("Activity not found")
Вона має activity.detail.kind=medication_request; activity.detail.product_reference=medication_id.
в разі помилки повернути код 422 з повідомленням ("Invalid activity kind")
Вона має статус scheduled, in_progress status
у випадку помилки повернути 422 з повідомленням ("Invalid activity status")
Якщо вона має quantity порахувати remaining quantity:
вибрати всі MRR в статусі NEW які створені на основі даної активності
вибрати всі MR в статусах ACTIVE, COMPLETED які створені на основі даної активності
порахувати зарезервовану на сьогодні кількість, як суму medication_qty у профільтрованому MRR та MR списку, включаючи medication_qty з поточного MRR
порахувати вказану кількість шляхом віднімання зарезервованої кількості з кількості активностей
Перевірити remaining quantity більше або дорівнює 0
в разі помилки повернути код 409 "The total amount of the prescribed medication quantity exceeds quantity in care plan activity"
перевірити, що medical_program_id дорівнює $.activity[].program
в разі помилки повернути код 422 з повідомленням ("Medical program from activity should be equal to medical program from request")
Перевірити started_at/ended_at для запиту рецепту:
Якщо активність плану лікування має detail.scheduled_timing.repeat.bounds_period - перевірити started_at/ended_at включаючи bounds_period
Якщо план активності має detail.scheduled_period - перевірити started_at/ended_at включаючи scheduled_period
в іншому випадку - перевірити started_at/ended_at включаючи care_plan.period
у випадку якщо started_at/ended_at не в межах care_plan.period повернути код 422 з повідомленням ("Invalid care plan period")
...
Згенерувати номер для рецепту (See specs)
Code Block Structure number XXXX-1234-5678-9012-345-C , where: - XXXX - series: numbers + only some letters (A, E, H, K, M, P, T, X) - 1234-5678-9012-345 - randomly generated numbers - C - checksum: Should be calculated using the Damn algorithm or Verhoeff algorithm After new Request number was generated we should check that it is unique in the DB (entity: medication_request + medication_request_request
Згенерувати verification_code для MPI.person_authentication_methods == OTP або OFFLINE
Code Block Structure code 1234, where: - 1234 - randomly generated numbers
...
HTTP статус код | Повідомлення | Що викликало помилку |
---|---|---|
201 | Відповідь |
|
401 | Валидацію токена Перевірку scope не пройдено | |
409 | Помилка валідації | |
422 | Помилка валідації |
...