Repository Name: opencdx/opencdx
- Apache JMeter: 5.6.2 ℹ️
- Apache JMeter gRPC Request: 1.2.6 ℹ️
- Docker Desktop: 4.28.0 ℹ️ (Minimum recommended Docker resources: 24gb RAM, 6 CPU, 2gb Swap)
- Git: 2.39.3 ℹ️
- Java Development Kit (JDK): 21
- Keytool: 20.0.1
- Nodejs: 20.0.0
- OpenSSL: 3.1.2
- protoc-gen-doc: 1.5.1
- yq: 4:40.5 ℹ️
ℹ️ Specific version not required, but the latest version is recommended .
- Memory: 36GB+
- CPU: 8+
To Install the above required software to run OpenCDx, please refer to the installation instructions as detailed here
OpenCDX is a platform for the management of clinical data exchange. It is designed to be a secure, scalable, and interoperable platform for the exchange of clinical data.
- OpenCdx Admin
- OpenCdx Audit
- OpenCdx Classification
- OpenCdx Classification Analyzer
- OpenCdx Client
- OpenCdx Commons
- OpenCDx Communications
- OpenCdx Config
- OpenCdx Discovery
- OpenCdx Gateway
- OpenCdx IAM
- OpenCdx Logistics
- OpenCdx Media
- OpenCdx Proto
- openCdx Questionnaire
- OpenCdx Tinkar
ZERO Tolerance means for any code to be accepted at in a Pull Request, it must meet the following requirements:
- 0 Sonarlint issues found
- O JavaDoc errors/warnings
- Protobuf fully documented
- Jacoco reporting 90+% code coverage.
- Spotless code formatter.
Reports are part of the build not available from GitHub.
If a failure occurs during the build process, these reports will be generated showing the results collected.
Here's your updated markdown with descriptions for each software:
- Git: Git is a distributed version control system that enables developers to track changes in source code during software development. It allows for collaborative work, branching, and merging code efficiently.
- Java Development Kit (JDK21): The Java Development Kit (JDK) is a software development kit used by Java developers to develop, compile, and run Java applications. JDK 21 is a specific version of the JDK that includes tools and libraries necessary for Java development.
- OpenSSL Minimum Version 3.0.8: OpenSSL is a robust, full-featured open-source toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. Version 3.0.8 is a specific release of OpenSSL that includes bug fixes, security updates, and new features.
- Node.js: Node.js is an open-source, cross-platform JavaScript runtime environment that allows developers to run JavaScript code outside of a web browser. It is commonly used for building server-side applications and command-line tools.
- Apache JMeter: Apache JMeter is an open-source tool designed for load testing and performance measurement of web applications. It simulates heavy loads on a server, network, or object to test its strength or to analyze overall performance under different load types.
- Apache JMeter gRPC Request: This is a plugin for Apache JMeter that extends its functionality to support gRPC (Google Remote Procedure Call), a high-performance, open-source RPC framework. With this plugin, you can send gRPC requests and analyze the performance of gRPC-based services.
- Docker Desktop: Docker Desktop is an application for MacOS and Windows machines that enables developers to build and share containerized applications and microservices. It provides an easy-to-use interface for managing Docker containers, images, networks, and volumes.
- protoc-gen-doc: protoc-gen-doc is a documentation generator plugin for the Google Protocol Buffers (protobuf) compiler (
protoc). It generates HTML, Markdown, or DocBook documentation from comments in your.protofiles, allowing you to document your protocol buffer definitions effectively. - yq: yq is a lightweight and flexible command-line YAML processor. It allows you to manipulate YAML files easily using commands similar to
jqfor JSON. You can use yq to extract, modify, and filter YAML documents efficiently. - TINKAR: This specification is describing the requirements and characteristics of systems require to manage terminology produced by a variety of organization across a healthcare enterprise. This foundation must allow enterprise to extend terminology standards and implement extensions in a timely fashion.
- Run the command "chmod 755 deploy.sh" in the root directory.
- Run the command "./deploy.sh --build --deploy" in the root directory of the repository.
This will run a full build, test, docker image generation and deployment of all services to docker desktop.
- Once successfully deployed you will receive a menu like this:
OpenCDX Deployment Menu:
- Build Docker Image
- Start Docker (All Services)
- Start Docker (Custom)
- Stop Docker
- Open Admin Dashboard
- Run JMeter Test Script
- Open JMeter Test Script
- Open Microservice Tracing Zipkin
- Open Test Report
- Publish Doc
- Open JaCoCo Report
- Check JavaDoc
- Open Proto Doc
- Container Status
- Dependency Check
Enter your choice (x to Exit):
- At this time you can select any of the options to interact with the deployed services. For example, to open the admin dashboard, select option 5 and press enter.
This will build the docker image for all services, based on the current build of code in the repository.
This will allow you to select which images to build, and then start the docker containers for the selected services, plus any required services.
This will stop the OpenCDX Docker Container.
This will open the OpenCDX Admin Dashboard in your default web browser.
This will allow you to run a JMeter test script for OpenCDX. It will prompt you with multiple tests that maybe run. Each will have a description of the test.
This will open JMeter with the OpenCDX test script for running in the GUI, or for editing.
This will open your default browser to the Zipkin tracing dashboard. Allow for viewing of microservice tracing, and dependency graphs.
This will open the test report generated during the build process.
This will update the documentation for opencdx-admin to deploy for access
- JavaDoc
- ProtoDoc
- Dependency Check
- JaCoCo Report
This will open the JaCoCo report for viewing in your default web browser.
This will check the JavaDoc for all services and report any errors or warnings.
This will open the ProtoDoc for viewing in your default web browser.
This will show the status of the OpenCDX Docker Container.
This will run a dependency check on all services and report on vulnerabilities found.
For the latest command line options please use:
./deploy.sh --help
Below are a few of the more common options to run:
To build the project without deploying, use the following command:
./deploy.sh
To build and deploy the project, use the following command:
./deploy.sh --deploy
To build, deploy and test the project, use the following command:
./deploy.sh --deploy --<test>>
Where <test> is the name of the test to run. For example:
- smoke
- performance
- soak
To skip the build and jump to the deployment menu, use the following command:
./deploy.sh --skip
- Spring Admin is used for monitoring the microservices.
- Zipkin is used microservice tracing. This allows for the monitoring of the microservices and the dependencies between them.
- Prometheus is used for observing the microservices.
- Loki is used for logging the microservices.
- Grafana is used for displaying the combined data from Loki, Zipkin, and Prometheus.
- Open OpenCDX Admin Dashboard: http://localhost:8080 or option 5 from the deployment menu.
- The dashboard menu bar offers the following:
- A drop-down list of observability tools and their links.
- A drop-down list of documentation and their links.
- A drop-down list of microservices with their swagger links.
- Link to the Discovery Dashboard.
- Link to the NATS Dashboard.
Grafana may require Username and Password, for sign-in on first use. The default is: admin / admin (Grafana will require a password change on first use of the username/password).
Logs can be viewed in Docker Desktop under the container logs. OpenCDX Admin Dashboard also provides access to the logs under each microservice under the "Loggins" section. Grafana does provide a dashboard for viewing specific logs across all microservices based on a TraceId, that is output to the logs.
- Download the latest version of Apache JMeter
- Place Apache JMeter on your environment PATH
- Install Apache JMeter plugin
JMeter gRPC Request
Please refer to this page on how to use Swagger to execute the OpenCDX APIs.
The NVD API Key is optional and can be specified in your local environment by environment variable:
export NVD_API_KEY=<your-api-key>
Ravinder Singh ([email protected])
Jeff Miller ([email protected])
Ranga Lakshminarayanan ([email protected])
Patrick Chou ([email protected])
Karthick Rajamurugan ([email protected])
Gaurav Mishra ([email protected])