From 4d274f55578b5fea9e38c31f9d9b44f65bc51dc0 Mon Sep 17 00:00:00 2001 From: fern-api <115122769+fern-api[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 17:27:37 +0000 Subject: [PATCH 1/4] [fern-generated] Update SDK Generated by Fern CLI Version: unknown Generators: - fernapi/fern-java-sdk: 4.9.2 --- .fern/metadata.json | 4 ++-- build.gradle | 4 ++-- src/main/java/com/phenoml/api/core/ClientOptions.java | 4 ++-- .../api/resources/fhirprovider/types/Provider.java | 10 ++++++++++ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/.fern/metadata.json b/.fern/metadata.json index 872c578..c81871d 100644 --- a/.fern/metadata.json +++ b/.fern/metadata.json @@ -10,10 +10,10 @@ "enable-wire-tests": true, "publish-to": "central" }, - "originGitCommit": "788cec0a9a7651caf2b106634631d487dfa16704", + "originGitCommit": "64f369254225bd6c2d4c58d87f59165d7e8e8dc9", "originGitCommitIsDirty": true, "invokedBy": "ci", "requestedVersion": "AUTO", "ciProvider": "unknown", - "sdkVersion": "17.4.0" + "sdkVersion": "0.0.0-fern-placeholder" } \ No newline at end of file diff --git a/build.gradle b/build.gradle index 9f65502..e9f35ce 100644 --- a/build.gradle +++ b/build.gradle @@ -48,7 +48,7 @@ java { group = 'com.phenoml.maven' -version = '17.4.0' +version = '0.0.0-fern-placeholder' jar { dependsOn(":generatePomFileForMavenPublication") @@ -79,7 +79,7 @@ publishing { maven(MavenPublication) { groupId = 'com.phenoml.maven' artifactId = 'phenoml-java-sdk' - version = '17.4.0' + version = '0.0.0-fern-placeholder' from components.java pom { name = 'phenoml' diff --git a/src/main/java/com/phenoml/api/core/ClientOptions.java b/src/main/java/com/phenoml/api/core/ClientOptions.java index 89f6871..b1f15e2 100644 --- a/src/main/java/com/phenoml/api/core/ClientOptions.java +++ b/src/main/java/com/phenoml/api/core/ClientOptions.java @@ -38,10 +38,10 @@ private ClientOptions( this.headers.putAll(headers); this.headers.putAll(new HashMap() { { - put("User-Agent", "com.phenoml.maven:phenoml-java-sdk/17.4.0"); + put("User-Agent", "com.phenoml.maven:phenoml-java-sdk/0.0.0-fern-placeholder"); put("X-Fern-Language", "JAVA"); put("X-Fern-SDK-Name", "com.phenoml.fern:api-sdk"); - put("X-Fern-SDK-Version", "17.4.0"); + put("X-Fern-SDK-Version", "0.0.0-fern-placeholder"); } }); this.headerSuppliers = headerSuppliers; diff --git a/src/main/java/com/phenoml/api/resources/fhirprovider/types/Provider.java b/src/main/java/com/phenoml/api/resources/fhirprovider/types/Provider.java index 59655d7..cc7d8cb 100644 --- a/src/main/java/com/phenoml/api/resources/fhirprovider/types/Provider.java +++ b/src/main/java/com/phenoml/api/resources/fhirprovider/types/Provider.java @@ -17,6 +17,8 @@ public final class Provider { public static final Provider CERNER = new Provider(Value.CERNER, "cerner"); + public static final Provider AIDBOX = new Provider(Value.AIDBOX, "aidbox"); + public static final Provider ATHENAHEALTH = new Provider(Value.ATHENAHEALTH, "athenahealth"); public static final Provider CANVAS = new Provider(Value.CANVAS, "canvas"); @@ -70,6 +72,8 @@ public T visit(Visitor visitor) { return visitor.visitPhenostore(); case CERNER: return visitor.visitCerner(); + case AIDBOX: + return visitor.visitAidbox(); case ATHENAHEALTH: return visitor.visitAthenahealth(); case CANVAS: @@ -101,6 +105,8 @@ public static Provider valueOf(String value) { return PHENOSTORE; case "cerner": return CERNER; + case "aidbox": + return AIDBOX; case "athenahealth": return ATHENAHEALTH; case "canvas": @@ -119,6 +125,8 @@ public static Provider valueOf(String value) { } public enum Value { + AIDBOX, + ATHENAHEALTH, CANVAS, @@ -145,6 +153,8 @@ public enum Value { } public interface Visitor { + T visitAidbox(); + T visitAthenahealth(); T visitCanvas(); From 051bd818b9e4dd9896d5d2c141bb56a8e51950fb Mon Sep 17 00:00:00 2001 From: fern-api <115122769+fern-api[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 17:28:23 +0000 Subject: [PATCH 2/4] [fern-autoversion] feat: add Fhir2OmopClient for FHIR-to-OMOP CDM v5.4 mapping MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduce a new `fhir2omop` service client that maps FHIR R4 resources and Bundles into OMOP Common Data Model v5.4 rows via `POST /fhir2omop/create`. Both synchronous and asynchronous variants are exposed on the top-level client. The response includes typed OMOP table rows, per-coding mapping entries, dropped-resource details, vocabulary version, and a resolution summary. Key changes: - Add `PhenomlClient.fhir2Omop()` returning a new `Fhir2OmopClient` with a `create(CreateOmopRequest)` method - Add `AsyncPhenomlClient.fhir2Omop()` returning a new `AsyncFhir2OmopClient` with the async equivalent - Add new request/response types: `CreateOmopRequest`, `CreateOmopResponse`, `OmopTables`, `MappingEntry`, `Summary`, `DroppedResource`, and all OMOP CDM row types (`PersonRow`, `VisitOccurrenceRow`, `ConditionOccurrenceRow`, `DrugExposureRow`, `ProcedureOccurrenceRow`, `MeasurementRow`, `ObservationRow`) - Update `code-examples.json` and `openapi.json` with the new `fhir2omop` service definition and example payloads 🌿 Generated with Fern --- .fern/metadata.json | 2 +- build.gradle | 4 ++-- changelog.md | 10 ++++++++++ src/main/java/com/phenoml/api/core/ClientOptions.java | 4 ++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.fern/metadata.json b/.fern/metadata.json index c81871d..fcc5c6d 100644 --- a/.fern/metadata.json +++ b/.fern/metadata.json @@ -15,5 +15,5 @@ "invokedBy": "ci", "requestedVersion": "AUTO", "ciProvider": "unknown", - "sdkVersion": "0.0.0-fern-placeholder" + "sdkVersion": "17.5.0" } \ No newline at end of file diff --git a/build.gradle b/build.gradle index e9f35ce..2c5ccc2 100644 --- a/build.gradle +++ b/build.gradle @@ -48,7 +48,7 @@ java { group = 'com.phenoml.maven' -version = '0.0.0-fern-placeholder' +version = '17.5.0' jar { dependsOn(":generatePomFileForMavenPublication") @@ -79,7 +79,7 @@ publishing { maven(MavenPublication) { groupId = 'com.phenoml.maven' artifactId = 'phenoml-java-sdk' - version = '0.0.0-fern-placeholder' + version = '17.5.0' from components.java pom { name = 'phenoml' diff --git a/changelog.md b/changelog.md index dd6a01c..05f006e 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,13 @@ +## [17.5.0] - 2026-06-15 +### Added +- **`PhenomlClient.fhir2Omop()`** / **`AsyncPhenomlClient.fhir2Omop()`** — new client accessors exposing the `fhir2omop` service in both synchronous and asynchronous flavors. +- **`Fhir2OmopClient`**, **`AsyncFhir2OmopClient`**, **`RawFhir2OmopClient`**, and **`AsyncRawFhir2OmopClient`** — new client classes for `POST /fhir2omop/create`, returning typed `CreateOmopResponse` results. +- **`CreateOmopRequest`** / **`CreateOmopResponse`** — new request/response types for the fhir2omop endpoint, carrying a `fhirResources` map and returning `tables`, `mappings`, `dropped`, `vocabVersion`, and `summary` fields. +- **OMOP CDM v5.4 row types** — new `OmopTables` aggregate and row classes (`PersonRow`, `VisitOccurrenceRow`, `ConditionOccurrenceRow`, `DrugExposureRow`, `ProcedureOccurrenceRow`, `MeasurementRow`, `ObservationRow`) representing all supported OMOP table records. +- **`MappingEntry`**, **`Summary`**, and **`DroppedResource`** — new supporting types for per-coding mapping audit, aggregate resolution statistics, and details on resources that could not be shaped into OMOP rows. +- **Typed HTTP error classes** — `BadRequestError`, `UnauthorizedError`, `InternalServerError`, and `ServiceUnavailableError` thrown on HTTP 400, 401, 500, and 503 responses from the fhir2omop endpoint. +- **`Provider.AIDBOX`** — new `aidbox` provider constant and corresponding `Visitor.visitAidbox()` method added to the `Provider` enum. + ## [17.4.0] - 2026-06-15 ### Added - **`ConditionOccurrenceRow.getVisitOccurrenceId()`**, **`DrugExposureRow.getVisitOccurrenceId()`**, **`MeasurementRow.getVisitOccurrenceId()`**, **`ObservationRow.getVisitOccurrenceId()`**, and **`ProcedureOccurrenceRow.getVisitOccurrenceId()`** — new optional accessor linking each clinical OMOP row back to its `visit_occurrence` row. diff --git a/src/main/java/com/phenoml/api/core/ClientOptions.java b/src/main/java/com/phenoml/api/core/ClientOptions.java index b1f15e2..24c1b6b 100644 --- a/src/main/java/com/phenoml/api/core/ClientOptions.java +++ b/src/main/java/com/phenoml/api/core/ClientOptions.java @@ -38,10 +38,10 @@ private ClientOptions( this.headers.putAll(headers); this.headers.putAll(new HashMap() { { - put("User-Agent", "com.phenoml.maven:phenoml-java-sdk/0.0.0-fern-placeholder"); + put("User-Agent", "com.phenoml.maven:phenoml-java-sdk/17.5.0"); put("X-Fern-Language", "JAVA"); put("X-Fern-SDK-Name", "com.phenoml.fern:api-sdk"); - put("X-Fern-SDK-Version", "0.0.0-fern-placeholder"); + put("X-Fern-SDK-Version", "17.5.0"); } }); this.headerSuppliers = headerSuppliers; From ddfa521b8eb94c053aa8fe8fe618f0da6b462e86 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 17:28:40 +0000 Subject: [PATCH 3/4] chore: sync OpenAPI spec + code-examples for 64f369254225bd6c2d4c58d87f59165d7e8e8dc9 --- code-examples.json | 6 ++++-- src/main/resources/openapi/openapi.json | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/code-examples.json b/code-examples.json index 48af205..2684d0c 100644 --- a/code-examples.json +++ b/code-examples.json @@ -2,8 +2,8 @@ "metadata": { "language": "java", "packageName": "com.phenoml.maven:phenoml-java-sdk", - "sdkVersion": "17.4.0", - "specCommit": "788cec0a9a7651caf2b106634631d487dfa16704", + "sdkVersion": "17.5.0", + "specCommit": "64f369254225bd6c2d4c58d87f59165d7e8e8dc9", "generatorName": "fernapi/fern-java-sdk" }, "renderRules": { @@ -2701,6 +2701,7 @@ "kind": "enum", "required": true, "enumValues": [ + "aidbox", "athenahealth", "canvas", "cerner", @@ -2714,6 +2715,7 @@ "sandbox" ], "enumConstants": { + "aidbox": "Provider.AIDBOX", "athenahealth": "Provider.ATHENAHEALTH", "canvas": "Provider.CANVAS", "cerner": "Provider.CERNER", diff --git a/src/main/resources/openapi/openapi.json b/src/main/resources/openapi/openapi.json index 3924b6b..3882086 100644 --- a/src/main/resources/openapi/openapi.json +++ b/src/main/resources/openapi/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.3", "info": { "title": "Phenoml API", - "version": "788cec0a9a7651caf2b106634631d487dfa16704" + "version": "64f369254225bd6c2d4c58d87f59165d7e8e8dc9" }, "x-services": [ { @@ -9323,6 +9323,7 @@ "type": "string", "description": "Type of FHIR server provider.\n\nThe \"sandbox\" provider type is managed internally and cannot be created via API.\nIt is used on shared instances.\n", "enum": [ + "aidbox", "athenahealth", "canvas", "cerner", From e2c6a0fbf1d2a42a44a3f1d38a2ca1b94bc52140 Mon Sep 17 00:00:00 2001 From: Gavin Sharp Date: Mon, 15 Jun 2026 15:23:53 -0400 Subject: [PATCH 4/4] docs(changelog): scope this release to the aidbox provider addition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fern's auto-changelog re-listed already-shipped fhir2omop changes (already on main and published) as new — its changelog diff base was stale. The only real change in this release is the new "aidbox" Provider value. Co-Authored-By: Claude Opus 4.8 --- changelog.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/changelog.md b/changelog.md index 05f006e..4afe10a 100644 --- a/changelog.md +++ b/changelog.md @@ -1,12 +1,6 @@ ## [17.5.0] - 2026-06-15 ### Added -- **`PhenomlClient.fhir2Omop()`** / **`AsyncPhenomlClient.fhir2Omop()`** — new client accessors exposing the `fhir2omop` service in both synchronous and asynchronous flavors. -- **`Fhir2OmopClient`**, **`AsyncFhir2OmopClient`**, **`RawFhir2OmopClient`**, and **`AsyncRawFhir2OmopClient`** — new client classes for `POST /fhir2omop/create`, returning typed `CreateOmopResponse` results. -- **`CreateOmopRequest`** / **`CreateOmopResponse`** — new request/response types for the fhir2omop endpoint, carrying a `fhirResources` map and returning `tables`, `mappings`, `dropped`, `vocabVersion`, and `summary` fields. -- **OMOP CDM v5.4 row types** — new `OmopTables` aggregate and row classes (`PersonRow`, `VisitOccurrenceRow`, `ConditionOccurrenceRow`, `DrugExposureRow`, `ProcedureOccurrenceRow`, `MeasurementRow`, `ObservationRow`) representing all supported OMOP table records. -- **`MappingEntry`**, **`Summary`**, and **`DroppedResource`** — new supporting types for per-coding mapping audit, aggregate resolution statistics, and details on resources that could not be shaped into OMOP rows. -- **Typed HTTP error classes** — `BadRequestError`, `UnauthorizedError`, `InternalServerError`, and `ServiceUnavailableError` thrown on HTTP 400, 401, 500, and 503 responses from the fhir2omop endpoint. -- **`Provider.AIDBOX`** — new `aidbox` provider constant and corresponding `Visitor.visitAidbox()` method added to the `Provider` enum. +- **`Provider.AIDBOX`** — `"aidbox"` is now a supported value in the `Provider` enum (with a corresponding `Visitor.visitAidbox()` method). ## [17.4.0] - 2026-06-15 ### Added