Overall Application Architecture

This section covers current and target designs.

Current architecture with the HDS db.

Application Components

Here we discuss the software components developed for the openIDL system.

User Interface Components

openIDL Common Lib

folder: openidl-common-lib

This is a common component used by other components.

Dependencies

@openidl-org/openidl-common-lib@0.5.8
├── @cloudant/cloudant@4.2.1
├── @ibm-functions/iam-token-manager@1.0.5
├── @sendgrid/mail@7.4.5
├── fabric-ca-client@2.2.9
├── fabric-network@2.2.9
├── ibmcloud-appid@6.1.1
├── log4js@4.3.2
├── mongodb@3.7.2
├── node-vault@0.9.22
├── passport@0.4.1
├── passport-cognito@0.2.2
├── request-promise@4.2.6
└── safe-eval@0.4.1

openIDL Data Call App

folder: openidl-data-call-app

This component serves as the api for the data call ui.

Dependencies

app@1.0.1

├── @openidl-org/openidl-common-lib@0.5.8
├── @sendgrid/mail@7.4.7
├── body-parser@1.19.0
├── config@2.0.2
├── cookie-parser@1.4.5
├── cors@2.8.5
├── express@4.17.1
├── express-session@1.17.2
├── helmet@3.21.2
├── http-errors@1.6.3
├── js-yaml@3.14.1
├── lodash@4.17.21
├── log4js@4.5.1
├── moment@2.29.1
├── node-fetch@2.6.5
├── swagger-ui-express@3.0.10
└── uuid@3.4.0

openIDL Data Call Mood Listener

folder: openidl-data-call-mood-listener

This component listens for events on the ledger.

Dependencies

openidl-data-call-mood-listener@1.0.1 
├── @openidl-org/openidl-common-lib@0.5.8
├── @sendgrid/mail@7.4.5
├── config@2.0.2
├── express@4.16.4
├── log4js@4.5.1
├── sinon@7.5.0
└── uuid@3.4.0

openIDL Data Call Processor

folder: openidl-data-call-processor

This component listens for the consent event and runs the extraction pattern.

Dependencies

openidl-data-call-processor@1.0.1 
├── @cloudant/cloudant@3.0.2
├── @openidl-org/openidl-common-lib@0.5.8
├── @sendgrid/mail@7.4.6
├── aws-sdk@2.474.0
├── config@2.0.2
├── cron@1.8.2
├── express@4.16.4
├── log4js@4.5.1
├── moment@2.29.1
├── mongodb@3.6.11
├── object-sizeof@1.6.1
├── sleep@6.3.0
└── uuid@3.4.0

openIDL Insurance Data Manager

folder: openidl-insurance-data-manager

This component provides an API to load data into the Harmonized Data Store.

Dependencies

app@1.0.1 
├── @openidl-org/openidl-common-lib@0.5.8
├── @sendgrid/mail@7.4.6
├── body-parser@1.19.0
├── config@2.0.2
├── cookie-parser@1.4.5
├── cors@2.8.5
├── crypto@1.0.1
├── express@4.16.4
├── express-session@1.17.2
├── helmet@3.21.2
├── http-errors@1.6.3
├── js-yaml@3.14.1
├── log4js@4.5.1
├── node-fetch@2.6.1
├── sort-json-array@0.1.7
├── swagger-ui-express@3.0.10
└── uuid@3.4.0

openIDL Transactional Data Event Listener

folder: openidl-transactional-data-event-listener

This component listens for data arriving on the analytics node and starts the reporting process.

Dependencies

transactional-data-event-listener@1.0.1
├── @cloudant/cloudant@3.0.2
├── @openidl-org/openidl-common-lib@0.5.8
├── @sendgrid/mail@7.4.6
├── aws-sdk@2.474.0
├── config@2.0.2
├── express@4.16.4
├── log4js@4.5.1
├── mongodb@3.6.11
└── object-sizeof@1.4.0

openIDL User Interface

folder: openidl-ui-workspace

This component holds all the UI components for openIDL in an angular workspace.

The dependencies are shared across all projects which are in the projects subfolder.

Dependencies

