https://github.com/cdcgov/nedss-modernization

https://github.com/cdcgov/nedss-modernization

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.3%) to scientific vocabulary

Keywords from Contributors

archival projection interactive generic sequences observability autograding hacking shellcodes modular
Last synced: 11 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: CDCgov
  • Language: Java
  • Default Branch: main
  • Size: 188 MB
Statistics
  • Stars: 21
  • Watchers: 10
  • Forks: 5
  • Open Issues: 6
  • Releases: 39
Created almost 4 years ago · Last pushed 11 months ago
Metadata Files
Readme Codeowners

README.md

NEDSS-Modernization

Quality Gate Status

About

Application

  • Modernization API - Provides backend services and endpoints to support the searching and management of patients, requests related to configuration, user information, value sets, and other core functionalities required by the frontend and other services.
  • Modernization UI
  • Question Bank - Provides the backend services and endpoints for to support modernized Page Builder.
  • NBS Gateway - A reverse proxy and routing layer for the NEDSS Modernization project. It directs incoming requests to the appropriate backend services (such as Modernization UI, Modernization API, and Question bank), enabling seamless integration between both the modernized and pre-existing frontend, and multiple backend services.

Libraries

Reusable code is organized into three main types:

  • Feature libraries provide modular endpoints or features that can be integrated into applications.
  • Utility libraries offer shared components for common tasks and standardized interactions with NBS database, and security model.
  • Testing libraries supply tools and mock servers to support automated testing across modernization services.

These categories help maintain a clear separation of concerns and promote code reuse throughout the project.

Feature libraries

Standalone modules that provide specific endpoints or features (e.g., configuration, user info, value sets, redirects) which can be packaged within other applications.

  • Configuration - An endpoint to expose externalized configuration to the modernization-ui.
  • Me-api - An endpoint that provides information about the currently logged-in user.
  • Options-api - Provides endpoints to retrieve the contents of value sets.
  • Redirect - A generic endpoint to handle transitions from wildfly to spring-boot based services.

Utility libraries

Shared components that offer common utilities and standardized interactions with NBS data and the WildFly application, such as auditing, authentication, authorization, data flattening, and session propagation.

  • Accumulation - Flattening the results of select statements that join multiple tables into single objects or lists of objects grouped by a common identifier.
  • Audit - Standardizes the auditing fields on NBS tables
  • Authentication - An adapter that incorporate the NBS security model in Spring Security.
  • Authorization - Allows resolution of the object / operation specific NBS permissions.
  • Change - Resolves changes between disparate collections of items representing the same underlying models.
  • Classic Interaction - Propagates the session associated with a user when transitioning between wildfly and spring-boot based services.
  • Database-Entities
  • Event-Schema
  • Id Generator
  • Web - Standardizes handling of Cookie management and provides a common Response pattern.

Testing libraries

Modules that implement reusable feature test steps and mock servers to support automated testing across modernization services, including user setup, database containers, HTTP response verification, and test data management.

  • Auth and Auth Cucumber - Enables feature test steps for establishing users and permissions.
  • Classic Interaction Cucumber - A mock server to verify interactions with wildfly.
  • Database - Testcontainer support for the nbs-mssql container.
  • HTTP Interaction - Enables feature test steps to verify the status and body of HTTP Responses.
  • Identity - An in memory implementation of the NBS ID Generator to reduce database activity during tests.
  • Support - An API to make referencing data created for tests.

Development

The CDC Sandbox provides containers to support local development.

Guidelines

Configuring local development secrets

Some containers within the cdc-sandbox directory require sensitive values be set prior to building.

| Container | Required environment variable | | --------- | -------------------------------- | | nbs-mssql | DATABASEPASSWORD | | nifi | NIFIPASSWORD, DATABASEPASSWORD | | keycloak | KEYCLOAKADMIN_PASSWORD |

Running everything inside docker

  1. Gain access to the NBS source code repository this is required to build the wildfly container
  2. Navigate to the cdc-sandbox directory

sh cd cdc-sandbox

  1. Run the build_all.sh script

sh ./build_all.sh

  1. Visit the NBS Login page

username: msa password:

  1. To create your own user account:
    • Navigate to System Management
    • Expand Security Management
    • Click Manage Users & click Add
    • Enter userId, First Name and Last Name
    • Add a Role(s) & click submit

To learn more about the build process view the cdc-sandbox README

Running the Modernization API and UI in development mode

  1. Navigate to the cdc-sandbox directory

sh cd cdc-sandbox

  1. Start the database and Elasticsearch containers

