Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit df3a827

Browse files
jkildeamschoettle
andauthored
Add high-level architecture description (#30)
Co-authored-by: Matthias Schoettle <[email protected]>
1 parent c896555 commit df3a827

7 files changed

Lines changed: 4948 additions & 16 deletions

File tree

.markdownlint.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ ul-indent:
1212
# Allow bare URLs since we use magiclink to convert bare URLs automatically to links
1313
no-bare-urls: false
1414

15+
no-inline-html:
16+
allowed_elements:
17+
- details
18+
- summary
19+
1520
max-one-sentence-per-line:
1621
# ignore admonition syntax
1722
# see: https://github.com/aepfli/markdownlint-rule-max-one-sentence-per-line/pull/52/files#r1579994724

.typos.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# SPDX-FileCopyrightText: Copyright (C) 2025 Opal Health Informatics Group <https://www.opalmedapps.com>
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
[type.excalidraw]
6+
extend-glob = ["*.excalidraw"]
7+
check-file = false

Opal Architecture Schematic.svg

Lines changed: 0 additions & 1 deletion
This file was deleted.

REUSE.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,12 @@ path = [
77
precedence = "override"
88
SPDX-FileCopyrightText = "Copyright (C) 2025 Opal Health Informatics Group <https://www.opalmedapps.com>"
99
SPDX-License-Identifier = "MIT"
10+
11+
[[annotations]]
12+
path = [
13+
"profile/architecture.excalidraw",
14+
"profile/architecture.png",
15+
]
16+
precedence = "override"
17+
SPDX-FileCopyrightText = "Copyright (C) 2025 Opal Health Informatics Group <https://www.opalmedapps.com>"
18+
SPDX-License-Identifier = "CC-BY-SA-4.0"

profile/README.md

Lines changed: 66 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,46 +8,90 @@
88

99
Opal is the open-source patient-in-the-loop data platform.
1010

11-
We define patient-in-the-loop data as health data, with helpful explanations, that are shared in real-time with the patient (or their informal caregivers) just as they are with the other (professional) members of the patients care team.
11+
We define patient-in-the-loop data as health data, with helpful explanations, that are shared in real-time with the patient (or their informal caregivers) just as they are with the other (professional) members of the patient's care team.
1212

1313
## Opal is now open source 🎉
1414

1515
We have recently (March 2025) open sourced Opal!
1616
Some things might still need to be polished a bit.
1717
Feel free to let us know if you spot anything, or maybe even contribute 🙂
1818

19-
## Getting started
20-
21-
### Quick start
19+
## Quick links
2220

2321
- Documentation on Opal's architecture: https://docs.opalmedapps.com/development/architecture/
2422
- Setting up your local development environment: https://docs.opalmedapps.com/development/local-dev-setup/
2523
- Deploying Opal: https://docs.opalmedapps.com/install/
2624

27-
### Resources
25+
## Architecture Overview
2826

29-
- Opal Website: https://www.opalmedapps.com
30-
- Opal community page: https://www.opalmedapps.com/community
31-
- Documentation: https://docs.opalmedapps.com
32-
- Community discussions: https://github.com/orgs/opalmedapps/discussions
27+
![Opal High-Level Architecture](./architecture.png)
28+
29+
At a high-level, the ***Opal patient-in-the-loop data*** platform's architecture is quite simple.
30+
The platform's primary goal is to securely share data across the perimeter of a healthcare institution's protected network between the patient's Opal app and their medical record in the hospital's source systems.
31+
32+
> [!NOTE]
33+
> In the Details section below, repositories of components of the Opal platform are shown in parenthesis.
34+
> These are also shown in purple in the diagram above.
35+
> There is no repository for the *Integration Engine* as this is a hospital-specific integration system.
36+
> The repository for the *Live Clinic Management Dashboards* (virtual waiting room and clinician dashboard) have not yet been added to GitHub.
37+
> Please check back soon for them.
38+
39+
<details>
40+
<summary>Details about Opal components</summary>
41+
42+
### Registration
43+
44+
Users register for an Opal account using a registration code that is generated by healthcare professionals inside the hospital using the OpalADMIN application (`opal-admin` and `opal-admin-legacy`).
45+
On their mobile phone or browser, the user accesses the Opal registration web app (`opal-registration`) from which they securely communicate with the Opal Listener (`opal-listener`) running inside the hospital via *Firebase* (currently *Realtime Database*).
46+
Once registered, the user is provided with their own personal Opal account using which they can access the patient's hospital data via the Opal App (`opal-app`).
47+
48+
### The Opal App
49+
50+
To retrieve patient data from the hospital, the user logs into their personal Opal account using the Opal App on their mobile phone or browser (`opal-app`).
51+
Upon successful authentication, the user essentially places a request for their data on the *Realtime Database*.
52+
53+
**Note:** The user never logs into the hospital directly and the hospital's servers are never directly exposed to the internet.
54+
55+
### The Opal PIE
3356

34-
### Overview of our repositories
57+
The Opal PIE is the Opal Patient Information Exchange.
58+
It is essentially the complete Opal solution inside the hospital's network, comprising `opal-listener`, `opal-admin`, `opal-admin-legacy` and the Opal databases.
59+
60+
#### The Opal Listener
61+
62+
The Opal Listener (`opal-listener`) inside the hospital monitors the *Realtime Database* for requests for data from authenticated users.
63+
When an authenticated request is received, the listener decrypts it, and fetches the data from the Opal database, or makes an API request to another component inside the Opal PIE.
64+
The response is then encrypted so that only the user can decrypt them and puts the encrypted response onto the *Realtime Database* from where the user's Opal App (`opal-app`) then downloads it and displays it to the user.
65+
In a similar way, the patient can send data into the hospital, such as by answering clinical questionnaires.
66+
67+
**Note:** Connections with Firebase are encrypted with TLS.
68+
To protect the patient data, the data is also end-to-end-encrypted.
69+
All requests and responses are encrypted on either side so that data cannot be read within the *Realtime Database*.
70+
This is to ensure that only the Opal PIE in the hospital and the Opal App can access the unencrypted data.
71+
72+
#### OpalADMIN
73+
74+
The OpalADMIN (`opal-admin` and `opal-admin-legacy`) application is used by the clinical and administrative staff to set up the rules for publishing data for patients (which data from the source systems and how the data are presented to the patient, e.g., aliasing of clinical terms and provision of additional explanatory content).
75+
76+
</details>
77+
78+
## Overview of our repositories
3579

3680
The following repositories are available.
3781
Repositories that begin with "opal" are components of the Opal platform.
3882

39-
- **opal-app:** The patient-facing web and mobile application (referred to as the _Opal Patient Portal_) used by users to access their patient data. [JavaScript, AngularJS, Cordova, Onsen UI].
83+
- **opal-app:** The patient-facing web and mobile application (referred to as the *Opal Patient Portal*) used by users to access their patient data. [JavaScript, AngularJS, Cordova, Onsen UI].
4084

41-
- **opal-admin:** The staff-facing web application (referred to as _OpalADMIN_) used to create and manage the publishing of data and education materials to patients as well as access management for patients and staff (clinicians and administrative personnel).
85+
- **opal-admin:** The staff-facing web application (referred to as *OpalADMIN*) used to create and manage the publishing of data and education materials to patients as well as access management for patients and staff (clinicians and administrative personnel).
4286
Note: This repository is Python/Django-based and contains the code base for all new features and functionality to OpalADMIN. [Python, Django]
4387

44-
- **opal-admin-legacy:** The staff-facing web application (referred to as _OpalADMIN Legacy_) used to create and manage the publishing of data and education materials to patients as well as access management for patients and staff (clinicians and administrative personnel).
88+
- **opal-admin-legacy:** The staff-facing web application (referred to as *OpalADMIN Legacy*) used to create and manage the publishing of data and education materials to patients as well as access management for patients and staff (clinicians and administrative personnel).
4589
Note: this repository is PHP and Perl-based and contains the legacy version of OpalADMIN.
4690
It is used for maintenance-only development and should not be used to develop any new features or functionality. [PHP, Perl, JavaScript, AngularJS]
4791

48-
- **opal-listener:** The Opal listener application (referred to as the _Opal Listener_) that runs in the background and handles requests from the Opal Patient Portal and the Opal Registration site via Firebase. [Node.js]
92+
- **opal-listener:** The Opal listener application (referred to as the *Opal Listener*) that runs in the background and handles requests from the Opal Patient Portal and the Opal Registration site via Firebase. [Node.js]
4993

50-
- **opal-registration:** The public-facing webpage (referred to as the _Opal Registration site_) where Opal users can create their Opal accounts. [JavaScript, AngularJS]
94+
- **opal-registration:** The public-facing webpage (referred to as the *Opal Registration site*) where Opal users can create their Opal accounts. [JavaScript, AngularJS]
5195

5296
- **opal-db-management:** Opal's database utility used to manage revisions and data for the Opal legacy databases.
5397
Note: The current Opal database is managed using the Django framework in `opal-admin`. [Alembic, Python, MySQL]
@@ -56,3 +100,10 @@ Repositories that begin with "opal" are components of the Opal platform.
56100
The Opal PIE is the Opal Patient Information Exchange, consisting of the Opal Listener, OpalADMIN, OpalADMIN Legacy, and all associated databases and scripts.
57101

58102
- **docs:** Opal's documentation site written in Markdown. [MkDocs, mkdocs-material]
103+
104+
## Resources
105+
106+
- Opal Website: https://www.opalmedapps.com
107+
- Opal community page: https://www.opalmedapps.com/community
108+
- Documentation: https://docs.opalmedapps.com
109+
- Community discussions: https://github.com/orgs/opalmedapps/discussions

0 commit comments

Comments
 (0)