Versions Compared

Key

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

...

  1. Contact Tracer (CT) begins CT interview over phone

  2. CT prompts interviewee to upload data from SafePaths app to SafePlaces

  3. CT works with interviewee to redact, update, and add points of concern

  4. CT concludes interview and transitions case data from “In Progress” state to “Staged for Publishing”

  5. Admin user of SafePlaces/HA selects cases that are in a state of “Staged for Publishing”

  6. Admin user performs further redaction on aggregated case data

  7. After further redaction, the admin user transitions the cases from “Staged for Publishing” to a “Released for Publishing” “Publishing” stateThe admin user will then make trigger the creation of the JSON file by submitting one final API request from the SafePlaces UI resulting in the SafePlaces application creating a JSON file of the anonymized aggregate data .

  8. Transitioning a set of cases to a “Published” state will result in the creation of a publication record that is associated with all of the cases. The publication record will be representative of the publishing – including a timestamp of when the publishing occurred and other metadata.

    All cases associated with the publication will be aggregated, anonymized, serialized as JSON, and written to a temp file (see The File that is Downloaded for how file(s) will be structured). The file is then programmatically uploaded

    After being generated, the file(s) will be programmatically transferred to the location the HA plans to host published data from. will host the JSON file from (specified in the organization’s settings). How an HA serves up the file could differ from one HA to the next (could be AWS s3, gcloud, standard file server, etc.). The HA is responsible for implementing this functionality within their own API or by extending the existing example application.

  9. SafePaths mobile application hits the endpoint the HA has configured to host published data from and performs intersection logic

...

Example of the Cursor File:

Code Block
{
  version: '1.0',
  name: 'My Example Organization',
  publish_date_utc: 1591199908,
  info_website_url: 'http://info.wowza.com',
  api_endpoint_url: 'https://api.wowza.com/safe_paths/',
  privacy_policy_url: '',
  reference_website_url: 'https://reference.wowza.com/',
  notification_threshold_percent: 66,
  notification_threshold_count: 6,
  pages: [
    {
      id: '1590395806_1590399405',
      startTimestamp: 1590395806,
      endTimestamp: 1590399405,
      filename: 'https://api.wowza.com/safe_paths/1590395806_1590399405.json'
    },
    {
      id: '1590399406_1590403005',
      startTimestamp: 1590399406,
      endTimestamp: 1590403005,
      filename: 'https://api.wowza.com/safe_paths/1590399406_1590403005.json'
    },
    {
      id: '1590403006_1590406605',
      startTimestamp: 1590403006,
      endTimestamp: 1590406605,
      filename: 'https://api.wowza.com/safe_paths/1590403006_1590406605.json'
    },
    {
      id: '1590406606_1590410205',
      startTimestamp: 1590406606,
      endTimestamp: 1590410205,
      filename: 'https://api.wowza.com/safe_paths/1590406606_1590410205.json'
    },
    {
      id: '1590410206_1590413805',
      startTimestamp: 1590410206,
      endTimestamp: 1590413805,
      filename: 'https://api.wowza.com/safe_paths/1590410206_1590413805.json'
    }
  ]
}

As the device iterates through this list it will pull down the filename which will contain the contact points data. Those files will contain the following.

Code Block
{
  version: 2.0,
  authority_name: 'My Example Organization',
  publish_date_utc: 1590268155,
  info_website: 'http://sample.com',
  notification_threshold_percent: 66,
  notification_threshold_count: 6,
  concern_point_hashes: [ '416aa7c7caef6032', '201c55540de7155c' ],
  pages_name: 'https://api.wowza.com/safe_paths/1590395806_1590399405.json'
}

...