sh docker compose up -d nbs-mssql elasticsearch

  1. Navigate to the root directory

sh cd ..

  1. Start the modernized-api Port 5005 will be open for debugger attachment.

sh ./gradlew :modernization-api:bootRun

  1. Navigate to the modernization-ui folder

sh cd apps/modernization-ui/

  1. Launch the modernization-ui

sh npm run start

  1. Access the UI

Print Artifact Version

``` ./gradlew printVersion

Task :printVersion Version: 1.0.0-SNAPSHOT ```

Running with local servers

The nbs-gateway container is configured to route to the containerized services. Routing to a local service can be achieved by altering the configuration to point to the local instances.

| Name | Default | Description | | ------------------------ | ------------------- | --------------------------------------------------------------- | | MODERNIZATIONUISERVER | modernization-ui | The host name of the server that provides the frontend UI. | | MODERNIZATIONUIPORT | 80 | The port the frontend UI is served from. | | MODERNIZATIONAPISERVER | modernization-api | The host name of the server that provides the backend API. | | MODERNIZATIONAPIPORT | 8080 | The port that modernization-api is served from. | | PAGEBUILDERAPI | pagebuilder-api | The host name of the server that provides the page-builder API. | | PAGEBUILDERAPIPORT | 8095 | The port that page-builder is served from. | | NBSGATEWAYSERVER | nbs-gateway | The host name of the server that provides the NBS Gateway. | | NBSGATEWAY_PORT | 8000 | The port the NBS Gateway is served from. |

Configuring the NBS-Gateway to use local modernization-ui

  1. Start the frontend UI locally by running the following command from the apps/modernization-ui folder.

shell npm run start

  1. Start the nbs-gateway container configured to route to the local modernization-ui by executing the following command from the root folder

shell MODERNIZATION_UI_SERVER=host.docker.internal MODERNIZATION_UI_PORT=3000 docker compose up -d nbs-gateway

Configuring the NBS-Gateway to use a local modernization-api

From the root folder.

  1. Start the backend API locally listening on port 9080 from the root project folder. The nbs-gateway container is accessible from port 8080, which is the default port for the modernization-api. It must be changed in order for the backend to start properly.

shell ./gradlew :modernization-api:bootRun --args='--server.port=9080'

  1. Start the nbs-gateway container configured to route to the local modernization-api by executing the following command.

shell MODERNIZATION_API_SERVER=host.docker.internal MODERNIZATION_API_PORT=9080 docker compose up -d nbs-gateway

Configuring the NBS-Gateway to use a local pagebuilder-api

From the root folder.

  1. Start the local pagebuilder-api service.

shell ./gradlew :question-bank:bootRun'

  1. Start the nbs-gateway container configured to route to the local pagebuilder-api by executing the following command.

shell PAGEBUILDER_API=host.docker.internal PAGEBUILDER_API_PORT=8095 docker compose up -d nbs-gateway

Resetting to Docker only

Start the nbs-gateway container by running the following command from the root folder

shell docker compose up -d nbs-gateway

Owner

  • Name: Centers for Disease Control and Prevention
  • Login: CDCgov
  • Kind: organization
  • Email: data@cdc.gov
  • Location: Atlanta, GA

CDC's collaborative software projects to protect America from health, safety, and security threats, both foreign and in the U.S.

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 2,541
  • Total Committers: 31
  • Avg Commits per committer: 81.968
  • Development Distribution Score (DDS): 0.815
Past Year
  • Commits: 1,104
  • Committers: 19
  • Avg Commits per committer: 58.105
  • Development Distribution Score (DDS): 0.773
Top Committers
Name Email Commits
Adam Loup 1****t 469
Michael Peels 1****s 360
Henry Clark 1****q 285
Lakshmi Narayanan Ramakrishnan 1****r 254
Alaap Bharadwaj 1****j 165
Steve Urciuoli s****i@e****m 134
John Lee 1****t 131
Joe Agster 9****w 103
Michael Davis 1****t 101
Richard Krussel 1****q 86
Michael Peels m****s@M****l 71
Ben Lambert b****t@c****m 67
Faruker 1****r 50
Sheham Izat 1****t 45
Mounika Gangula 1****a 38
Snehaa Shri Hari 1****l 35
dependabot[bot] 4****] 34
Ernst Melias 1****t 27
Serban Zamfir 7****r 26
Jim Barrows 1****t 12
njaved 4****d 10
Archit Dasika 1****c 8
Sergei Veselev s****v@e****m 6
Ragul Shanmugam 1****t 6
Muhammad Assad 1****2 6
Scott Mefferd s****d@e****m 3
Henry Clark h****k@H****n 3
Aaron Chapman u****5@c****v 2
Kashyap Ramakur 6****r 2
Duc Nguyen 1****1 1
and 1 more...
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 11
  • Total pull requests: 2,018
  • Average time to close issues: 5 days
  • Average time to close pull requests: 1 day
  • Total issue authors: 7
  • Total pull request authors: 26
  • Average comments per issue: 0.18
  • Average comments per pull request: 0.29
  • Merged pull requests: 1,563
  • Bot issues: 0
  • Bot pull requests: 34
