Table of Contents |
---|
...
Валідація contract_type:
юридична особа з типом в (MSP,PRIMARY_CARE) може створити тілько договір капітації, юридична особа з типом в (PHARMACY) може створити тілько договір реімбурсації
в разі помилки 409 - "Contract type "{contract_type}" is not allowed for legal_entity with type "{legal_entity_type}" "
Валідація previous_request_id
вибрати id from contract_request де id=$.previous_request_id
якщо дані не знайдено згенерувати помилку 422 ("previous_request does not exist")
Перевірити previous_request status не рівно ('SIGNED')
в разі помилки згенерувати код 422 ('In case contract exists new contract request should be created')
Перевір contractor_legal_entity_id попереднього запиту рівний до contractor_legal_entity_id поточного запиту
в разі помилки згенерувати код 422 ('Previous request doesn't belong to legal entity')
Для договоду реімбурсації: Перевірити що id_form з $.previous_request_id рівний до id_form для запиту
в разі помилки згенерувати код 422 ('Id_form from previous request is not equal to id_form from request')
Валідація contractor_divisions
Превірити, що підрозділ належить до legal_entity та divisions.status='active'
в разі помилки згенерувати код 422 переглянути $divisions ('Division must be active and within current legal_entity')
Перевірити, що підрозділ в масиві зустрічається тілько один раз
в разі помилки згенерувати код 422 переглянути $divisions ('Division duplicates')
Валідація start_date
перевірити формат start_date (^(\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))?)?$)
в разі помилки згенерувати код 422 error $start_date ('"expected \"<start_date>" to be a valid ISO 8601 date"')
рік в start_date повинен співпадати з поточним або наступним роком (current+1).
в разі помилки згенерувати код 422 error $start_date ('Start date must be within this or next year')
Валідація end_date (Примітка. Дані валідації дійсні для випадків, коли contract_number не проходить перевірки в запиті. Якщо contract_number перевірено, проводяться валідації з 10.п)
перевірити формат end_date (^(\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))?)?$)
в разі помилки згенерувати код 422 error $end_date ('"expected \"<end_date>" to be a valid ISO 8601 date"')
рік повинен $end_date може бути наступним роком після 'start_date' якщо повний період договору не перевищує 1 року.
$end_date повинна бути більше або рівнятися $start_date
в разі помилки згенерувати код 422 ('The end_date should be greater or equal than the start_date')
різниця між $end_date та $start_date повинна бути не більше ніж 1 рік (365 або 366 днів)
в разі помилки згенерувати код 422 ('The difference between end_date and start_date is more than one year')
Валідація contractor_owner_id
Перевірити employees.employee_id=contractor_owner_id та client_id=employee.legal_entity_id та employee_type в ('OWNER', 'ADMIN') та status='APPROVED' та is_active=true
в разі помилки згенерувати код 422 Error ('Contractor owner must be an active OWNER or ADMIN and within current legal entity in contract request')
Якщо в напиті було надіслано contract_number:
перевірити структуру номеру договору XXXX-1234-5678-C , де:
XXXX - порядок: номер + літери з переліку (A, E, H, K, M, P, T, X)
1234-5678 - рандомного згенерований номер та літери A, E, H, K, M, P, T, X.
перевірити, що договір з даним contract_number
в разі помилки згенерувати код 422 ('Contract with such contract number does not exist')
перевірити, що договір не в статусі 'TERMINATED'
в разі помилки згенерувати код 409 ('Can not update terminated contract')
employee_divisions, start_date, end_date не можуть бути оновлені. Якщо є активний договіп з таким contract_number зкопіювати start_date, end_date та contractor_legal_entity_id з уже діючого договору. Це не можливо зробити через запит.
в разі помилки згенерувати код 422
перевірити підтверджений contract_type такий же, що і в діючому договорі з номером =contract_number
в разі помилки згенерувати код 409 ('Submitted contract_type does not correspond to previously created content`)
для запитів для договорів капітації та реімбурсації:
якщо $contract_number та $end_date проходять перевірки в запиті:
рік $end_date повинен бути більшим або рівним $start_date
в разі помилки згенерувати код 422 ('The year of end_date should be one year greater or equal to start_date')
$end_date повинна бути рівна або менша ніж більша ніж сьогодні і менша або дорвінювати даті ($end_date попереднього договору плюс 3 місяці)
в разі помилки згенерувати код 422 ('The end_date may be equal or greater than today and less than or equal to three month from end_date the previous contract')
якщо $contract_number w/o $end_date проходять перевірки в запиті:
$end_date береться з попереднього договору.
для договору реімбурсації:
перевірити id_form такий же
в разі помилки повернути 409 ('Submitted id_form does not correspond to previously created content`)
якщо medical_programs відповідає - перевірити згідно опису в п.13 нижче
Валідація contractor_payment_details:
якщо payer_account не дорівнює ^UA[0-9]{22}$ або ^UA[0-9]{27}$ -> MFO повинен запитуваись
Валідація id_from з довідника CONTRACT_TYPE (для договору капітації) та REIMBURSEMENT_CONTRACT_TYPE (для договору реімбурсації) :
в разі помилки згенерувати код 422 ('value is not allowed in enum')
Валідація - відсутні інші активні (VERIFIED) договори, створені даним legal_entity_id за даний period(contract_request.start_date <= contract.end_date and contract_request.end_date => contract.start_date) тим самим contract_type та id_form (для договору реімбурсації)
в разі помилки згенерувати код 422 ('Active contract is found. Contract number must be sent in request')
Для договору капітації: Валідація external_contractors
Перевірити external_contractors.divisions.id наявна для contractor_divisions.id
в разі помилки згенерувати код 422 $divisions ('The division is not belong to contractor_divisions')
Перевірити external_contractors.contract.expires_at>start_date
в разі помилки згенерувати код 422 $contract.expires_at ('Expires date must be greater than contract start_date')
Встановити external_contractors.legal_entity_id='client_id'
division_id з external_contractors блоку повинна бути належна до юридичної особи яка включається до договору капітації. В external_contractors.legal_entity_id необхідно вказати юридичну особу counter-party для даного division_id.
Для договору капітації: Валідація external_contractor_flag:
якщо external_contractors не null тоді external_contractor_flag повинен бути
true
якщо external_contractors не null тоді external_contractor_flag повинен бути false
в разі помилки згенерувати код 422 $external_contractor_flag ('Invalid external_contractor_flag')
якщо external_contractors не був відправлений в запиті тоді встановити external_contractor_flag до false.
Для договору реімбурсації: Валідація medical_programs:
Перевірити, що всі medical_programs з submitted ids існують
в разі помилки згенерувати код 422 переглянути $medical_programs[...] ('Reimbursement program with such id does not exist')
Перевірити, що medical_programs з підтвердженим id це активна програма
в разі помилки згенерувати код 422 переглянути $medical_programs[...] ('Reimbursement program is not active')
Перевірити, що всі медичні програми з вказаним MEDICATION type:
в разі помилки згенерувати код 422 переглянути $medical_programs[...] (‘Program with such id is not a reimbursement program')
Перевірити, що medical_programs з підтвердженим id відповідає до id_form згідно наведеного переліку:
...
id_form | medical_programs |
---|---|
PMD_1 | REIMBURSEMENT_CONTRACT_REQUEST_MEDICAL_PROGRAM_ID_DOSTUPNI_LIKY |
INSULIN_1 | REIMBURSEMENT_CONTRACT_REQUEST_MEDICAL_PROGRAM_ID_INSULIN_Z_DOPLATOYU REIMBURSEMENT_CONTRACT_REQUEST_MEDICAL_PROGRAM_ID_INSULIN_BEZ_DOPLATY |
ND_1 | REIMBURSEMENT_CONTRACT_REQUEST_MEDICAL_PROGRAM_ID_NETSUKROVYY_DIABET |
PSYCHIATRY | REIMBURSEMENT_CONTRACT_REQUEST_MEDICAL_PROGRAM_IDS_PSYCHIATRY |
GENERAL | REIMBURSEMENT_CONTRACT_REQUEST_MEDICAL_PROGRAM_IDS_GENERAL |
Примітка. Для GENERAL id_form користувач може вказати будь-яку кількість програм (але хоча б одну) зі списку в конфігурації. Також користувач може оновити список медичних програм, використовуючи логіку з розділ.7
Визначити первісний договір (опціонально)
...