Form Memory (Overview)


Due to our vigilant adherence to privacy and security protocols, Ocean will not store or remember any long-term identifiable information about patients directly. It is intentionally designed to NOT be a replacement for your electronic medical record (EMR) and as a result, relies on your EMR for long-term storage.

However, the EMR isn't always capable of storing certain information in a workable, reusable format for clinical purposes. Specific eForm answers or prior submissions of Ocean forms don't always map well to EMR fields or necessarily re-uploaded when Ocean is used again for the same patient. For example, you may want to have Ocean only show a form once, or re-display prior answers from a patient when a form is shown a second time.

As a result, these fields are more easily tracked by Ocean itself, using Form Memory. Form Memory allows you to store the above described information from Ocean, without compromising patient privacy.

How It Works

To link prior answers to patients, Ocean uses a "one-directional cryptographic hashing" of static patient fields, like their health number and birth date. This hashing creates a unique pseudonym key that can be used to link prior answers for the same patient, without allowing anyone to identify the patient behind a given key.

Form Memory allows you to include variables such as "daysSinceLastCompleted" and "firstTime" in eForm scripting and tablet rules, in order to enable screening for chronic conditions, periodic clinic administration forms, longitudinal research studies, or (in a more complex situation) stateful "sessions" with patients using the "rememberTag" to maintain state.

To learn more about writing Tablet Rules with Form Memory, please refer to "Writing Tablet Rules Based on Form Memory".

Caveats for Using Form Memory

Form Memory is best used as a useful shortcut, rather than a persistent data storage repository for patient information. Form Memory cannot guarantee that a patient's information will always be available in the future. For example, if a patient changes their surname or their sex, their previous answers will no longer be accessible.

As a fail-safe, make sure your EMR has a free-text clinical note that captures the equivalent clinical information that you're storing using Form Memory. You can configure this by ensuring the eForms generate an appropriate note (along with tagged vitals if desired).

Important Note:

We stress again that for a number of medico-legal and technical reasons, your EMR must be the ultimate repository for a patient's clinical information. Please DO NOT RELY on Form Memory to store mission-critical health information.

Using Form Memory

In order for Form Memory to work, the following conditions must be met:

    • The eForm must have form memory enabled. To do this, open your eForm in the eForm Editor, expand the Action menu (at the top right), select "Form Properties", navigate to the "Form Storage and Memory" tab, and set the "Form Memory" field to "Enabled".
    • A patient must have sufficient static identifiable demographic information in Ocean to generate their unique pseudonym. In particular, the patient's chart must contain their: surname, birthdate, and sex.
    • The patient must complete and submit the eForm by selecting either the "Next" or "Finish" button.

Note: HN is not a mandatory field but will be used if available.

  • Once Form Memory has been enabled on a particular Ocean eForm, there are 2 optional parameters in this dialog when activating Form Memory:
Remember If Expression:
This value is shown only if Form Memory is set to "Based on Script Expression". It allows you to conditionally use Form Memory depending on a script expression.
For example, you could have a checkbox "rememberMyAnswersForNextTime" on the form, and enter the following as the Remember If Expression.
rememberMyAnswersForNextTime.r == 'Y'
Remember Tag Expression:
This value allows you to store any text string on the form as a variable.
For example, if you had two answers on a form that you would like to remember, myAnswer1 and myAnswer2, you could use the following as the string that stores both values for "myAnswer1 and "myAnswer2".
myAnswer1.r + '|' + myAnswer2.r

Writing Tablet Rules Based on Form Memory

In order to actually make use of Form Memory, you'll need to refer to it in some manner, usually via the scripting in tablet rules, eForm Actions, eForm item visibility calculations, or formulas. Form Memory is most commonly used by Tablet Rules, for which the following variables are available:

This variable is true when there is no Form Memory of a prior form completion for the current patient (i.e. it's the first time they're completing a form).
This variable will return the number of days since the form was last completed for the current patient.
For example, you may want to show an Email Consent form every 6 months by using the rule: daysSinceLastCompleted > 180.
If it's the first time the form is shown (i.e. no prior completions), the value is infinity.
This variable will use the string value stored by the "Remember Tag Expression" in the eForm Editor during the previous form's usage (used for storing of arbitrarily complex sets of values), as described below.
For example, based on the example given in the Remember Tag Expression above, lastCompletedTag.split("|") would return a string array containing the previous form's values stored by Form Memory.


Tip: You may find it useful during your testing to add a formula item with caption "lastCompletedTag: $$" and formula "lastCompletedTag". This formula will allow you to see the value of the lastCompletedTag in your test eForm in real time.


Retrieving Information from the Same Form Retrieving Information from Other Forms

Suppose you have a form: Form 1.

You want to be able to access a value entered in Form 1 during a previous tablet session. In this situation, you would need to set the various Form Memory fields, as follows:

In Form A, set the "Remember If Expression" to:

Copy Rule

Then set the "Remember Tag Expression" to:

Copy Rule

Then, use the following tablet rule to pull up this form again, based on this stored value:

lastCompletedTag == 'N'
Copy Rule

Deleting Patient Form Memory

Form Memory is the ability for Ocean to remember a patient's Ocean eForm completion history. A detailed description of Ocean's Form Memory feature can be found in "Form Memory (Overview)".

Form Memory is very useful for preventing duplicate eForm submissions, so you will generally not need to override this function. However, there are a number of reasons in which you might want to tell Ocean to delete a patient's form completion history. For example, if you are testing a form with sections that hide/show depending on the last time it was completed or an eForm Action that depends on first-time usage. In addition, if a patient legitimately needs to re-complete a form that is hidden due to the patient's previous completion, you'll need to delete their form memory.

  • To reset the form memory for a patient, first make sure the patient is loaded into the Patients view in the Ocean Portal:
  • Note: If you don't see your patient in the Patients view, you may need to upload them into Ocean (by accessing the Ocean custom form in the patient's chart in your EMR or by fetching the patient by entering their health number into the Ocean Portal).
  • Then, back in the Ocean Portal, in the Patients view, click on the patient and view the patient's pop-up information. Click "Advanced" and select "View Form Memory". Within this option, you can "Clear Form Memory"
  • Note: Remember that Ocean isn't remembering the actual patient data, but rather a cryptographic hash that cannot be reversed.