Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

    1. 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

    1. 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, required

    • in 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, required

    • in 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, required

    • in 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, required

    • in 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