Past Year
  • Issues: 7
  • Pull requests: 1,072
  • Average time to close issues: about 23 hours
  • Average time to close pull requests: 1 day
  • Issue authors: 5
  • Pull request authors: 19
  • Average comments per issue: 0.29
  • Average comments per pull request: 0.25
  • Merged pull requests: 788
  • Bot issues: 0
  • Bot pull requests: 19
Top Authors
Issue Authors
  • lramakr (3)
  • benlam-ignw (2)
  • rkrusselenq (2)
  • mpeels (1)
  • jlee-enquizit (1)
  • abbie-evans (1)
  • adamloup-enquizit (1)
Pull Request Authors
  • adamloup-enquizit (363)
  • mpeels (261)
  • hclarkEnq (220)
  • lramakr (210)
  • alaapbharadwaj (177)
  • jlee-enquizit (116)
  • stevegsa (116)
  • joeaxcdw (112)
  • mdavis-enquizit (101)
  • rkrusselenq (81)
  • benlam-ignw (75)
  • snehaasjournal (50)
  • sizatenquizit (37)
  • dependabot[bot] (34)
  • szamfir (27)
Top Labels
Issue Labels
python (1)
Pull Request Labels
dependencies (34) javascript (8)

Dependencies

.github/workflows/verify-modernization-ui.yaml actions
  • actions/checkout v3 composite
  • actions/setup-node v3 composite
libs/audit/build.gradle maven
libs/testing/auth/build.gradle maven
libs/testing/auth-cucumber/build.gradle maven
libs/testing/http-interaction/build.gradle maven
libs/testing/identity/build.gradle maven
libs/testing/support/build.gradle maven
.github/workflows/sonar.yaml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • actions/setup-java v1 composite
  • actions/setup-node v1 composite
cdc-sandbox/common-asset-server/Dockerfile docker
  • nginx 1.23.2-alpine build
cdc-sandbox/db/Dockerfile docker
  • mcr.microsoft.com/azure-sql-edge latest build
cdc-sandbox/elasticsearch/Dockerfile docker
  • docker.elastic.co/elasticsearch/elasticsearch 7.17.7 build
cdc-sandbox/kafka/docker-compose-arm64v8.yml docker
  • confluentinc/cp-kafka@sha256 8cf10463209bbd1ec6868dbd61566b8d066975a3e24a298ecb9af7ab414e8316
  • confluentinc/cp-schema-registry@sha256 3a2196ef60b9d71706b63e290f596c425d367483cd8ce89d3ee4c250056a964c
  • confluentinc/cp-zookeeper@sha256 8ac3e0e062836122363c861f6b2ad8ba4e4a47d574eda27c8512cf6458cafbb1
  • provectuslabs/kafka-ui latest
cdc-sandbox/kafka/docker-compose.yml docker
  • confluentinc/cp-kafka latest
  • confluentinc/cp-schema-registry latest
  • confluentinc/cp-zookeeper latest
  • provectuslabs/kafka-ui latest
cdc-sandbox/kibana/Dockerfile docker
  • docker.elastic.co/kibana/kibana 7.17.7 build
cdc-sandbox/nifi/Dockerfile docker
  • apache/nifi 1.19.0 build
.github/workflows/Build-and-deploy-elasticsearch.yaml actions
.github/workflows/Build-and-deploy-modernization-api.yaml actions
.github/workflows/Build-and-deploy-nbs-gateway.yaml actions
.github/workflows/Build-and-deploy-nifi.yaml actions
.github/workflows/Build-and-deploy-page-builder-api.yaml actions
.github/workflows/Build-modernization-test-db.yaml actions
.github/workflows/Release-gradle-container.yaml actions
apps/modernization-api/Dockerfile docker
  • eclipse-temurin 17-jre build
  • eclipse-temurin 17 build
  • node 18 build
