Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Purpose

This procedure is designed for using timeout in resending SMS flow.

Key Point

  • In order to remove expired attempts records are saved in Redis db with expire parameter.

Input Parameters

  • MAX_ATTEMPTS_COUNT - specifies the maximum number of retries before resend is rejected;

  • SEND_TIMEOUT -specifies a number of seconds to wait to retry sending after an error condition ;(attempts.count() >= MAX_ATTEMPTS_COUNT);

  • entity_name - i.e. “medication_request”;

  • entity_id - i.e. medication_request_id.

Logic

...

Get array with all attempts which start with “{entity_name}:{entity_id}” from Redis db using script:

Code Block
[redis] KEYS $"{entity_name}:{entity_id}_*"

...

Get attempts.count();

...

If attempts.count() < MAX_ATTEMPTS_COUNT

  • generate attempt_id using structure: {entity_name}:{entity_id}_{datetime.now()},
    (i.e. "medication_request:b075f148-7f93-4fc2-b2ec-2d81b19a9b7_2022-12-22T10:30:45.255687")

  • save attempt to Redis db using attempt_id as key and datetime.now() as value using script:

    Code Block
    [redis] set attempt_id $"{datetime.now()}"
  • set timeout to attempt with SEND_TIMEOUT parameter using script:

    Code Block
    [redis] expire key SEND_TIMEOUT
  • return 200 (ok).20

Else (attempts.count() >= MAX_ATTEMPTS_COUNT)

...

do not save attempt;

...

The page is not supported. The method requirements can be found here SMS timeout procedure