openidl-ui-workspace@0.0.0 
├── @angular/animations@12.1.5
├── @angular/cdk@12.1.4
├── @angular/common@12.1.5
├── @angular/compiler@12.1.5
├── @angular/core@12.1.5
├── @angular/forms@12.1.5
├── @angular/material@12.1.4
├── @angular/platform-browser@12.1.5
├── @angular/platform-browser-dynamic@12.1.5
├── @angular/router@12.1.5
├── @openidl-org/openidl-common-lib@0.5.8
├── config@3.3.6
├── cookie-parser@1.4.5
├── cors@2.8.5
├── express@4.17.1
├── express-session@1.17.2
├── helmet@3.23.3
├── ibmcloud-appid@6.1.1
├── log4js@4.5.1
├── moment@2.29.1
├── nconf@0.11.3
├── ngx-csv@0.3.2
├── nocache@2.1.0
├── node-fetch@2.6.1
├── passport@0.4.1
├── request-promise@4.2.6
├── rxjs@6.6.7
├── tslib@2.3.1
└── zone.js@0.11.4

openIDL UI

folder: openidl-ui-workspace/projects/openidl-ui

This component provides access to the system for the AAIS and Analytics nodes.

openIDL Carrier UI

folder: openidl-ui-workspace/projects/openidl-carrier-ui

This component provides access to the system for the Carrier nodes.

openIDL Common UI

folder: openidl-ui-workspace/projects/openidl-common-ui

This component provides common code for the UI components.


Dependencies

DependencyDescriptionDiscussion
@angularUI Framework
@cloudantThis is the official Cloudant library for Node.js.This library is now deprecated and will be end-of-life on Dec 31 2021.
@sendgrid/mailTwilio SendGrid NodeJS mail serviceCan be removed
aws-sdkAWS SDK for JavaScript
body-parserNode.js body parsing middleware.
configConfiguration control for production node deployments
cookie-parserParse Cookie header and populate req.cookies with an object keyed by the cookie names. Optionally you may enable signed cookie support by passing a secret string, which assigns req.secret so it may be used by other middleware.
corsNode.js CORS middleware
croncron for node.js
crypto
Deprecated!  This package is no longer supported and has been deprecated. To avoid malicious use, npm is hanging on to the package name.

It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.
expressFast, unopinionated, minimalist web framework
express-sessionSimple session middleware for Express
helmetHelmet helps you secure your Express apps by setting various HTTP headers. It's not a silver bullet, but it can help!
http-errorsCreate HTTP errors for Express, Koa, Connect, etc. with ease.
ibmcloud-appidNode.js SDK for the IBM Cloud App ID service
js-yamlYAML 1.2 parser and serializer
lodashThe Lodash library exported as Node.js modules.  Lodash is A modern JavaScript utility library delivering modularity, performance & extras.
log4jsThis is a conversion of the log4js framework to work with node.
momentA JavaScript date library for parsing, validating, manipulating, and formatting dates.
mongodbThe official MongoDB driver for Node.js.
nconfHierarchical node.js configuration with files, environment variables, command-line arguments, and atomic object merging.
ngx-xacHelper library for create CSV file in Angular2+
nocacheThis Express middleware sets some HTTP response headers to try to disable client-side caching.
node-fetchInstead of implementing XMLHttpRequest in Node.js to run browser-specific Fetch polyfill, why not go from native http to fetch API directly? Hence, node-fetch, minimal code for a window.fetch compatible API on Node.js runtime.
object-sizeofGet size of a JavaScript object in Bytes
passportPassport is Express-compatible authentication middleware for Node.js.
request-promiseThe simplified HTTP request client 'request' with Promise support. Powered by Bluebird.Deprecated!  We need to replace this.
rxjsReactive Extensions Library for JavaScript. 
sinonStandalone and test framework agnostic JavaScript test spies, stubs and mocks (pronounced "sigh-non", named after Sinon, the warrior).Should be a development dependency
sleepAdd sleep(), msleep() and usleep() to Node.js, via a C++ binding.
sort-json-arraySort an array of JSON objects by a property
swagger-ui-expressThis module allows you to serve auto-generated swagger-ui generated API docs from express, based on a swagger.json file. The result is living documentation for your API hosted from your API server via a route.
tslibRuntime library for TypeScript helper functions
uuidFor the creation of RFC4122 UUIDs
zone.jsImplements Zones for JavaScript, inspired by Dart.