From f781cf08e0e75d92dbac08a7b131400b169a8b14 Mon Sep 17 00:00:00 2001 From: fern-api <115122769+fern-api[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 15:08:53 +0000 Subject: [PATCH 1/3] [fern-generated] Update SDK Generated by Fern CLI Version: unknown Generators: - fernapi/fern-java-sdk: 4.9.2 --- .fern/metadata.json | 6 +-- build.gradle | 4 +- reference.md | 35 +++++++++++-- .../com/phenoml/api/core/ClientOptions.java | 4 +- .../fhir2omop/AsyncFhir2OmopClient.java | 52 +++++++++++++++++++ .../fhir2omop/AsyncRawFhir2OmopClient.java | 52 +++++++++++++++++++ .../resources/fhir2omop/Fhir2OmopClient.java | 52 +++++++++++++++++++ .../fhir2omop/RawFhir2OmopClient.java | 52 +++++++++++++++++++ .../fhir2omop/requests/CreateOmopRequest.java | 18 ++++--- .../fhir2omop/types/CreateOmopResponse.java | 10 +++- 10 files changed, 267 insertions(+), 18 deletions(-) diff --git a/.fern/metadata.json b/.fern/metadata.json index fcc5c6d..6c6c17d 100644 --- a/.fern/metadata.json +++ b/.fern/metadata.json @@ -1,5 +1,5 @@ { - "cliVersion": "5.49.1", + "cliVersion": "5.50.1", "generatorName": "fernapi/fern-java-sdk", "generatorVersion": "4.9.2", "generatorConfig": { @@ -10,10 +10,10 @@ "enable-wire-tests": true, "publish-to": "central" }, - "originGitCommit": "64f369254225bd6c2d4c58d87f59165d7e8e8dc9", + "originGitCommit": "fff9ecb3e3ee9847a86bfb09de6df7e477ecd13e", "originGitCommitIsDirty": true, "invokedBy": "ci", "requestedVersion": "AUTO", "ciProvider": "unknown", - "sdkVersion": "17.5.0" + "sdkVersion": "0.0.0-fern-placeholder" } \ No newline at end of file diff --git a/build.gradle b/build.gradle index 2c5ccc2..e9f35ce 100644 --- a/build.gradle +++ b/build.gradle @@ -48,7 +48,7 @@ java { group = 'com.phenoml.maven' -version = '17.5.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.5.0' + version = '0.0.0-fern-placeholder' from components.java pom { name = 'phenoml' diff --git a/reference.md b/reference.md index 4792978..9a04cdc 100644 --- a/reference.md +++ b/reference.md @@ -3036,6 +3036,32 @@ Maps a FHIR R4 resource or Bundle into OMOP Common Data Model v5.4 rows (person, visit_occurrence, condition_occurrence, drug_exposure, procedure_occurrence, measurement, observation). +Resource support is intentionally limited to the OMOP tables returned by +this endpoint: +- `Patient` -> `person` +- `Encounter` -> `visit_occurrence` +- `Condition` -> `condition_occurrence` +- `Procedure` -> `procedure_occurrence` +- `MedicationRequest`, `MedicationStatement`, and + `MedicationAdministration` -> `drug_exposure` +- `Immunization` -> `drug_exposure` +- `Observation` with a numeric `valueQuantity`, `valueInteger`, or + numeric-looking `valueString` (for example `"<2"`) -> `measurement` +- non-numeric `Observation` -> `observation` +- `AllergyIntolerance` -> `observation` + +`Medication` is supported only as reference data for medication +resources; it is not emitted as its own row because OMOP CDM has no +Medication table. Other reference/admin resources such as `Practitioner`, +`Organization`, `Location`, `Coverage`, and `Claim`, and clinical +workflow/document resources such as `DiagnosticReport`, `ServiceRequest`, +`CarePlan`, `DocumentReference`, `Composition`, `Specimen`, and +`DeviceUseStatement`, are currently accepted in a Bundle but are not +shaped into OMOP rows. Unsupported resource types are ignored rather than +listed under `dropped`; `dropped` is reserved for supported resource types +that were missing the subject/patient, code, or medication reference data +needed to produce a valid row. + Each resource's primary clinical coding is resolved to a standard OMOP `concept_id`. Alongside the OMOP rows grouped by table (`tables`), the response carries `mappings` (how each source coding resolved, linked back @@ -3151,9 +3177,12 @@ client.fhir2Omop().create( **fhirResources:** `Map` FHIR resources (single resource or Bundle). Must contain at least one -Patient resource. Resources are mapped to OMOP rows; standalone -Medication resources are consumed by medication references rather than -mapped to their own table. +Patient resource. Supported row-producing resources are Patient, +Encounter, Condition, Procedure, MedicationRequest, +MedicationStatement, MedicationAdministration, Immunization, +Observation, and AllergyIntolerance. Standalone Medication resources +are consumed by medication references rather than mapped to their own +table. Other resource types are accepted but ignored. diff --git a/src/main/java/com/phenoml/api/core/ClientOptions.java b/src/main/java/com/phenoml/api/core/ClientOptions.java index 24c1b6b..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.5.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.5.0"); + put("X-Fern-SDK-Version", "0.0.0-fern-placeholder"); } }); this.headerSuppliers = headerSuppliers; diff --git a/src/main/java/com/phenoml/api/resources/fhir2omop/AsyncFhir2OmopClient.java b/src/main/java/com/phenoml/api/resources/fhir2omop/AsyncFhir2OmopClient.java index 907d42a..509fc77 100644 --- a/src/main/java/com/phenoml/api/resources/fhir2omop/AsyncFhir2OmopClient.java +++ b/src/main/java/com/phenoml/api/resources/fhir2omop/AsyncFhir2OmopClient.java @@ -30,6 +30,32 @@ public AsyncRawFhir2OmopClient withRawResponse() { * Maps a FHIR R4 resource or Bundle into OMOP Common Data Model v5.4 rows * (person, visit_occurrence, condition_occurrence, drug_exposure, * procedure_occurrence, measurement, observation). + *

Resource support is intentionally limited to the OMOP tables returned by + * this endpoint:

+ * + *

Medication is supported only as reference data for medication + * resources; it is not emitted as its own row because OMOP CDM has no + * Medication table. Other reference/admin resources such as Practitioner, + * Organization, Location, Coverage, and Claim, and clinical + * workflow/document resources such as DiagnosticReport, ServiceRequest, + * CarePlan, DocumentReference, Composition, Specimen, and + * DeviceUseStatement, are currently accepted in a Bundle but are not + * shaped into OMOP rows. Unsupported resource types are ignored rather than + * listed under dropped; dropped is reserved for supported resource types + * that were missing the subject/patient, code, or medication reference data + * needed to produce a valid row.

*

Each resource's primary clinical coding is resolved to a standard OMOP * concept_id. Alongside the OMOP rows grouped by table (tables), the * response carries mappings (how each source coding resolved, linked back @@ -62,6 +88,32 @@ public CompletableFuture create(CreateOmopRequest request) { * Maps a FHIR R4 resource or Bundle into OMOP Common Data Model v5.4 rows * (person, visit_occurrence, condition_occurrence, drug_exposure, * procedure_occurrence, measurement, observation). + *

Resource support is intentionally limited to the OMOP tables returned by + * this endpoint:

+ * + *

Medication is supported only as reference data for medication + * resources; it is not emitted as its own row because OMOP CDM has no + * Medication table. Other reference/admin resources such as Practitioner, + * Organization, Location, Coverage, and Claim, and clinical + * workflow/document resources such as DiagnosticReport, ServiceRequest, + * CarePlan, DocumentReference, Composition, Specimen, and + * DeviceUseStatement, are currently accepted in a Bundle but are not + * shaped into OMOP rows. Unsupported resource types are ignored rather than + * listed under dropped; dropped is reserved for supported resource types + * that were missing the subject/patient, code, or medication reference data + * needed to produce a valid row.

*

Each resource's primary clinical coding is resolved to a standard OMOP * concept_id. Alongside the OMOP rows grouped by table (tables), the * response carries mappings (how each source coding resolved, linked back diff --git a/src/main/java/com/phenoml/api/resources/fhir2omop/AsyncRawFhir2OmopClient.java b/src/main/java/com/phenoml/api/resources/fhir2omop/AsyncRawFhir2OmopClient.java index a6f3f84..4536efc 100644 --- a/src/main/java/com/phenoml/api/resources/fhir2omop/AsyncRawFhir2OmopClient.java +++ b/src/main/java/com/phenoml/api/resources/fhir2omop/AsyncRawFhir2OmopClient.java @@ -41,6 +41,32 @@ public AsyncRawFhir2OmopClient(ClientOptions clientOptions) { * Maps a FHIR R4 resource or Bundle into OMOP Common Data Model v5.4 rows * (person, visit_occurrence, condition_occurrence, drug_exposure, * procedure_occurrence, measurement, observation). + *

Resource support is intentionally limited to the OMOP tables returned by + * this endpoint:

+ * + *

Medication is supported only as reference data for medication + * resources; it is not emitted as its own row because OMOP CDM has no + * Medication table. Other reference/admin resources such as Practitioner, + * Organization, Location, Coverage, and Claim, and clinical + * workflow/document resources such as DiagnosticReport, ServiceRequest, + * CarePlan, DocumentReference, Composition, Specimen, and + * DeviceUseStatement, are currently accepted in a Bundle but are not + * shaped into OMOP rows. Unsupported resource types are ignored rather than + * listed under dropped; dropped is reserved for supported resource types + * that were missing the subject/patient, code, or medication reference data + * needed to produce a valid row.

*

Each resource's primary clinical coding is resolved to a standard OMOP * concept_id. Alongside the OMOP rows grouped by table (tables), the * response carries mappings (how each source coding resolved, linked back @@ -73,6 +99,32 @@ public CompletableFuture> create(C * Maps a FHIR R4 resource or Bundle into OMOP Common Data Model v5.4 rows * (person, visit_occurrence, condition_occurrence, drug_exposure, * procedure_occurrence, measurement, observation). + *

Resource support is intentionally limited to the OMOP tables returned by + * this endpoint:

+ * + *

Medication is supported only as reference data for medication + * resources; it is not emitted as its own row because OMOP CDM has no + * Medication table. Other reference/admin resources such as Practitioner, + * Organization, Location, Coverage, and Claim, and clinical + * workflow/document resources such as DiagnosticReport, ServiceRequest, + * CarePlan, DocumentReference, Composition, Specimen, and + * DeviceUseStatement, are currently accepted in a Bundle but are not + * shaped into OMOP rows. Unsupported resource types are ignored rather than + * listed under dropped; dropped is reserved for supported resource types + * that were missing the subject/patient, code, or medication reference data + * needed to produce a valid row.

*

Each resource's primary clinical coding is resolved to a standard OMOP * concept_id. Alongside the OMOP rows grouped by table (tables), the * response carries mappings (how each source coding resolved, linked back diff --git a/src/main/java/com/phenoml/api/resources/fhir2omop/Fhir2OmopClient.java b/src/main/java/com/phenoml/api/resources/fhir2omop/Fhir2OmopClient.java index 8f44914..5def4f5 100644 --- a/src/main/java/com/phenoml/api/resources/fhir2omop/Fhir2OmopClient.java +++ b/src/main/java/com/phenoml/api/resources/fhir2omop/Fhir2OmopClient.java @@ -29,6 +29,32 @@ public RawFhir2OmopClient withRawResponse() { * Maps a FHIR R4 resource or Bundle into OMOP Common Data Model v5.4 rows * (person, visit_occurrence, condition_occurrence, drug_exposure, * procedure_occurrence, measurement, observation). + *

Resource support is intentionally limited to the OMOP tables returned by + * this endpoint:

+ * + *

Medication is supported only as reference data for medication + * resources; it is not emitted as its own row because OMOP CDM has no + * Medication table. Other reference/admin resources such as Practitioner, + * Organization, Location, Coverage, and Claim, and clinical + * workflow/document resources such as DiagnosticReport, ServiceRequest, + * CarePlan, DocumentReference, Composition, Specimen, and + * DeviceUseStatement, are currently accepted in a Bundle but are not + * shaped into OMOP rows. Unsupported resource types are ignored rather than + * listed under dropped; dropped is reserved for supported resource types + * that were missing the subject/patient, code, or medication reference data + * needed to produce a valid row.

*

Each resource's primary clinical coding is resolved to a standard OMOP * concept_id. Alongside the OMOP rows grouped by table (tables), the * response carries mappings (how each source coding resolved, linked back @@ -61,6 +87,32 @@ public CreateOmopResponse create(CreateOmopRequest request) { * Maps a FHIR R4 resource or Bundle into OMOP Common Data Model v5.4 rows * (person, visit_occurrence, condition_occurrence, drug_exposure, * procedure_occurrence, measurement, observation). + *

Resource support is intentionally limited to the OMOP tables returned by + * this endpoint:

+ * + *

Medication is supported only as reference data for medication + * resources; it is not emitted as its own row because OMOP CDM has no + * Medication table. Other reference/admin resources such as Practitioner, + * Organization, Location, Coverage, and Claim, and clinical + * workflow/document resources such as DiagnosticReport, ServiceRequest, + * CarePlan, DocumentReference, Composition, Specimen, and + * DeviceUseStatement, are currently accepted in a Bundle but are not + * shaped into OMOP rows. Unsupported resource types are ignored rather than + * listed under dropped; dropped is reserved for supported resource types + * that were missing the subject/patient, code, or medication reference data + * needed to produce a valid row.

*

Each resource's primary clinical coding is resolved to a standard OMOP * concept_id. Alongside the OMOP rows grouped by table (tables), the * response carries mappings (how each source coding resolved, linked back diff --git a/src/main/java/com/phenoml/api/resources/fhir2omop/RawFhir2OmopClient.java b/src/main/java/com/phenoml/api/resources/fhir2omop/RawFhir2OmopClient.java index 5f16e04..fe8d28d 100644 --- a/src/main/java/com/phenoml/api/resources/fhir2omop/RawFhir2OmopClient.java +++ b/src/main/java/com/phenoml/api/resources/fhir2omop/RawFhir2OmopClient.java @@ -37,6 +37,32 @@ public RawFhir2OmopClient(ClientOptions clientOptions) { * Maps a FHIR R4 resource or Bundle into OMOP Common Data Model v5.4 rows * (person, visit_occurrence, condition_occurrence, drug_exposure, * procedure_occurrence, measurement, observation). + *

Resource support is intentionally limited to the OMOP tables returned by + * this endpoint:

+ * + *

Medication is supported only as reference data for medication + * resources; it is not emitted as its own row because OMOP CDM has no + * Medication table. Other reference/admin resources such as Practitioner, + * Organization, Location, Coverage, and Claim, and clinical + * workflow/document resources such as DiagnosticReport, ServiceRequest, + * CarePlan, DocumentReference, Composition, Specimen, and + * DeviceUseStatement, are currently accepted in a Bundle but are not + * shaped into OMOP rows. Unsupported resource types are ignored rather than + * listed under dropped; dropped is reserved for supported resource types + * that were missing the subject/patient, code, or medication reference data + * needed to produce a valid row.

*

Each resource's primary clinical coding is resolved to a standard OMOP * concept_id. Alongside the OMOP rows grouped by table (tables), the * response carries mappings (how each source coding resolved, linked back @@ -69,6 +95,32 @@ public PhenomlClientHttpResponse create(CreateOmopRequest re * Maps a FHIR R4 resource or Bundle into OMOP Common Data Model v5.4 rows * (person, visit_occurrence, condition_occurrence, drug_exposure, * procedure_occurrence, measurement, observation). + *

Resource support is intentionally limited to the OMOP tables returned by + * this endpoint:

+ * + *

Medication is supported only as reference data for medication + * resources; it is not emitted as its own row because OMOP CDM has no + * Medication table. Other reference/admin resources such as Practitioner, + * Organization, Location, Coverage, and Claim, and clinical + * workflow/document resources such as DiagnosticReport, ServiceRequest, + * CarePlan, DocumentReference, Composition, Specimen, and + * DeviceUseStatement, are currently accepted in a Bundle but are not + * shaped into OMOP rows. Unsupported resource types are ignored rather than + * listed under dropped; dropped is reserved for supported resource types + * that were missing the subject/patient, code, or medication reference data + * needed to produce a valid row.

*

Each resource's primary clinical coding is resolved to a standard OMOP * concept_id. Alongside the OMOP rows grouped by table (tables), the * response carries mappings (how each source coding resolved, linked back diff --git a/src/main/java/com/phenoml/api/resources/fhir2omop/requests/CreateOmopRequest.java b/src/main/java/com/phenoml/api/resources/fhir2omop/requests/CreateOmopRequest.java index 1ac4436..34b8f6d 100644 --- a/src/main/java/com/phenoml/api/resources/fhir2omop/requests/CreateOmopRequest.java +++ b/src/main/java/com/phenoml/api/resources/fhir2omop/requests/CreateOmopRequest.java @@ -31,9 +31,12 @@ private CreateOmopRequest(Map fhirResources, Map /** * @return FHIR resources (single resource or Bundle). Must contain at least one - * Patient resource. Resources are mapped to OMOP rows; standalone - * Medication resources are consumed by medication references rather than - * mapped to their own table. + * Patient resource. Supported row-producing resources are Patient, + * Encounter, Condition, Procedure, MedicationRequest, + * MedicationStatement, MedicationAdministration, Immunization, + * Observation, and AllergyIntolerance. Standalone Medication resources + * are consumed by medication references rather than mapped to their own + * table. Other resource types are accepted but ignored. */ @JsonProperty("fhir_resources") public Map getFhirResources() { @@ -85,9 +88,12 @@ public Builder from(CreateOmopRequest other) { /** *

FHIR resources (single resource or Bundle). Must contain at least one - * Patient resource. Resources are mapped to OMOP rows; standalone - * Medication resources are consumed by medication references rather than - * mapped to their own table.

+ * Patient resource. Supported row-producing resources are Patient, + * Encounter, Condition, Procedure, MedicationRequest, + * MedicationStatement, MedicationAdministration, Immunization, + * Observation, and AllergyIntolerance. Standalone Medication resources + * are consumed by medication references rather than mapped to their own + * table. Other resource types are accepted but ignored.

*/ @JsonSetter(value = "fhir_resources", nulls = Nulls.SKIP) public Builder fhirResources(Map fhirResources) { diff --git a/src/main/java/com/phenoml/api/resources/fhir2omop/types/CreateOmopResponse.java b/src/main/java/com/phenoml/api/resources/fhir2omop/types/CreateOmopResponse.java index 0160ece..e365995 100644 --- a/src/main/java/com/phenoml/api/resources/fhir2omop/types/CreateOmopResponse.java +++ b/src/main/java/com/phenoml/api/resources/fhir2omop/types/CreateOmopResponse.java @@ -80,7 +80,10 @@ public Optional> getMappings() { } /** - * @return Resources that could not be shaped into an OMOP row (rather than emitted as blank rows). + * @return Supported resource instances that could not be shaped into an OMOP + * row because required subject/patient, code, or medication reference + * data was missing. Unsupported resource types are ignored and do not + * appear here. */ @JsonProperty("dropped") public Optional> getDropped() { @@ -218,7 +221,10 @@ public Builder mappings(List mappings) { } /** - *

Resources that could not be shaped into an OMOP row (rather than emitted as blank rows).

+ *

Supported resource instances that could not be shaped into an OMOP + * row because required subject/patient, code, or medication reference + * data was missing. Unsupported resource types are ignored and do not + * appear here.

*/ @JsonSetter(value = "dropped", nulls = Nulls.SKIP) public Builder dropped(Optional> dropped) { From 3f31a49540a8f1fe909b884d15845054f2de9e1d Mon Sep 17 00:00:00 2001 From: fern-api <115122769+fern-api[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 15:09:40 +0000 Subject: [PATCH 2/3] [fern-autoversion] feat: add AsyncFhir2OmopClient and fhir2omop service support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Expose the FHIR-to-OMOP CDM v5.4 mapping service through the async client surface. Consumers can now call `client.fhir2Omop().create(...)` to post a FHIR R4 resource or Bundle and receive typed OMOP rows grouped by table, per-coding mapping entries, dropped-resource details, and a resolution summary. Key changes: - Add `AsyncFhir2OmopClient` with a `create(CreateOmopRequest)` method posting to `POST /fhir2omop/create` - Expose `AsyncPhenomlClient.fhir2Omop()` accessor returning the new client - Register `fhir2omop` as a new service in the OpenAPI spec with full request/response schemas (`fhir2omop_CreateOmopRequest`, `fhir2omop_CreateOmopResponse`, OMOP row types, `MappingEntry`, `Summary`, `DroppedResource`) - Add `"aidbox"` as a supported `Provider` enum value in code examples and OpenAPI spec - Update spec commit hash and code-example SDK version metadata 🌿 Generated with Fern --- .fern/metadata.json | 2 +- build.gradle | 4 ++-- changelog.md | 9 +++++++++ src/main/java/com/phenoml/api/core/ClientOptions.java | 4 ++-- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.fern/metadata.json b/.fern/metadata.json index 6c6c17d..4c444e4 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.6.0" } \ No newline at end of file diff --git a/build.gradle b/build.gradle index e9f35ce..842382d 100644 --- a/build.gradle +++ b/build.gradle @@ -48,7 +48,7 @@ java { group = 'com.phenoml.maven' -version = '0.0.0-fern-placeholder' +version = '17.6.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.6.0' from components.java pom { name = 'phenoml' diff --git a/changelog.md b/changelog.md index 4afe10a..03fa250 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,12 @@ +## [17.6.0] - 2026-06-18 +### Added +- **`Fhir2OmopClient` / `AsyncFhir2OmopClient`** — new synchronous and asynchronous clients (plus raw-response variants) accessible via `PhenomlClient.fhir2Omop()` and `AsyncPhenomlClient.fhir2Omop()`, exposing `create(CreateOmopRequest)` to convert a FHIR R4 resource or Bundle to OMOP CDM v5.4 rows via `POST /fhir2omop/create`. +- **`CreateOmopRequest` / `CreateOmopResponse`** — new request/response types for the FHIR-to-OMOP conversion endpoint, carrying `fhirResources` and returning `tables`, `mappings`, `dropped`, `vocabVersion`, `summary`, `success`, and `message` fields. +- **OMOP CDM v5.4 row types** — new `PersonRow`, `VisitOccurrenceRow`, `ConditionOccurrenceRow`, `DrugExposureRow`, `ProcedureOccurrenceRow`, `MeasurementRow`, and `ObservationRow` classes aggregated under `OmopTables`. +- **`MappingEntry` / `Summary` / `DroppedResource`** — new supporting types describing per-coding resolution status (`ALREADY_STANDARD`, `MAPPED`, `UNCHECKED`, `UNMAPPED`), aggregate mapping statistics, and resources that could not be shaped into OMOP rows. +- **`BadRequestError`, `UnauthorizedError`, `InternalServerError`, `ServiceUnavailableError`** — new typed exception classes extending `PhenomlClientApiException`, thrown for HTTP 400, 401, 500, and 503 responses from the FHIR-to-OMOP endpoint. +- **`Provider.AIDBOX`** — `"aidbox"` is now a supported value in the `Provider` enum, with a corresponding `Visitor.visitAidbox()` method. + ## [17.5.0] - 2026-06-15 ### Added - **`Provider.AIDBOX`** — `"aidbox"` is now a supported value in the `Provider` enum (with a corresponding `Visitor.visitAidbox()` method). diff --git a/src/main/java/com/phenoml/api/core/ClientOptions.java b/src/main/java/com/phenoml/api/core/ClientOptions.java index b1f15e2..af95a7f 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.6.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.6.0"); } }); this.headerSuppliers = headerSuppliers; From e3dc42bfef03574b152fa5afbee5982eddc5830e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 15:09:56 +0000 Subject: [PATCH 3/3] chore: sync OpenAPI spec + code-examples for fff9ecb3e3ee9847a86bfb09de6df7e477ecd13e [skip ci] --- code-examples.json | 4 ++-- src/main/resources/openapi/openapi.json | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code-examples.json b/code-examples.json index 2684d0c..01bfdf6 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.5.0", - "specCommit": "64f369254225bd6c2d4c58d87f59165d7e8e8dc9", + "sdkVersion": "17.6.0", + "specCommit": "fff9ecb3e3ee9847a86bfb09de6df7e477ecd13e", "generatorName": "fernapi/fern-java-sdk" }, "renderRules": { diff --git a/src/main/resources/openapi/openapi.json b/src/main/resources/openapi/openapi.json index 3882086..4affb4d 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": "64f369254225bd6c2d4c58d87f59165d7e8e8dc9" + "version": "fff9ecb3e3ee9847a86bfb09de6df7e477ecd13e" }, "x-services": [ { @@ -3021,7 +3021,7 @@ "post": { "operationId": "fhir2omop_create", "summary": "Map FHIR resources to OMOP CDM v5.4", - "description": "Maps a FHIR R4 resource or Bundle into OMOP Common Data Model v5.4 rows\n(person, visit_occurrence, condition_occurrence, drug_exposure,\nprocedure_occurrence, measurement, observation).\n\nEach resource's primary clinical coding is resolved to a standard OMOP\n`concept_id`. Alongside the OMOP rows grouped by table (`tables`), the\nresponse carries `mappings` (how each source coding resolved, linked back\nto the row it produced), `dropped` (resources that could not be shaped\ninto a row), `vocab_version` (the OMOP vocabulary release codes were\nresolved against), and a small `summary` of the resolution outcomes.\n\nA `concept_id` of `0` is reported, not omitted (OMOP \"no matching\nconcept\" semantics): it covers both a coding with no standard match\n(`UNMAPPED`) and an unverified suggestion for a text-only resource\n(`UNCHECKED`). Only the primary clinical coding is resolved, so\n`gender`/`race`/`ethnicity`/`visit`/`value`/`unit` `concept_id`s are\nalways `0`; the one populated non-resolved concept is measurement\n`operator_concept_id`, set from a value comparator (`<`, `<=`, `>`, `>=`)\nrather than the resolver. Each `*_source_value` carries the verbatim FHIR\ncoding (`system#code`), and `*_type_concept_id` is set to `32817` (EHR).\n\nMedication codes are resolved whether they appear inline\n(`medicationCodeableConcept`) or via a `medicationReference` to a contained,\nrelative (`Type/id`), or bundle-entry (`urn:uuid`) `Medication` resource.\nResources that cannot be shaped into a row \u2014 a medication with no usable\ncode, resolvable reference, or display, or any clinical resource whose\nsubject/patient reference cannot be tied to a person \u2014 are reported under\n`dropped` rather than emitted as blank rows. The\nbundle must contain at least one Patient resource.\n", + "description": "Maps a FHIR R4 resource or Bundle into OMOP Common Data Model v5.4 rows\n(person, visit_occurrence, condition_occurrence, drug_exposure,\nprocedure_occurrence, measurement, observation).\n\nResource support is intentionally limited to the OMOP tables returned by\nthis endpoint:\n- `Patient` -> `person`\n- `Encounter` -> `visit_occurrence`\n- `Condition` -> `condition_occurrence`\n- `Procedure` -> `procedure_occurrence`\n- `MedicationRequest`, `MedicationStatement`, and\n `MedicationAdministration` -> `drug_exposure`\n- `Immunization` -> `drug_exposure`\n- `Observation` with a numeric `valueQuantity`, `valueInteger`, or\n numeric-looking `valueString` (for example `\"<2\"`) -> `measurement`\n- non-numeric `Observation` -> `observation`\n- `AllergyIntolerance` -> `observation`\n\n`Medication` is supported only as reference data for medication\nresources; it is not emitted as its own row because OMOP CDM has no\nMedication table. Other reference/admin resources such as `Practitioner`,\n`Organization`, `Location`, `Coverage`, and `Claim`, and clinical\nworkflow/document resources such as `DiagnosticReport`, `ServiceRequest`,\n`CarePlan`, `DocumentReference`, `Composition`, `Specimen`, and\n`DeviceUseStatement`, are currently accepted in a Bundle but are not\nshaped into OMOP rows. Unsupported resource types are ignored rather than\nlisted under `dropped`; `dropped` is reserved for supported resource types\nthat were missing the subject/patient, code, or medication reference data\nneeded to produce a valid row.\n\nEach resource's primary clinical coding is resolved to a standard OMOP\n`concept_id`. Alongside the OMOP rows grouped by table (`tables`), the\nresponse carries `mappings` (how each source coding resolved, linked back\nto the row it produced), `dropped` (resources that could not be shaped\ninto a row), `vocab_version` (the OMOP vocabulary release codes were\nresolved against), and a small `summary` of the resolution outcomes.\n\nA `concept_id` of `0` is reported, not omitted (OMOP \"no matching\nconcept\" semantics): it covers both a coding with no standard match\n(`UNMAPPED`) and an unverified suggestion for a text-only resource\n(`UNCHECKED`). Only the primary clinical coding is resolved, so\n`gender`/`race`/`ethnicity`/`visit`/`value`/`unit` `concept_id`s are\nalways `0`; the one populated non-resolved concept is measurement\n`operator_concept_id`, set from a value comparator (`<`, `<=`, `>`, `>=`)\nrather than the resolver. Each `*_source_value` carries the verbatim FHIR\ncoding (`system#code`), and `*_type_concept_id` is set to `32817` (EHR).\n\nMedication codes are resolved whether they appear inline\n(`medicationCodeableConcept`) or via a `medicationReference` to a contained,\nrelative (`Type/id`), or bundle-entry (`urn:uuid`) `Medication` resource.\nResources that cannot be shaped into a row \u2014 a medication with no usable\ncode, resolvable reference, or display, or any clinical resource whose\nsubject/patient reference cannot be tied to a person \u2014 are reported under\n`dropped` rather than emitted as blank rows. The\nbundle must contain at least one Patient resource.\n", "requestBody": { "required": true, "content": { @@ -8544,7 +8544,7 @@ "fhir_resources": { "type": "object", "additionalProperties": true, - "description": "FHIR resources (single resource or Bundle). Must contain at least one\nPatient resource. Resources are mapped to OMOP rows; standalone\nMedication resources are consumed by medication references rather than\nmapped to their own table.\n" + "description": "FHIR resources (single resource or Bundle). Must contain at least one\nPatient resource. Supported row-producing resources are Patient,\nEncounter, Condition, Procedure, MedicationRequest,\nMedicationStatement, MedicationAdministration, Immunization,\nObservation, and AllergyIntolerance. Standalone Medication resources\nare consumed by medication references rather than mapped to their own\ntable. Other resource types are accepted but ignored.\n" } } }, @@ -8569,7 +8569,7 @@ }, "dropped": { "type": "array", - "description": "Resources that could not be shaped into an OMOP row (rather than emitted as blank rows).", + "description": "Supported resource instances that could not be shaped into an OMOP\nrow because required subject/patient, code, or medication reference\ndata was missing. Unsupported resource types are ignored and do not\nappear here.\n", "items": { "$ref": "#/components/schemas/fhir2omop_DroppedResource" }