apps/modernization-ui/Dockerfile docker
  • nginx latest build
  • node 18 build
apps/nbs-gateway/Dockerfile docker
  • eclipse-temurin 17 build
  • eclipse-temurin 17-jre build
apps/question-bank/Dockerfile docker
  • eclipse-temurin 17 build
  • eclipse-temurin 17-jre build
cdc-sandbox/docker-compose.yml docker
  • traefik 2.10
apps/modernization-api/build.gradle maven
  • com.itextpdf:itextpdf 5.5.13.3 implementation
  • commons-codec:commons-codec 1.15 implementation
  • commons-fileupload:commons-fileupload 1.5 testImplementation
apps/nbs-gateway/build.gradle maven
  • com.github.tomakehurst:wiremock-jre8 2.35.0 implementation
  • org.springframework.boot:spring-boot-starter-test * implementation
  • org.springframework.cloud:spring-cloud-starter-gateway * implementation
apps/question-bank/build.gradle maven
  • io.springfox:springfox-boot-starter 3.0.0 implementation
  • org.apache.commons:commons-csv 1.9.0 implementation
  • org.awaitility:awaitility 4.2.0 implementation
build.gradle maven
apps/modernization-ui/package-lock.json npm
  • 1904 dependencies
apps/modernization-ui/package.json npm
  • @graphql-codegen/cli ^2.13.1 development
  • @graphql-codegen/fragment-matcher ^3.3.1 development
  • @graphql-codegen/typescript ^2.7.3 development
  • @graphql-codegen/typescript-operations ^2.5.3 development
  • @graphql-codegen/typescript-react-apollo ^3.3.3 development
  • @storybook/addon-actions ^7.0.10 development
  • @storybook/addon-essentials ^7.0.10 development
  • @storybook/addon-interactions ^7.0.10 development
  • @storybook/addon-links ^7.0.10 development
  • @storybook/node-logger ^7.0.10 development
  • @storybook/preset-create-react-app ^7.0.10 development
  • @storybook/react ^7.0.10 development
  • @storybook/react-webpack5 ^7.0.10 development
  • @storybook/testing-library ^0.1.0 development
  • @testing-library/react-hooks ^7.0.2 development
  • @types/lodash.debounce ^4.0.7 development
  • @types/node ^18.11.5 development
  • @typescript-eslint/eslint-plugin ^5.32.0 development
  • @typescript-eslint/parser ^5.32.0 development
  • babel-plugin-named-exports-order ^0.0.2 development
  • eslint ^8.21.0 development
  • eslint-config-google ^0.14.0 development
  • eslint-config-prettier ^8.5.0 development
  • eslint-plugin-prettier ^4.2.1 development
  • eslint-plugin-react ^7.30.1 development
  • gql-generator ^1.0.19 development
  • http-proxy-middleware ^2.0.6 development
  • openapi-typescript-codegen ^0.23.0 development
  • prettier ^2.7.1 development
  • prop-types ^15.8.1 development
  • sass ^1.54.0 development
  • webpack ^5.76.0 development
  • @apollo/client ^3.6.9
  • @apollo/react-testing ^4.0.0
  • @cmsgov/design-system ^6.0.0
  • @hookform/resolvers ^2.9.8
  • @testing-library/jest-dom ^5.16.4
  • @testing-library/react ^12
  • @testing-library/user-event ^12
  • @trussworks/react-uswds ^4.2.1
  • @types/jest ^28.1.6
  • @types/react ^18.0.15
  • @types/react-dom ^18.0.6
  • classnames ^2.3.2
  • date-fns ^2.29.3
  • graphql ^16.6.0
  • lodash.debounce ^4.0.8
  • multiselect-react-dropdown ^2.0.25
  • react ^17
  • react-dom ^17
  • react-hook-form ^7.36.1
  • react-refresh ^0.14.0
  • react-router-dom ^6.3.0
  • react-scripts 5.0.1
  • react-select ^5.7.2
  • storybook ^7.0.10
  • typescript ^4.7.4
  • web-vitals ^2.1.4
  • yup ^0.32.11
docker-compose.yml docker
libs/accumulation/build.gradle maven
libs/authentication/build.gradle maven
libs/database-entities/build.gradle maven
libs/event-schema/build.gradle maven
libs/id-generator/build.gradle maven
libs/me-api/build.gradle maven
cdc-sandbox/nbs-classic/Dockerfile docker
  • amazoncorretto 8 build
  • maven 3.9-amazoncorretto-8 build
libs/configuration-api/build.gradle maven