From 98b93bbe36e0266db9ef3018b9e698ca27c5edeb Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Fri, 10 Jul 2026 20:47:19 +0000 Subject: [PATCH 1/8] [fern-generated] Update SDK Generated by Fern CLI Version: unknown Generators: - fernapi/fern-python-sdk: 5.18.0 --- .fern/metadata.json | 8 ++++---- pyproject.toml | 5 +---- src/phenoml/core/client_wrapper.py | 4 ++-- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/.fern/metadata.json b/.fern/metadata.json index 2f0289a..6a7959a 100644 --- a/.fern/metadata.json +++ b/.fern/metadata.json @@ -1,17 +1,17 @@ { - "cliVersion": "5.67.1", + "cliVersion": "5.68.0", "generatorName": "fernapi/fern-python-sdk", - "generatorVersion": "5.17.1", + "generatorVersion": "5.18.0", "generatorConfig": { "client_class_name": "PhenomlClient", "wire_tests": { "enabled": true } }, - "originGitCommit": "8633a870276a5ebdc514a6711e2c401cb45d26b4", + "originGitCommit": "4303ef3d3e7bb2159a5d8301937194e8bb681125", "originGitCommitIsDirty": true, "invokedBy": "ci", "requestedVersion": "AUTO", "ciProvider": "unknown", - "sdkVersion": "16.6.0" + "sdkVersion": "0.0.0.dev0" } \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 47001f5..cea8b20 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ dynamic = ["version"] [tool.poetry] name = "phenoml" -version = "16.6.0" +version = "0.0.0.dev0" description = "" readme = "README.md" authors = [] @@ -31,9 +31,6 @@ classifiers = [ packages = [ { include = "phenoml", from = "src"} ] -include = [ - { path = "src/phenoml/openapi/openapi.json", format = ["sdist", "wheel"] } -] [tool.poetry.urls] Repository = 'https://github.com/phenoml/phenoml-python-sdk' diff --git a/src/phenoml/core/client_wrapper.py b/src/phenoml/core/client_wrapper.py index 4130b87..c03a243 100644 --- a/src/phenoml/core/client_wrapper.py +++ b/src/phenoml/core/client_wrapper.py @@ -33,12 +33,12 @@ def get_headers(self) -> typing.Dict[str, str]: import platform headers: typing.Dict[str, str] = { - "User-Agent": "phenoml/16.6.0", + "User-Agent": "phenoml/0.0.0-fern-placeholder", "X-Fern-Language": "Python", "X-Fern-Runtime": f"python/{platform.python_version()}", "X-Fern-Platform": f"{platform.system().lower()}/{platform.release()}", "X-Fern-SDK-Name": "phenoml", - "X-Fern-SDK-Version": "16.6.0", + "X-Fern-SDK-Version": "0.0.0.dev0", **(self.get_custom_headers() or {}), } token = self._get_token() From 83ce1c00a150181b878ecdef0c0c449755ab53f9 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Fri, 10 Jul 2026 20:47:19 +0000 Subject: [PATCH 2/8] [fern-autoversion] feat: add phenocr endpoint and PhenoCRRequest schema to construe codes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds the POST /construe/phenocr endpoint to the construe codes client, enabling extraction of medical codes from free-text clinical notes using the phenocr engine. Also introduces the construe_PhenoCRRequest and construe_PhenocrExtractRequestSystem OpenAPI schemas, and updates code-examples.json with a usage example for the new endpoint. Key changes: - New POST /construe/phenocr route registered in openapi.json and code-examples.json - New `construe_PhenoCRRequest` schema with required `text` (string) and `system` (object) fields - New `construe_PhenocrExtractRequestSystem` schema with required `name` and `version` fields - Updated spec commit reference and sdkVersion metadata to 16.6.0 🌿 Generated with Fern --- .fern/metadata.json | 2 +- .fern/replay.lock | 2 +- changelog.md | 6 ++++++ pyproject.toml | 2 +- src/phenoml/core/client_wrapper.py | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.fern/metadata.json b/.fern/metadata.json index 6a7959a..403dc0e 100644 --- a/.fern/metadata.json +++ b/.fern/metadata.json @@ -13,5 +13,5 @@ "invokedBy": "ci", "requestedVersion": "AUTO", "ciProvider": "unknown", - "sdkVersion": "0.0.0.dev0" + "sdkVersion": "16.7.0" } \ No newline at end of file diff --git a/.fern/replay.lock b/.fern/replay.lock index b59abb7..ebd1b17 100644 --- a/.fern/replay.lock +++ b/.fern/replay.lock @@ -91,7 +91,7 @@ patches: [tool.poetry] name = "phenoml" - -version = "0.0.0.dev0" + -version = "16.7.0" +version = "16.4.0" description = "" readme = "README.md" diff --git a/changelog.md b/changelog.md index f51e51c..8652cf0 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,9 @@ +## [16.7.0] - 2026-07-10 +### Added +- **`client.construe.codes.phenocr(...)`** — new sync and async method that extracts medical codes from free-text clinical notes using the phenocr engine; supports HPO, ICD-10-CM, and SNOMED_CT_US code systems. +- **`construe_PhenoCRRequest`** — new request schema with required `text` (natural language input) and `system` fields, used by the phenocr endpoint. +- **`construe_PhenocrExtractRequestSystem`** — new schema with required `name` and `version` fields for specifying the target terminology system and version (e.g. `HPO` / `umls-2026AA`). + ## [16.6.0] - 2026-07-10 ### Added - **`client.construe.codes.phenocr(...)`** — new sync and async method (plus raw variants) that extracts medical codes from free-text clinical notes using the phenocr engine, supporting HPO, ICD-10-CM, and SNOMED_CT_US code systems. diff --git a/pyproject.toml b/pyproject.toml index cea8b20..4f65e17 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ dynamic = ["version"] [tool.poetry] name = "phenoml" -version = "0.0.0.dev0" +version = "16.7.0" description = "" readme = "README.md" authors = [] diff --git a/src/phenoml/core/client_wrapper.py b/src/phenoml/core/client_wrapper.py index c03a243..106f112 100644 --- a/src/phenoml/core/client_wrapper.py +++ b/src/phenoml/core/client_wrapper.py @@ -38,7 +38,7 @@ def get_headers(self) -> typing.Dict[str, str]: "X-Fern-Runtime": f"python/{platform.python_version()}", "X-Fern-Platform": f"{platform.system().lower()}/{platform.release()}", "X-Fern-SDK-Name": "phenoml", - "X-Fern-SDK-Version": "0.0.0.dev0", + "X-Fern-SDK-Version": "16.7.0", **(self.get_custom_headers() or {}), } token = self._get_token() From bfb4333c6dc02094f4dd4ba9f02714b1d1ae809d Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Fri, 10 Jul 2026 20:47:20 +0000 Subject: [PATCH 3/8] [fern-replay] Applied customizations Patches with unresolved conflicts (1): - patch-6516695e: Release 15.0.2: restore bundled openapi.json packaging (#169) Run `fern-replay resolve` to apply these customizations. --- .fern/replay.lock | 12 +++++++++--- pyproject.toml | 3 +++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.fern/replay.lock b/.fern/replay.lock index ebd1b17..18d856b 100644 --- a/.fern/replay.lock +++ b/.fern/replay.lock @@ -72,7 +72,13 @@ generations: cli_version: unknown generator_versions: fernapi/fern-python-sdk: 5.17.1 -current_generation: e12d842d8823acdce09c14621cb847d6975da744 + - commit_sha: 1808340594ec6893b2aa4a50f765cd7617699951 + tree_hash: 3062ad79441cdd78e4189ff98120a4516b68a549 + timestamp: 2026-07-10T20:47:06.473Z + cli_version: unknown + generator_versions: + fernapi/fern-python-sdk: 5.18.0 +current_generation: 1808340594ec6893b2aa4a50f765cd7617699951 patches: - id: patch-6516695e content_hash: sha256:d2b3264c983a6bb7ce6db1b48d80d28aa93b1f5c838f654cd489a6e8569bee20 @@ -91,7 +97,7 @@ patches: [tool.poetry] name = "phenoml" - -version = "16.7.0" + -version = "0.0.0.dev0" +version = "16.4.0" description = "" readme = "README.md" @@ -209,4 +215,4 @@ patches: [tool.poetry.extras] aiohttp=["aiohttp", "httpx-aiohttp"] - status: resolving + status: unresolved diff --git a/pyproject.toml b/pyproject.toml index 4f65e17..331ee77 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,9 @@ classifiers = [ packages = [ { include = "phenoml", from = "src"} ] +include = [ + { path = "src/phenoml/openapi/openapi.json", format = ["sdist", "wheel"] } +] [tool.poetry.urls] Repository = 'https://github.com/phenoml/phenoml-python-sdk' From 985042dc978aa300d1d933d439093d08fe0b5d11 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 10 Jul 2026 20:47:39 +0000 Subject: [PATCH 4/8] chore: sync OpenAPI spec + code-examples for 4303ef3d3e7bb2159a5d8301937194e8bb681125 [skip ci] --- code-examples.json | 4 ++-- src/phenoml/openapi/openapi.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code-examples.json b/code-examples.json index 47c0d52..87b2047 100644 --- a/code-examples.json +++ b/code-examples.json @@ -2,8 +2,8 @@ "metadata": { "language": "python", "packageName": "phenoml", - "sdkVersion": "16.6.0", - "specCommit": "8633a870276a5ebdc514a6711e2c401cb45d26b4", + "sdkVersion": "16.7.0", + "specCommit": "4303ef3d3e7bb2159a5d8301937194e8bb681125", "generatorName": "fernapi/fern-python-sdk" }, "renderRules": { diff --git a/src/phenoml/openapi/openapi.json b/src/phenoml/openapi/openapi.json index 3a49a1f..90b2415 100644 --- a/src/phenoml/openapi/openapi.json +++ b/src/phenoml/openapi/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.3", "info": { "title": "Phenoml API", - "version": "8633a870276a5ebdc514a6711e2c401cb45d26b4" + "version": "4303ef3d3e7bb2159a5d8301937194e8bb681125" }, "x-services": [ { From 1ddda985482d55f484564dbc7910d8dc076f3fd5 Mon Sep 17 00:00:00 2001 From: Gavin Sharp Date: Fri, 10 Jul 2026 17:07:26 -0400 Subject: [PATCH 5/8] [fern-replay] Resolved conflicts Patches replayed: - patch-6516695e: Release 15.0.2: restore bundled openapi.json packaging (#169) --- .fern/replay.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.fern/replay.lock b/.fern/replay.lock index 18d856b..48bdd53 100644 --- a/.fern/replay.lock +++ b/.fern/replay.lock @@ -81,16 +81,16 @@ generations: current_generation: 1808340594ec6893b2aa4a50f765cd7617699951 patches: - id: patch-6516695e - content_hash: sha256:d2b3264c983a6bb7ce6db1b48d80d28aa93b1f5c838f654cd489a6e8569bee20 + content_hash: sha256:1014204667a0a06b4042c49c274890d23c8ea921383e4616d880aac2b3ce34f6 original_commit: 6516695ecaba47ae4bcc8119acca86a1113adeeb original_message: "Release 15.0.2: restore bundled openapi.json packaging (#169)" original_author: Gavin Sharp - base_generation: e0932f75557c87fc1914f6c54c5917b59231d3a1 + base_generation: 1808340594ec6893b2aa4a50f765cd7617699951 files: - pyproject.toml patch_content: | diff --git a/pyproject.toml b/pyproject.toml - index cc86d42..6c649b6 100644 + index cea8b20..331ee77 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ dynamic = ["version"] @@ -98,7 +98,7 @@ patches: [tool.poetry] name = "phenoml" -version = "0.0.0.dev0" - +version = "16.4.0" + +version = "16.7.0" description = "" readme = "README.md" authors = [] @@ -120,7 +120,7 @@ patches: [tool.poetry] name = "phenoml" - version = "16.4.0" + version = "16.7.0" description = "" readme = "README.md" authors = [] @@ -156,7 +156,7 @@ patches: [tool.poetry.dependencies] python = "^3.10" - aiohttp = { version = ">=3.14.0,<4", optional = true, python = ">=3.10"} + aiohttp = { version = ">=3.14.1,<4", optional = true, python = ">=3.10"} httpx = ">=0.21.2" httpx-aiohttp = { version = "0.1.8", optional = true, python = ">=3.10"} pydantic = ">= 1.9.2" @@ -178,6 +178,7 @@ patches: [tool.pytest.ini_options] testpaths = [ "tests" ] asyncio_mode = "auto" + norecursedirs = [ "src" ] markers = [ "aiohttp: tests that require httpx_aiohttp to be installed", ] @@ -215,4 +216,3 @@ patches: [tool.poetry.extras] aiohttp=["aiohttp", "httpx-aiohttp"] - status: unresolved From 5e8caf5fb12a1c1d1360f1cb8097d210fde8de77 Mon Sep 17 00:00:00 2001 From: Gavin Sharp Date: Fri, 10 Jul 2026 17:07:58 -0400 Subject: [PATCH 6/8] =?UTF-8?q?release:=2016.7.0=20=E2=80=94=20generator?= =?UTF-8?q?=20metadata=20refresh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog.md | 9 +++++---- src/phenoml/core/client_wrapper.py | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/changelog.md b/changelog.md index 8652cf0..c394cc2 100644 --- a/changelog.md +++ b/changelog.md @@ -1,8 +1,9 @@ ## [16.7.0] - 2026-07-10 -### Added -- **`client.construe.codes.phenocr(...)`** — new sync and async method that extracts medical codes from free-text clinical notes using the phenocr engine; supports HPO, ICD-10-CM, and SNOMED_CT_US code systems. -- **`construe_PhenoCRRequest`** — new request schema with required `text` (natural language input) and `system` fields, used by the phenocr endpoint. -- **`construe_PhenocrExtractRequestSystem`** — new schema with required `name` and `version` fields for specifying the target terminology system and version (e.g. `HPO` / `umls-2026AA`). +### Fixed +- **`phenoml.core.client_wrapper`** — restores the released `phenoml/16.7.0` User-Agent value after Fern generated a placeholder string during replay/autoversion recovery. + +### Changed +- **Generator metadata** — regenerated with Fern CLI 5.68.0 and `fernapi/fern-python-sdk` 5.18.0; no API surface changes beyond the version/header metadata and bundled OpenAPI sync. ## [16.6.0] - 2026-07-10 ### Added diff --git a/src/phenoml/core/client_wrapper.py b/src/phenoml/core/client_wrapper.py index 106f112..7c48fa7 100644 --- a/src/phenoml/core/client_wrapper.py +++ b/src/phenoml/core/client_wrapper.py @@ -33,7 +33,7 @@ def get_headers(self) -> typing.Dict[str, str]: import platform headers: typing.Dict[str, str] = { - "User-Agent": "phenoml/0.0.0-fern-placeholder", + "User-Agent": "phenoml/16.7.0", "X-Fern-Language": "Python", "X-Fern-Runtime": f"python/{platform.python_version()}", "X-Fern-Platform": f"{platform.system().lower()}/{platform.release()}", From 5c6cb0b8938d8db9e3eee09a8d2d19810bdb2f66 Mon Sep 17 00:00:00 2001 From: Gavin Sharp Date: Fri, 10 Jul 2026 18:21:43 -0400 Subject: [PATCH 7/8] =?UTF-8?q?release:=2016.7.0=20=E2=80=94=20remove=20ge?= =?UTF-8?q?nerator=20metadata=20note?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/changelog.md b/changelog.md index c394cc2..2c0c2ce 100644 --- a/changelog.md +++ b/changelog.md @@ -2,9 +2,6 @@ ### Fixed - **`phenoml.core.client_wrapper`** — restores the released `phenoml/16.7.0` User-Agent value after Fern generated a placeholder string during replay/autoversion recovery. -### Changed -- **Generator metadata** — regenerated with Fern CLI 5.68.0 and `fernapi/fern-python-sdk` 5.18.0; no API surface changes beyond the version/header metadata and bundled OpenAPI sync. - ## [16.6.0] - 2026-07-10 ### Added - **`client.construe.codes.phenocr(...)`** — new sync and async method (plus raw variants) that extracts medical codes from free-text clinical notes using the phenocr engine, supporting HPO, ICD-10-CM, and SNOMED_CT_US code systems. From c35ad7b2dd5afc7d30d4d97a2ef4f2f2459bcb36 Mon Sep 17 00:00:00 2001 From: Gavin Sharp Date: Fri, 10 Jul 2026 18:26:56 -0400 Subject: [PATCH 8/8] =?UTF-8?q?release:=2016.7.0=20=E2=80=94=20mark=20main?= =?UTF-8?q?tenance=20release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index 2c0c2ce..c9be983 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,6 @@ ## [16.7.0] - 2026-07-10 -### Fixed -- **`phenoml.core.client_wrapper`** — restores the released `phenoml/16.7.0` User-Agent value after Fern generated a placeholder string during replay/autoversion recovery. +### Changed +- **Maintenance release** — no public API or behavioral changes. ## [16.6.0] - 2026-07-10 ### Added