Before you begin, we recommend perusing the DeepAffex™ Developer Guide so that you have a basic understanding of NuraLogix™ DeepAffex™ technologies and terminologies. Please be sure to read the first two chapters - Introduction and Getting Started.

The Web Measurement Service is designed for a simple use-case, explained in the scenario described below.

Scenario overview and concepts

The user visits your website hosting a single-page application (called "app" hereafter).

In the field, the app (which you develop) will manage:

  • user authentication
  • user consent
  • collecting subject's profile information and
  • collecting answers to subject's medical history questionnaire
  • obtaining a token and a refresh token from the DeepAffex API

Then, the app will redirect the user to WMS with the profile information that is necessary to take a measurement. On WMS, the user will complete a measurement and then WMS will redirect the user back to the app with the results of the measurement.

Information will be passed from the app to WMS through a specially crafted URL (the "call-in" URL). Since this URL will contain personal information, it will be encrypted so that only a specially configured WMS will be able to read the information. Additionally, for the app to link the measurements results to the user's profile, a unique Partner ID will also be passed along with the user profile details to WMS.

The measurement results will be passed back via a preconfigured "callback" URL.

Measurement Flow

The details of the measurement flow described above are captured in the following diagram.

    participant TPAPI as Third-party Cloud
    participant APP as Third-party app
    participant WMS as Web Measurement Service
    participant DFX as DeepAffex API

    APP->>+TPAPI: Request short-lived DFX_AUTH_TOKEN
    TPAPI->>+DFX: Request short-lived DFX_AUTH_TOKEN
    TPAPI-->>-APP: Return short-lived DFX_AUTH_TOKEN & DFX_REFRESH_TOKEN

    Note over APP: PROFILE_DATA { "identifier": [PartnerID], "height": 175, "weight": 75, ... }
    APP->>APP: Generate SESSION_ID
    APP->>APP: Encrypt PROFILE_DATA with public key and construct WMS URL

    APP->>WMS: Call WMS at WMS_URL
    WMS->>WMS: Decrypt PROFILE_DATA with private key

    loop Until measurement is successful
        WMS->>DFX: Create Measurement
        DFX-->>WMS: Return MeasurementID
        WMS->>DFX: Subscribe Results
        activate DFX
        loop Until all payloads are sent
            WMS-)DFX: Add Data
            DFX--)WMS: Send Results
        deactivate DFX

    WMS-->>APP: Send MeasurementID and Results back through CALLBACK_URL (SESSION_ID in Results)
    Note over WMS,APP:<<base64encoded>>

(Click here to open a larger version of this diagram in a new window)