...
Get Patient identifier from the URL
Check it exists in the DB
Return 404 ('Person is not found') in case of error
Validate patient is an active person or preperson
in case of error - return 409 ('Patient Person is not active')
Validate person'sverification_status is not equal to NOT_VERIFIED (not for preperson).
in case NOT_VERIFIED - return error 409, "Patient is not verified"
...
Array item has type of {Reference} to Service Request resource
in case of error - return 422 ('value is not allowed in enum')
Service Request exists in the DB and relates to the patient ($.subject)
in case of error - return 422 ("Service request not found")
Service Request’s status is active or program_processing_status is in_progress (any status is valid in case program_processing_status= in_progress)
in case of error - return 422 ("Service request is not active or in progress")
If used_by_legal_entity is set in the Service request (program_processing_status=in_progress), then check it matches the client_id from token
in case of error - return 422 ("Service request is used by another must be related to the same legal entity")
Check if Service Request’s expiration date is less then or equal to current date
in case of error - return 422 ("Service request expiration date must be greater than or equal to current date")
...
Check it references to employee or patient resource
in case of error - return 422 ('value is not allowed in enum')
If collector is an employee:
Check it exists in the DB
in case of error - return 422 ('Employee with such ID is not found')
Check it is active and approved
in case of error - return 422 ('Invalid employee status')
Check that employee is related to the legal entity (client_id) from token
in case of error - return 422 ('Employee doesn't belong to your legal entity')
If collector is a patient:
Check it is current patient (subject)
in case of error - return 422 ('In case collector is patient it must be the current patient')
...
Check that $.collection.quantity.system is
eHealth/ucum/units
dictionary, requiredin case of error - return 422 ('value is not allowed in enum')
Check that $.collection.quantity.code comply with $.collection.quantity.system, required
in case of error - return 422 ('value is not allowed in enum')
Check $.collection.quantity.value is not empty, is float, greater than zero
in case of error - return corresponding 422 schema validation error('value must be greater than 0')
Check that $.collection.quantity.value >= sum($.container.specimen_quantity.value)
in case of error - return 422 ('Collected quantity must not be exceeded by the specimen quantity distributed among the containers')
...
Check that $.collection.duration.system is
eHealth/ucum/units
dictionary, requiredin case of error - return 422 ('value is not allowed in enum')
Check that $.collection.duration.code comply with $.collection.duration.system, required
in case of error - return 422 ('value is not allowed in enum')
Check $.collection.duration.value is not empty, is float, greater than zero
in case of error - return corresponding 422 schema validation error('must be greater than 0')
5. Method
Validate value in the field $.collection.method , CodeableConcept type, optional.
...
Check that $.container.capacity.system is
eHealth/ucum/units
dictionary, requiredin case of error - return 422 ('value is not allowed in enum')
Check that $.container.capacity.code comply with $.container.capacity.system, required
in case of error - return 422 ('value is not allowed in enum')
Check $.container.capacity.value is not empty, is float, greater than zero
in case of error - return corresponding 422 schema validation error('value must be greater than 0')
4. Specimen quantity
Validate value in the field $container.specimen_quantity, SimpleQuantity type, required
Check that $.container.specimen_quantity.system is
eHealth/ucum/units
dictionary, requiredin case of error - return 422 ('value is not allowed in enum')
Check that $.container.specimen_quantity.code comply with $.container.specimen_quantity.system, required
in case of error - return 422 ('value is not allowed in enum')
Check $.container.specimen_quantity.value is not empty, is float, greater than zero
in case of error - return corresponding 422 schema validation error('value must be greater than 0')
Check that $.container.specimen_quantity.code matches to $.collection.quantity.code
in case of error - return 422 (Does not match the code of the collected quantity)
...
HTTP status code | Message | What caused the error |
400 | Invalid signed content | |
401 | Invalid access token | |
403 | Access denied. Party is not verified | |
403 | Access denied. Party is deceased | |
403 | Your scope does not allow to access this resource. Missing allowances: specimen:write | |
404 | Person is not found | |
409 | Patient is not verified | |
409 | 'client_id refers to legal entity that is not active' | |
409 | 'Patient Person is not active' | |
422 | Service request expiration date must be greater than or equal to current date | |
422 | Service request is not active or in progress | |
422 | Identifier already exists in the specimen | |
422 | Legal entity with such id is not found | |
422 | Service request is used by another must be related to the same legal entity | |
422 | Service request not found | |
422 | Does not match the signer drfo | |
422 | Collected quantity must not be exceeded by the specimen quantity distributed among the containers | |
422 | Date must be greater than <current date - SPECIMEN_MAX_DAYS_PASSED> | |
422 | Does not match the code of the collected quantity | |
422 | Employee doesn't belong to your legal entity | |
422 | Employee with such ID is not found | |
422 | End date must be greater than or equal the start date | |
422 | End date must be in past | |
422 | Invalid employee status | |
422 | Invalid specimen status | |
422 | Must be in past | |
422 | not allowed in enum | |
422 | value is not allowed in enum | |
422 | Patient is not active | |
422 | Patient not found | |
422 | Specimen not found | |
422 | Start date must be in past | |
422 | User is not allowed to register a specimen for the employee | |
422 | value is not allowed in enummust be greater than 0 | |
422 | schema validation error | |
422 | Managing_organization does not correspond to user's legal_entity | |
422 | Specimen with id <id> already exists | |
422 | Only one of the parameters must be present | |
422 | In case collector is patient it must be the current patient |