Table of Contents |
---|
...
- NHS employee with scopes 'contract_requests:writeupdate' can change contract request
- Contract request only in status 'NEW' could be changed.
- NHS employee can change only several field of the contract request and not all of them
Specification
- apiary
- json_schema
Request
Validation
Validate token
- Verify the validity of access token
- Return 401 in case validation fails
- token is not expired
- in case error return 401 - "Token is expired"
Validate
...
user
...
Validate user
extract user_id from token
extract client_id from token
- Check if user is active
- in case error return 403 - (user is not active)
- check nhs_legal_entity is active
- in case error return 403 - (Client is not active)
Validate
...
scopes
- Check user scopes in order to perform this action (scope = 'contract_requests:update')
- Return 403 in case invalid scope(s)
Validate status
- Check if status=NEW
- in case error return 422 - "Incorrect status of contract_request to modify it"
Validate changed fields
- Only next field could be changed by nhs employee
- issue_city
- = nhs_le City, where address_type=REGISTRATION
- nhs_base - що діє на підставі
- price - Загальна орієнтовна Ціна Договору
- status (enum)
Response
...
Generate Printout form
If status
...
is changed to APPROVED - generate printout form
Invoke MAN to render print form.
Request mapping:
Parameter | Source |
---|---|
id | CONTRACT_REQUEST |
Code Block | ||
---|---|---|
| ||
curl --request POST \
--header 'Accept: text/html' \
--header 'Content-Type: application/json' \
{:host}/templates/{:contract_printout_id}/actions/render |
Set IL.contract_request.printout_content:
MANResponse.$.data |
Add to evemt manager
if status was changed (status = APPROVED, DECLINED or SIGNED) - add new status to event_manager
field | value |
---|---|
event_type | StatusChangeEvent |
entity_type | Contract_request |
entity_id | $.id |
properties.status. | $.status |
event_time | $.update_at |
changed_by | $.changed_by |