Skip to content

Commit 43659d8

Browse files
authored
Merge pull request #16147 from CDCgov/deployment/2024-10-08
Deployment of 2024-10-08
2 parents e68792a + 0047f37 commit 43659d8

File tree

15 files changed

+370
-70
lines changed

15 files changed

+370
-70
lines changed

auth/build.gradle.kts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apply(from = rootProject.file("buildSrc/shared.gradle.kts"))
22

33
plugins {
4-
id("org.springframework.boot") version "3.3.2"
4+
id("org.springframework.boot") version "3.3.4"
55
id("io.spring.dependency-management") version "1.1.6"
66
id("reportstream.project-conventions")
77
kotlin("plugin.spring") version "2.0.0"
@@ -14,8 +14,8 @@ dependencies {
1414
implementation(project(":shared"))
1515

1616
implementation("org.jetbrains.kotlin:kotlin-reflect")
17-
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1")
18-
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:1.8.1")
17+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0")
18+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:1.9.0")
1919

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

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

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

4646
dependencyManagement {
4747
imports {
48-
mavenBom("com.azure.spring:spring-cloud-azure-dependencies:5.14.0")
48+
mavenBom("com.azure.spring:spring-cloud-azure-dependencies:5.16.0")
4949
mavenBom("org.springframework.cloud:spring-cloud-dependencies:2023.0.3")
5050
}
5151
}

frontend-react/src/content/about/roadmap.mdx

+14-20
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import site from "../../content/site.json"
1717
<Sidenav />
1818
</LayoutSidenav>
1919

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

2222
## Objectives for FY24
2323
Learn about our goals and how we are measuring success for this fiscal year (FY), which runs from October 2023 through September 2024.
@@ -46,37 +46,37 @@ Learn about our goals and how we are measuring success for this fiscal year (FY)
4646
tag: "recently-completed",
4747
body: (
4848
<p>
49-
Arizona, Colorado, and Kansas are able to receive flu and RSV data from ReportStream.
49+
Arkansas, Florida, Guam, Idaho, Illinois, Louisiana, Maine, Massachusetts, Minnesota, and Oklahoma are able to receive flu and RSV data from ReportStream.
5050
</p>
5151
),
5252
},
5353
{
5454
tag: "working-on-now",
5555
body: (
5656
<p>
57-
Onboard or update connections for Arkansas, Connecticut, Florida, Idaho, Illinois, Iowa, Kentucky, Louisiana, Maine, Massachusetts, Michigan, Minnesota, Missouri, Montana, Oklahoma, Virginia, Washington D.C.
57+
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.
5858
</p>
5959
),
6060
},
6161
{
6262
tag: "next",
6363
body: (
64-
<p>
65-
Support remaining STLTs to connect or update their connections to be able to receive additional conditions.
66-
</p>
64+
<p>Support remaining STLTs to connect or update their connections to be able to receive additional conditions.</p>
6765
),
6866
},
6967
{
7068
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>,
7169
tag: "recently-completed",
7270
body: (
73-
<p>California, Nevada, and New York are receiving flu A/B or RSV data.</p>
71+
<p>Contacted nontraditional and lower-resourced HIV senders in Texas as part of targeted health equity improvement work.</p>
7472
),
7573
},
7674
{
7775
tag: "recently-completed",
7876
body: (
79-
<p>Identify nontraditional and lower-resourced HIV senders in Texas as part of targeted health equity improvement work.</p>
77+
<p>
78+
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.
79+
</p>
8080
),
8181
},
8282
{
@@ -86,45 +86,39 @@ Learn about our goals and how we are measuring success for this fiscal year (FY)
8686
),
8787
},
8888
{
89-
tag: "next",
89+
tag: "working-on-now",
9090
body: (
91-
<p>Identify more regions in California to exchange HIV test result data.</p>
91+
<p>Add support for hepatitis C and other STI reporting through SimpleReport.</p>
9292
),
9393
},
9494
{
9595
tag: "next",
9696
body: (
97-
<p>Add support for hepatitis C reporting through SimpleReport.</p>
97+
<p>Add support for more conditions reporting through SimpleReport.</p>
9898
),
9999
},
100100
{
101101
title:<p>Help at-home test takers and test manufacturers easily report results to STLTs and CDC.</p>,
102102
tag: "recently-completed",
103103
body: (
104-
<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>
104+
<p>Route test results from <A href="https://learn.makemytestcount.org/" target="_blank">MakeMyTestCount.org</A> to one STLT in test environment.</p>
105105
),
106106
},
107107
{
108108
tag: "working-on-now",
109109
body: (
110-
<p>Route test results from <A href="https://learn.makemytestcount.org/" target="_blank">MakeMyTestCount.org</A> to one STLT in test environment.</p>
110+
<p>Route test results from <A href="https://learn.makemytestcount.org/" target="_blank">MakeMyTestCount.org</A> to one STLT in production.</p>
111111
),
112112
},
113113
{
114114
tag: "next",
115115
body: (
116-
<p>Route test results from <A href="https://learn.makemytestcount.org/" target="_blank">MakeMyTestCount.org</A> to one STLT in production.</p>
116+
<p>Route test results from another OTC testing (point-of-care) sender to one STLT in production.</p>
117117
),
118118
},
119119
{
120120
title: "Facilitate electronic laboratory reporting (ELR) for the CDC infectious disease labs and transmit to STLTs. ",
121121
tag: "recently-completed",
122-
body: (
123-
<p>Test data pipeline with two STLT partners to transmit test results.</p>
124-
),
125-
},
126-
{
127-
tag: "working-on-now",
128122
body: (
129123
<p>Complete final internal review of test result data transfer before moving to production.</p>
130124
),

prime-router/build.gradle.kts

+38-32
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ apply(from = rootProject.file("buildSrc/shared.gradle.kts"))
3535
plugins {
3636
val kotlinVersion by System.getProperties()
3737
id("reportstream.project-conventions")
38-
id("org.flywaydb.flyway") version "10.18.0"
38+
id("org.flywaydb.flyway") version "10.18.2"
3939
id("nu.studer.jooq") version "9.0"
4040
id("com.github.johnrengelman.shadow") version "8.1.1"
4141
id("com.microsoft.azure.azurefunctions") version "1.16.1"
@@ -75,7 +75,7 @@ val javaVersion = when (appJvmTarget) {
7575
}
7676
val ktorVersion = "2.3.12"
7777
val kotlinVersion by System.getProperties()
78-
val jacksonVersion = "2.17.2"
78+
val jacksonVersion = "2.18.0"
7979
jacoco.toolVersion = "0.8.12"
8080

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

274-
// Add generated version object
275-
sourceSets["main"].java.srcDir("$buildDir/generated-src/version")
276-
277274
val compileTestIntegrationKotlin: KotlinCompile by tasks
278275
compileTestIntegrationKotlin.kotlinOptions.jvmTarget = appJvmTarget
279276

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

281+
tasks.withType<KotlinCompile> {
282+
mustRunAfter("generateVersionObject")
283+
}
284+
284285
configurations["testIntegrationRuntimeOnly"].extendsFrom(configurations["runtimeOnly"])
285286

286287
tasks.register<Test>("testIntegration") {
@@ -353,7 +354,7 @@ tasks.withType<Test>().configureEach {
353354
}
354355

355356
tasks.processResources {
356-
dependsOn("generateVersionObject")
357+
mustRunAfter("generateVersionObject")
357358
// Set the proper build values in the build.properties file
358359
filesMatching("build.properties") {
359360
val dateFormatter = DateTimeFormatter.ofPattern("yyyyMMdd")
@@ -427,7 +428,7 @@ tasks.register<JavaExec>("primeCLI") {
427428
// Use arguments passed by another task in the project.extra["cliArgs"] property.
428429
doFirst {
429430
if (project.extra.has("cliArgs") && project.extra["cliArgs"] is List<*>) {
430-
args = (project.extra["cliArgs"] as List<*>).filterIsInstance(String::class.java)
431+
args = (project.extra["cliArgs"] as List<*>).filterIsInstance<String>()
431432
} else if (args.isNullOrEmpty()) {
432433
args = listOf("-h")
433434
println("primeCLI Gradle task usage: gradle primeCLI --args='<args>'")
@@ -521,12 +522,13 @@ tasks.register("generateVersionFile") {
521522
}
522523
}
523524

524-
tasks.register("generateVersionObject") {
525-
val sourceDir = file("$buildDir/generated-src/version")
526-
val sourceFile = file("$sourceDir/Version.kt")
527-
sourceDir.mkdirs()
528-
sourceFile.writeText(
529-
"""
525+
val generateVersionObject = tasks.register("generateVersionObject") {
526+
doLast {
527+
val sourceDir = file("$buildDir/generated-src/version/src/main/kotlin/gov/cdc/prime/router")
528+
val sourceFile = file("$sourceDir/Version.kt")
529+
sourceDir.mkdirs()
530+
sourceFile.writeText(
531+
"""
530532
package gov.cdc.prime.router.version
531533
532534
/**
@@ -537,7 +539,12 @@ tasks.register("generateVersionObject") {
537539
const val commitId = "$commitId"
538540
}
539541
""".trimIndent()
540-
)
542+
)
543+
}
544+
}
545+
sourceSets.getByName("main").kotlin.srcDir("$buildDir/generated-src/version/src/main/kotlin")
546+
tasks.named("compileKotlin").configure {
547+
dependsOn(generateVersionObject)
541548
}
542549

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

647654
tasks.register("killFunc") {
648-
doLast {
649655
val processName = "func"
650656
if (org.gradle.internal.os.OperatingSystem.current().isWindows) {
651657
exec {
@@ -658,7 +664,6 @@ tasks.register("killFunc") {
658664
commandLine = listOf("sh", "-c", "pkill -9 $processName || true")
659665
}
660666
}
661-
}
662667
}
663668

664669
tasks.register("run") {
@@ -772,6 +777,7 @@ tasks.named<nu.studer.gradle.jooq.JooqGenerate>("generateJooq") {
772777
tasks.register("compile") {
773778
group = rootProject.description ?: ""
774779
description = "Compile the code"
780+
dependsOn("generateVersionObject")
775781
dependsOn("compileKotlin")
776782
}
777783

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

@@ -861,7 +867,7 @@ dependencies {
861867
implementation("com.azure:azure-storage-queue:12.22.0") {
862868
exclude(group = "com.azure", module = "azure-core")
863869
}
864-
implementation("com.azure:azure-security-keyvault-secrets:4.8.6") {
870+
implementation("com.azure:azure-security-keyvault-secrets:4.8.7") {
865871
exclude(group = "com.azure", module = "azure-core")
866872
exclude(group = "com.azure", module = "azure-core-http-netty")
867873
}
@@ -891,36 +897,36 @@ dependencies {
891897
branch = "master"
892898
}
893899
}
894-
implementation("ca.uhn.hapi.fhir:hapi-fhir-structures-r4:7.2.2")
900+
implementation("ca.uhn.hapi.fhir:hapi-fhir-structures-r4:7.4.2")
895901
// https://mvnrepository.com/artifact/ca.uhn.hapi.fhir/hapi-fhir-caching-caffeine
896-
implementation("ca.uhn.hapi.fhir:hapi-fhir-caching-caffeine:7.2.2")
897-
implementation("ca.uhn.hapi.fhir:hapi-fhir-client:7.2.2")
902+
implementation("ca.uhn.hapi.fhir:hapi-fhir-caching-caffeine:7.4.2")
903+
implementation("ca.uhn.hapi.fhir:hapi-fhir-client:7.4.2")
898904
// pin
899-
implementation("ca.uhn.hapi.fhir:org.hl7.fhir.utilities:6.3.24")
905+
implementation("ca.uhn.hapi.fhir:org.hl7.fhir.utilities:6.3.29")
900906
implementation("ca.uhn.hapi.fhir:org.hl7.fhir.r4:6.3.24")
901907
implementation("ca.uhn.hapi:hapi-base:2.5.1")
902908
implementation("ca.uhn.hapi:hapi-structures-v251:2.5.1")
903909
implementation("ca.uhn.hapi:hapi-structures-v27:2.5.1")
904910
implementation("com.googlecode.libphonenumber:libphonenumber:8.13.46")
905911
implementation("org.thymeleaf:thymeleaf:3.1.2.RELEASE")
906-
implementation("com.sendgrid:sendgrid-java:4.10.2")
912+
implementation("com.sendgrid:sendgrid-java:4.10.3")
907913
implementation("com.okta.jwt:okta-jwt-verifier:0.5.7")
908914
implementation("org.json:json:20240303")
909915
// DO NOT INCREMENT SSHJ to a newer version without first thoroughly testing it locally.
910916
implementation("com.hierynomus:sshj:0.38.0")
911917
implementation("com.jcraft:jsch:0.1.55")
912918
implementation("org.apache.poi:poi:5.3.0")
913-
implementation("org.apache.commons:commons-csv:1.11.0")
919+
implementation("org.apache.commons:commons-csv:1.12.0")
914920
implementation("org.apache.commons:commons-lang3:3.15.0")
915921
implementation("org.apache.commons:commons-text:1.12.0")
916922
implementation("commons-codec:commons-codec:1.17.1")
917-
implementation("commons-io:commons-io:2.16.1")
923+
implementation("commons-io:commons-io:2.17.0")
918924
implementation("org.postgresql:postgresql:42.7.4")
919-
implementation("com.zaxxer:HikariCP:5.1.0")
920-
implementation("org.flywaydb:flyway-core:10.18.0")
921-
implementation("org.flywaydb:flyway-database-postgresql:10.18.0")
922-
implementation("org.commonmark:commonmark:0.22.0")
923-
implementation("com.google.guava:guava:33.3.0-jre")
925+
implementation("com.zaxxer:HikariCP:6.0.0")
926+
implementation("org.flywaydb:flyway-core:10.18.2")
927+
implementation("org.flywaydb:flyway-database-postgresql:10.18.2")
928+
implementation("org.commonmark:commonmark:0.23.0")
929+
implementation("com.google.guava:guava:33.3.1-jre")
924930
implementation("com.helger.as2:as2-lib:5.1.2")
925931
implementation("org.bouncycastle:bcprov-jdk15to18:1.78.1")
926932
implementation("org.bouncycastle:bcprov-jdk18on:1.78.1")
@@ -944,7 +950,7 @@ dependencies {
944950
implementation("org.apache.poi:poi:5.3.0")
945951
implementation("org.apache.poi:poi-ooxml:5.3.0")
946952
implementation("org.apache.commons:commons-compress:1.27.1")
947-
implementation("commons-io:commons-io:2.16.1")
953+
implementation("commons-io:commons-io:2.17.0")
948954
implementation("com.anyascii:anyascii:0.3.2")
949955
// force jsoup since [email protected]+ has not updated
950956
implementation("org.jsoup:jsoup:1.18.1")
@@ -972,7 +978,7 @@ dependencies {
972978
implementation("xalan:xalan:2.7.3")
973979

974980
// validations
975-
implementation("com.networknt:json-schema-validator:1.5.1")
981+
implementation("com.networknt:json-schema-validator:1.5.2")
976982
implementation("io.konform:konform-jvm:0.4.0")
977983

978984
runtimeOnly("com.okta.jwt:okta-jwt-verifier-impl:0.5.7")

prime-router/docs/universal-pipeline/translate.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ The two kinds of transforms work the same at a high level. The schema enumerates
3838

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

4344
The primary difference between the FHIR and HL7 schemas is that the HL7 converter has special handling for converting
4445
a FHIR resource into an HL7 segment or component.

prime-router/metadata/json_schema/fhir/fhir-to-fhir-transform.json

+3
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@
6767
"type": "string"
6868
}
6969
},
70+
"function": {
71+
"type": "string"
72+
},
7073
"valueSet": {
7174
"anyOf": [
7275
{

prime-router/src/main/kotlin/config/validation/Validations.kt

+3
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,9 @@ object FhirToFhirTransformValidation : KonformValidation<FhirTransformSchema>()
113113
addConstraint("Invalid FHIR path: {value}", test = ::validFhirPath)
114114
}
115115
}
116+
addConstraint("Value and function cannot both be set") { element ->
117+
!(element.value != null && element.function != null)
118+
}
116119
}
117120
}
118121
}

0 commit comments

Comments
 (0)