Skip to content

Commit

Permalink
Merge pull request #16147 from CDCgov/deployment/2024-10-08
Browse files Browse the repository at this point in the history
Deployment of 2024-10-08
  • Loading branch information
adegolier authored Oct 8, 2024
2 parents e68792a + 0047f37 commit 43659d8
Show file tree
Hide file tree
Showing 15 changed files with 370 additions and 70 deletions.
10 changes: 5 additions & 5 deletions auth/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apply(from = rootProject.file("buildSrc/shared.gradle.kts"))

plugins {
id("org.springframework.boot") version "3.3.2"
id("org.springframework.boot") version "3.3.4"
id("io.spring.dependency-management") version "1.1.6"
id("reportstream.project-conventions")
kotlin("plugin.spring") version "2.0.0"
Expand All @@ -14,8 +14,8 @@ dependencies {
implementation(project(":shared"))

implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:1.8.1")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:1.9.0")

/**
* Spring WebFlux was chosen for this project to be able to better handle periods of high traffic
Expand All @@ -24,7 +24,7 @@ dependencies {
implementation("org.springframework.cloud:spring-cloud-gateway-webflux")
implementation("org.springframework.boot:spring-boot-starter-oauth2-resource-server")

runtimeOnly("com.nimbusds:oauth2-oidc-sdk:11.18")
runtimeOnly("com.nimbusds:oauth2-oidc-sdk:11.19.1")

testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("org.springframework.security:spring-security-test")
Expand All @@ -45,7 +45,7 @@ configurations.all {

dependencyManagement {
imports {
mavenBom("com.azure.spring:spring-cloud-azure-dependencies:5.14.0")
mavenBom("com.azure.spring:spring-cloud-azure-dependencies:5.16.0")
mavenBom("org.springframework.cloud:spring-cloud-dependencies:2023.0.3")
}
}
Expand Down
34 changes: 14 additions & 20 deletions frontend-react/src/content/about/roadmap.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import site from "../../content/site.json"
<Sidenav />
</LayoutSidenav>

<p className="usa-timestamp">Last updated: August 05, 2024</p>
<p className="usa-timestamp">Last updated: October 07, 2024</p>

## Objectives for FY24
Learn about our goals and how we are measuring success for this fiscal year (FY), which runs from October 2023 through September 2024.
Expand Down Expand Up @@ -46,37 +46,37 @@ Learn about our goals and how we are measuring success for this fiscal year (FY)
tag: "recently-completed",
body: (
<p>
Arizona, Colorado, and Kansas are able to receive flu and RSV data from ReportStream.
Arkansas, Florida, Guam, Idaho, Illinois, Louisiana, Maine, Massachusetts, Minnesota, and Oklahoma are able to receive flu and RSV data from ReportStream.
</p>
),
},
{
tag: "working-on-now",
body: (
<p>
Onboard or update connections for Arkansas, Connecticut, Florida, Idaho, Illinois, Iowa, Kentucky, Louisiana, Maine, Massachusetts, Michigan, Minnesota, Missouri, Montana, Oklahoma, Virginia, Washington D.C.
Onboard or update connections for Alabama, Connecticut, Delaware, Indiana, Iowa, Kentucky, Michigan, Mississippi, Missouri, Montana, New Hampshire, New Jersey, New Mexico, Ohio, Pennsylvania, Puerto Rico, Republic of Marshall Islands, South Dakota, Tennessee, Vermont, Virginia, Washington, Washington D.C., and Wyoming.
</p>
),
},
{
tag: "next",
body: (
<p>
Support remaining STLTs to connect or update their connections to be able to receive additional conditions.
</p>
<p>Support remaining STLTs to connect or update their connections to be able to receive additional conditions.</p>
),
},
{
title:<p>Partner with <A href="https://www.simplereport.gov/">SimpleReport</A> to help nontraditional and lower-resourced testing sites and facilities report test results and send data to STLTs and the CDC.</p>,
tag: "recently-completed",
body: (
<p>California, Nevada, and New York are receiving flu A/B or RSV data.</p>
<p>Contacted nontraditional and lower-resourced HIV senders in Texas as part of targeted health equity improvement work.</p>
),
},
{
tag: "recently-completed",
body: (
<p>Identify nontraditional and lower-resourced HIV senders in Texas as part of targeted health equity improvement work.</p>
<p>
Alaska, Arizona, California, Colorado, Florida, Hawaii, Idaho, Illinois, Louisiana, Massachusetts, Minnesota, Nevada, New York, and Rhode Island are receiving flu A/B or RSV data.
</p>
),
},
{
Expand All @@ -86,45 +86,39 @@ Learn about our goals and how we are measuring success for this fiscal year (FY)
),
},
{
tag: "next",
tag: "working-on-now",
body: (
<p>Identify more regions in California to exchange HIV test result data.</p>
<p>Add support for hepatitis C and other STI reporting through SimpleReport.</p>
),
},
{
tag: "next",
body: (
<p>Add support for hepatitis C reporting through SimpleReport.</p>
<p>Add support for more conditions reporting through SimpleReport.</p>
),
},
{
title:<p>Help at-home test takers and test manufacturers easily report results to STLTs and CDC.</p>,
tag: "recently-completed",
body: (
<p>Support file validation against different HL7 profiles, starting with the RADx MARS custom <A href="https://www.cdc.gov/vaccines/programs/iis/technical-guidance/downloads/hl7guide-1-5-2014-11.pdf" target="_blank">NIST HL7 2.5.1</A> profile.</p>
<p>Route test results from <A href="https://learn.makemytestcount.org/" target="_blank">MakeMyTestCount.org</A> to one STLT in test environment.</p>
),
},
{
tag: "working-on-now",
body: (
<p>Route test results from <A href="https://learn.makemytestcount.org/" target="_blank">MakeMyTestCount.org</A> to one STLT in test environment.</p>
<p>Route test results from <A href="https://learn.makemytestcount.org/" target="_blank">MakeMyTestCount.org</A> to one STLT in production.</p>
),
},
{
tag: "next",
body: (
<p>Route test results from <A href="https://learn.makemytestcount.org/" target="_blank">MakeMyTestCount.org</A> to one STLT in production.</p>
<p>Route test results from another OTC testing (point-of-care) sender to one STLT in production.</p>
),
},
{
title: "Facilitate electronic laboratory reporting (ELR) for the CDC infectious disease labs and transmit to STLTs. ",
tag: "recently-completed",
body: (
<p>Test data pipeline with two STLT partners to transmit test results.</p>
),
},
{
tag: "working-on-now",
body: (
<p>Complete final internal review of test result data transfer before moving to production.</p>
),
Expand Down
70 changes: 38 additions & 32 deletions prime-router/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ apply(from = rootProject.file("buildSrc/shared.gradle.kts"))
plugins {
val kotlinVersion by System.getProperties()
id("reportstream.project-conventions")
id("org.flywaydb.flyway") version "10.18.0"
id("org.flywaydb.flyway") version "10.18.2"
id("nu.studer.jooq") version "9.0"
id("com.github.johnrengelman.shadow") version "8.1.1"
id("com.microsoft.azure.azurefunctions") version "1.16.1"
Expand Down Expand Up @@ -75,7 +75,7 @@ val javaVersion = when (appJvmTarget) {
}
val ktorVersion = "2.3.12"
val kotlinVersion by System.getProperties()
val jacksonVersion = "2.17.2"
val jacksonVersion = "2.18.0"
jacoco.toolVersion = "0.8.12"

// Local database information, first one wins:
Expand Down Expand Up @@ -271,16 +271,17 @@ sourceSets.create("testIntegration") {
runtimeClasspath += sourceSets["main"].output
}

// Add generated version object
sourceSets["main"].java.srcDir("$buildDir/generated-src/version")

val compileTestIntegrationKotlin: KotlinCompile by tasks
compileTestIntegrationKotlin.kotlinOptions.jvmTarget = appJvmTarget

val testIntegrationImplementation: Configuration by configurations.getting {
extendsFrom(configurations["testImplementation"])
}

tasks.withType<KotlinCompile> {
mustRunAfter("generateVersionObject")
}

configurations["testIntegrationRuntimeOnly"].extendsFrom(configurations["runtimeOnly"])

tasks.register<Test>("testIntegration") {
Expand Down Expand Up @@ -353,7 +354,7 @@ tasks.withType<Test>().configureEach {
}

tasks.processResources {
dependsOn("generateVersionObject")
mustRunAfter("generateVersionObject")
// Set the proper build values in the build.properties file
filesMatching("build.properties") {
val dateFormatter = DateTimeFormatter.ofPattern("yyyyMMdd")
Expand Down Expand Up @@ -427,7 +428,7 @@ tasks.register<JavaExec>("primeCLI") {
// Use arguments passed by another task in the project.extra["cliArgs"] property.
doFirst {
if (project.extra.has("cliArgs") && project.extra["cliArgs"] is List<*>) {
args = (project.extra["cliArgs"] as List<*>).filterIsInstance(String::class.java)
args = (project.extra["cliArgs"] as List<*>).filterIsInstance<String>()
} else if (args.isNullOrEmpty()) {
args = listOf("-h")
println("primeCLI Gradle task usage: gradle primeCLI --args='<args>'")
Expand Down Expand Up @@ -521,12 +522,13 @@ tasks.register("generateVersionFile") {
}
}

tasks.register("generateVersionObject") {
val sourceDir = file("$buildDir/generated-src/version")
val sourceFile = file("$sourceDir/Version.kt")
sourceDir.mkdirs()
sourceFile.writeText(
"""
val generateVersionObject = tasks.register("generateVersionObject") {
doLast {
val sourceDir = file("$buildDir/generated-src/version/src/main/kotlin/gov/cdc/prime/router")
val sourceFile = file("$sourceDir/Version.kt")
sourceDir.mkdirs()
sourceFile.writeText(
"""
package gov.cdc.prime.router.version
/**
Expand All @@ -537,7 +539,12 @@ tasks.register("generateVersionObject") {
const val commitId = "$commitId"
}
""".trimIndent()
)
)
}
}
sourceSets.getByName("main").kotlin.srcDir("$buildDir/generated-src/version/src/main/kotlin")
tasks.named("compileKotlin").configure {
dependsOn(generateVersionObject)
}

val azureResourcesTmpDir = File(buildDir, "$azureFunctionsDir-resources/$azureAppName")
Expand Down Expand Up @@ -645,7 +652,6 @@ task<Exec>("uploadSwaggerUI") {
}

tasks.register("killFunc") {
doLast {
val processName = "func"
if (org.gradle.internal.os.OperatingSystem.current().isWindows) {
exec {
Expand All @@ -658,7 +664,6 @@ tasks.register("killFunc") {
commandLine = listOf("sh", "-c", "pkill -9 $processName || true")
}
}
}
}

tasks.register("run") {
Expand Down Expand Up @@ -772,6 +777,7 @@ tasks.named<nu.studer.gradle.jooq.JooqGenerate>("generateJooq") {
tasks.register("compile") {
group = rootProject.description ?: ""
description = "Compile the code"
dependsOn("generateVersionObject")
dependsOn("compileKotlin")
}

Expand Down Expand Up @@ -833,7 +839,7 @@ buildscript {
// will need to be removed once this issue is resolved in Maven.
classpath("net.minidev:json-smart:2.5.1")
// as per flyway v10 docs the postgres flyway module must be on the project buildpath
classpath("org.flywaydb:flyway-database-postgresql:10.18.0")
classpath("org.flywaydb:flyway-database-postgresql:10.18.2")
}
}

Expand Down Expand Up @@ -861,7 +867,7 @@ dependencies {
implementation("com.azure:azure-storage-queue:12.22.0") {
exclude(group = "com.azure", module = "azure-core")
}
implementation("com.azure:azure-security-keyvault-secrets:4.8.6") {
implementation("com.azure:azure-security-keyvault-secrets:4.8.7") {
exclude(group = "com.azure", module = "azure-core")
exclude(group = "com.azure", module = "azure-core-http-netty")
}
Expand Down Expand Up @@ -891,36 +897,36 @@ dependencies {
branch = "master"
}
}
implementation("ca.uhn.hapi.fhir:hapi-fhir-structures-r4:7.2.2")
implementation("ca.uhn.hapi.fhir:hapi-fhir-structures-r4:7.4.2")
// https://mvnrepository.com/artifact/ca.uhn.hapi.fhir/hapi-fhir-caching-caffeine
implementation("ca.uhn.hapi.fhir:hapi-fhir-caching-caffeine:7.2.2")
implementation("ca.uhn.hapi.fhir:hapi-fhir-client:7.2.2")
implementation("ca.uhn.hapi.fhir:hapi-fhir-caching-caffeine:7.4.2")
implementation("ca.uhn.hapi.fhir:hapi-fhir-client:7.4.2")
// pin
implementation("ca.uhn.hapi.fhir:org.hl7.fhir.utilities:6.3.24")
implementation("ca.uhn.hapi.fhir:org.hl7.fhir.utilities:6.3.29")
implementation("ca.uhn.hapi.fhir:org.hl7.fhir.r4:6.3.24")
implementation("ca.uhn.hapi:hapi-base:2.5.1")
implementation("ca.uhn.hapi:hapi-structures-v251:2.5.1")
implementation("ca.uhn.hapi:hapi-structures-v27:2.5.1")
implementation("com.googlecode.libphonenumber:libphonenumber:8.13.46")
implementation("org.thymeleaf:thymeleaf:3.1.2.RELEASE")
implementation("com.sendgrid:sendgrid-java:4.10.2")
implementation("com.sendgrid:sendgrid-java:4.10.3")
implementation("com.okta.jwt:okta-jwt-verifier:0.5.7")
implementation("org.json:json:20240303")
// DO NOT INCREMENT SSHJ to a newer version without first thoroughly testing it locally.
implementation("com.hierynomus:sshj:0.38.0")
implementation("com.jcraft:jsch:0.1.55")
implementation("org.apache.poi:poi:5.3.0")
implementation("org.apache.commons:commons-csv:1.11.0")
implementation("org.apache.commons:commons-csv:1.12.0")
implementation("org.apache.commons:commons-lang3:3.15.0")
implementation("org.apache.commons:commons-text:1.12.0")
implementation("commons-codec:commons-codec:1.17.1")
implementation("commons-io:commons-io:2.16.1")
implementation("commons-io:commons-io:2.17.0")
implementation("org.postgresql:postgresql:42.7.4")
implementation("com.zaxxer:HikariCP:5.1.0")
implementation("org.flywaydb:flyway-core:10.18.0")
implementation("org.flywaydb:flyway-database-postgresql:10.18.0")
implementation("org.commonmark:commonmark:0.22.0")
implementation("com.google.guava:guava:33.3.0-jre")
implementation("com.zaxxer:HikariCP:6.0.0")
implementation("org.flywaydb:flyway-core:10.18.2")
implementation("org.flywaydb:flyway-database-postgresql:10.18.2")
implementation("org.commonmark:commonmark:0.23.0")
implementation("com.google.guava:guava:33.3.1-jre")
implementation("com.helger.as2:as2-lib:5.1.2")
implementation("org.bouncycastle:bcprov-jdk15to18:1.78.1")
implementation("org.bouncycastle:bcprov-jdk18on:1.78.1")
Expand All @@ -944,7 +950,7 @@ dependencies {
implementation("org.apache.poi:poi:5.3.0")
implementation("org.apache.poi:poi-ooxml:5.3.0")
implementation("org.apache.commons:commons-compress:1.27.1")
implementation("commons-io:commons-io:2.16.1")
implementation("commons-io:commons-io:2.17.0")
implementation("com.anyascii:anyascii:0.3.2")
// force jsoup since [email protected]+ has not updated
implementation("org.jsoup:jsoup:1.18.1")
Expand Down Expand Up @@ -972,7 +978,7 @@ dependencies {
implementation("xalan:xalan:2.7.3")

// validations
implementation("com.networknt:json-schema-validator:1.5.1")
implementation("com.networknt:json-schema-validator:1.5.2")
implementation("io.konform:konform-jvm:0.4.0")

runtimeOnly("com.okta.jwt:okta-jwt-verifier-impl:0.5.7")
Expand Down
3 changes: 2 additions & 1 deletion prime-router/docs/universal-pipeline/translate.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ The two kinds of transforms work the same at a high level. The schema enumerates

- contains a FHIR path to the resource that needs to be transformed
- a condition specifying whether the resource should be transformed
- how the resource should get transformed
- how the resource should get transformed; a resource can be transformed either by setting it to a value or applying a
FHIR function

The primary difference between the FHIR and HL7 schemas is that the HL7 converter has special handling for converting
a FHIR resource into an HL7 segment or component.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@
"type": "string"
}
},
"function": {
"type": "string"
},
"valueSet": {
"anyOf": [
{
Expand Down
3 changes: 3 additions & 0 deletions prime-router/src/main/kotlin/config/validation/Validations.kt
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,9 @@ object FhirToFhirTransformValidation : KonformValidation<FhirTransformSchema>()
addConstraint("Invalid FHIR path: {value}", test = ::validFhirPath)
}
}
addConstraint("Value and function cannot both be set") { element ->
!(element.value != null && element.function != null)
}
}
}
}
Expand Down
Loading

0 comments on commit 43659d8

Please sign in to comment.