Product Registration

From OpenEMR Project Wiki
Revision as of 03:03, 20 September 2016 by Matthew Vita (talk | contribs) (Created page with "==Goal== Goal: Allow users to (optionally) one-time register their OpenEMR installation to improve visibility on unique users. After registering, users will receive email update...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Goal

Goal: Allow users to (optionally) one-time register their OpenEMR installation to improve visibility on unique users. After registering, users will receive email updates when OpenEMR is updated (including security updates).

Approach

Active PR: https://github.com/openemr/openemr/pull/257

High level: I can't imagine the service being more than a POST with email and registration_id, a GET endpoint that returns SELECT count(*) AS 'Number of Unique OpenEMR Registrations' FROM product_registration, and a POST with a message, secret_pin, and new_release_number that triggers AWS SES to inform all users of a new release/security patch. If we really wanted to, we could also capture sender IPs when adding the entry to combat spam.

Low(er) level: We'll have a new database table "product_registration" that has "id", "email", and "opt_out" columns. Regardless of if you just installed OpenEMR or are upgrading it, if you don't have a row in that table, the modal will appear on the login page. If you type your email and hit submit, it will update the table with ("some-uuid", "your@email.com", false) and will send this information to a custom php endpoint exposed at open-emr.org (we can use a file database to store the entries over there... no UI for an MVP implementation). The modal will never show up again after this point.

If you hit "no thanks", it will update the table with (null, null, true) and nothing will be sent to the open-emr.org endpoint. The modal will never show up again after this point.

If you hit "x", the modal will re-appear the next time you are at the login page.

Should be on "about" area as well.

Tasks

  • (Matthew) Set up unrestricted endpoints (local system)
  • (Matthew) Add security globals to new PHP files
  • (UNASSIGNED) Implement on about area
  • (UNASSIGNED) Setup DNS routing
  • (UNASSIGNED) Setup SES
  • (UNASSIGNED) Implement GET status endpoint (local system)
  • (UNASSIGNED) Implement POST register endpoint (local system)
  • (UNASSIGNED) Implement POST register endpoint (AWS endpoint)
  • (UNASSIGNED) Implement SES integration (AWS endpoint)
  • (UNASSIGNED) Implement GET number of users (AWS endpoint)
  • (UNASSIGNED) JavaScript implementation

Completed

  • (Matthew/Robert/Brady) Determine overall strategy
  • (Matthew) Determine overall software design strategy
  • (Matthew) Set up jQuery modal