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
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
Metadata Files
README.md
NEDSS-Modernization
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
wildflytospring-bootbased 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
wildflyandspring-bootbased services. - Database-Entities
- Event-Schema
- Id Generator
- Web - Standardizes handling of Cookie management and provides a common
Responsepattern.
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-mssqlcontainer. - 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
- Package by Feature to make code easier to find.
- Code Formatting
- Pull requests
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
- Gain access to the NBS source code repository this is required to build the wildfly container
- Navigate to the
cdc-sandboxdirectory
sh
cd cdc-sandbox
- Run the
build_all.shscript
sh
./build_all.sh
- Visit the NBS Login page
username: msa
password:
- 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
- Navigate to the
cdc-sandboxdirectory
sh
cd cdc-sandbox
- Start the database and Elasticsearch containers
sh
docker compose up -d nbs-mssql elasticsearch
- Navigate to the root directory
sh
cd ..
- Start the
modernized-apiPort5005will be open for debugger attachment.
sh
./gradlew :modernization-api:bootRun
- Navigate to the
modernization-uifolder
sh
cd apps/modernization-ui/
- Launch the
modernization-ui
sh
npm run start
- 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
- Start the frontend UI locally by running the following command from the
apps/modernization-uifolder.
shell
npm run start
- Start the
nbs-gatewaycontainer configured to route to the localmodernization-uiby 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.
- Start the backend API locally listening on port 9080 from the root project folder. The
nbs-gatewaycontainer is accessible from port8080, which is the default port for themodernization-api. It must be changed in order for the backend to start properly.
shell
./gradlew :modernization-api:bootRun --args='--server.port=9080'
- Start the
nbs-gatewaycontainer configured to route to the localmodernization-apiby 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.
- Start the local
pagebuilder-apiservice.
shell
./gradlew :question-bank:bootRun'
- Start the
nbs-gatewaycontainer configured to route to the localpagebuilder-apiby 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
- Website: http://open.cdc.gov/
- Twitter: CDCgov
- Repositories: 114
- Profile: https://github.com/CDCgov
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
Top Committers
| Name | 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
Pull Request Labels
Dependencies
- actions/checkout v3 composite
- actions/setup-node v3 composite
- actions/cache v1 composite
- actions/checkout v2 composite
- actions/setup-java v1 composite
- actions/setup-node v1 composite
- nginx 1.23.2-alpine build
- mcr.microsoft.com/azure-sql-edge latest build
- docker.elastic.co/elasticsearch/elasticsearch 7.17.7 build
- confluentinc/cp-kafka@sha256 8cf10463209bbd1ec6868dbd61566b8d066975a3e24a298ecb9af7ab414e8316
- confluentinc/cp-schema-registry@sha256 3a2196ef60b9d71706b63e290f596c425d367483cd8ce89d3ee4c250056a964c
- confluentinc/cp-zookeeper@sha256 8ac3e0e062836122363c861f6b2ad8ba4e4a47d574eda27c8512cf6458cafbb1
- provectuslabs/kafka-ui latest
- confluentinc/cp-kafka latest
- confluentinc/cp-schema-registry latest
- confluentinc/cp-zookeeper latest
- provectuslabs/kafka-ui latest
- docker.elastic.co/kibana/kibana 7.17.7 build
- apache/nifi 1.19.0 build
- eclipse-temurin 17-jre build
- eclipse-temurin 17 build
- node 18 build
- nginx latest build
- node 18 build
- eclipse-temurin 17 build
- eclipse-temurin 17-jre build
- eclipse-temurin 17 build
- eclipse-temurin 17-jre build
- traefik 2.10
- com.itextpdf:itextpdf 5.5.13.3 implementation
- commons-codec:commons-codec 1.15 implementation
- commons-fileupload:commons-fileupload 1.5 testImplementation
- 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
- 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
- 1904 dependencies
- @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
- amazoncorretto 8 build
- maven 3.9-amazoncorretto-8 build