Skip to content

Commit 12b6e71

Browse files
committed
additio of CI workflow
1 parent afe8a0a commit 12b6e71

5 files changed

Lines changed: 97 additions & 39 deletions

File tree

.github/workflows/release.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*"
7+
8+
jobs:
9+
build:
10+
name: Build distribution
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Checkout
14+
uses: actions/checkout@v4
15+
16+
- name: Install uv
17+
uses: astral-sh/setup-uv@v5
18+
19+
- name: Verify tag matches project version
20+
run: |
21+
TAG_VERSION="${GITHUB_REF_NAME#v}"
22+
PROJECT_VERSION="$(python3 -c "import tomllib; print(tomllib.load(open('pyproject.toml', 'rb'))['project']['version'])")"
23+
echo "Tag version: ${TAG_VERSION}"
24+
echo "Project version: ${PROJECT_VERSION}"
25+
if [ "$TAG_VERSION" != "$PROJECT_VERSION" ]; then
26+
echo "::error::Tag ${GITHUB_REF_NAME} does not match project version ${PROJECT_VERSION}. Bump the version in pyproject.toml first."
27+
exit 1
28+
fi
29+
30+
- name: Build sdist and wheel
31+
run: uv build
32+
33+
- name: Upload distribution artifacts
34+
uses: actions/upload-artifact@v4
35+
with:
36+
name: dist
37+
path: dist/
38+
39+
publish:
40+
name: Publish to PyPI
41+
needs: build
42+
runs-on: ubuntu-latest
43+
environment: pypi
44+
permissions:
45+
id-token: write # required for PyPI Trusted Publishing (OIDC)
46+
steps:
47+
- name: Download distribution artifacts
48+
uses: actions/download-artifact@v4
49+
with:
50+
name: dist
51+
path: dist/
52+
53+
- name: Publish to PyPI
54+
uses: pypa/gh-action-pypi-publish@release/v1

CHANGELOG.md

Lines changed: 24 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5,39 +5,7 @@ All notable changes to Myelin will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [Unreleased]
9-
10-
### Added
11-
12-
- **Provider data patching** - `IPSFDatabase.patch()` and `OPSFDatabase.patch()` methods for incremental updates to provider-specific data. Queries the maximum `last_updated` date, downloads only new records from that point forward, and upserts them (updating existing records with the same provider_ccn + effective_date, inserting new ones). Supports both YYYYMMDD and YYYY-MM-DD date formats.
13-
- **MS-DRG diagnosis output codes** - `MsdrgOutputDxCode` now includes the
14-
original diagnosis code value, making principal and secondary diagnosis
15-
outputs easier to trace back to claim input.
16-
- **IOCE description enrichment** - IOCE output now fills additional claim
17-
disposition, edit, line-item flag, modifier, payment indicator, revenue code,
18-
discount formula, and APC descriptions, with latest-description fallbacks when
19-
version-specific lookup text is unavailable.
20-
- **IRF wage-index outputs** - `IrfOutput` now exposes inherited final CBSA and
21-
final wage-index values from the CMS payment data.
22-
23-
### Changed
24-
25-
- **CMSDownloader** - rewritten for clearer component discovery, jar inventory
26-
validation, missing-jar detection, bounded concurrent pricer downloads, shared
27-
request timeout handling, and cleaner extraction of only the required CMS
28-
runtime jars.
29-
30-
### Fixed
31-
32-
- **IPPS procedure codes** - inpatient procedure codes are now passed to the
33-
IPPS Java claim object as Java strings and assigned with `setProcedureCodes`.
34-
- **IPSF HRR participant indicator** - preserves `0` values instead of treating
35-
them as missing, preventing invalid return codes and incorrect pricing.
36-
- **Supplemental wage index mapping** - LTCH, SNF, and IRF now opt in to sending
37-
IPSF supplemental wage-index fields to the CMS Java provider object while IPF
38-
and other shared IPSF call sites keep the previous default behavior.
39-
40-
## [1.0.0] - 2026-06-04
8+
## [1.0.0] - 2026-07-10
419

4210
First stable release of Myelin. Provides a unified Python interface to the
4311
official CMS (Centers for Medicare & Medicaid Services) Java-based reimbursement
@@ -93,6 +61,17 @@ tools via JPype1.
9361
- _enrich_disposition_and_edits now calls getEditDispositionDescription per disposition group when edits are present
9462
- Line items now also call: getLineItemActionFlagDescription, getLineItemDenialRejectionFlagDescription, getPaymentMethodFlagDescription, getPaymentIndicatorDescription, getRevenueCodeDescription, getDiscountFormulaDescription
9563
- Both input and output HCPCS modifier lists now call getHcpcsModifierDescription per modifier in addition to the existing edit descriptions
64+
- **Provider data patching** - `IPSFDatabase.patch()` and `OPSFDatabase.patch()` methods for incremental updates to provider-specific data. Queries the maximum `last_updated` date, downloads only new records from that point forward, and upserts them (updating existing records with the same provider_ccn + effective_date, inserting new ones). Supports both YYYYMMDD and YYYY-MM-DD date formats.
65+
- **MS-DRG diagnosis output codes** - `MsdrgOutputDxCode` now includes the
66+
original diagnosis code value, making principal and secondary diagnosis
67+
outputs easier to trace back to claim input.
68+
- **IOCE description enrichment** - IOCE output now fills additional claim
69+
disposition, edit, line-item flag, modifier, payment indicator, revenue code,
70+
discount formula, and APC descriptions, with latest-description fallbacks when
71+
version-specific lookup text is unavailable.
72+
- **IRF wage-index outputs** - `IrfOutput` now exposes inherited final CBSA and
73+
final wage-index values from the CMS payment data.
74+
9675

9776
### Changed
9877

@@ -113,6 +92,11 @@ tools via JPype1.
11392
optionally include the input claim on its own sheet.
11493
- ASC Pricer no longer requires an OPSF provider (ASCs do not appear in OPSF).
11594
- MCE input construction validates the discharge status.
95+
- **CMSDownloader** - rewritten for clearer component discovery, jar inventory
96+
validation, missing-jar detection, bounded concurrent pricer downloads, shared
97+
request timeout handling, and cleaner extraction of only the required CMS
98+
runtime jars.
99+
116100

117101
### Fixed
118102

@@ -125,6 +109,10 @@ tools via JPype1.
125109
- Minor formatting issue on the Excel exporter summary tab.
126110
- `IoceReturnCode` renamed from `ReturnCode` to avoid duplicate naming with the
127111
shared utility.
128-
129-
[Unreleased]: https://github.com/LibrePPS/myelin/compare/v1.0.0...HEAD
130-
[1.0.0]: https://github.com/LibrePPS/myelin/releases/tag/v1.0.0
112+
- **IPPS procedure codes** - inpatient procedure codes are now passed to the
113+
IPPS Java claim object as Java strings and assigned with `setProcedureCodes`.
114+
- **IPSF HRR participant indicator** - preserves `0` values instead of treating
115+
them as missing, preventing invalid return codes and incorrect pricing.
116+
- **Supplemental wage index mapping** - LTCH, SNF, and IRF now opt in to sending
117+
IPSF supplemental wage-index fields to the CMS Java provider object while IPF
118+
and other shared IPSF call sites keep the previous default behavior.

README.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,22 @@ By wrapping the official CMS software, Myelin ensures that you are using the sam
4949

5050
## Installation
5151

52+
Install from PyPI:
53+
54+
```bash
55+
pip install myelin-pps
56+
```
57+
58+
Optional extras are available for UB-04 PDF read/write support and the Excel exporters:
59+
60+
```bash
61+
pip install myelin-pps[pdf]
62+
pip install myelin-pps[excel]
63+
pip install myelin-pps[all]
64+
```
65+
66+
Or install from source:
67+
5268
1. **Clone this repository:**
5369
```bash
5470
git clone https://github.com/LibrePPS/myelin.git
@@ -389,7 +405,7 @@ with Myelin() as myelin:
389405
excel_bytes = results.to_excel_bytes(claim=claim)
390406
```
391407

392-
Excel export support requires the optional `excel` extra (`pip install myelin[excel]`).
408+
Excel export support requires the optional `excel` extra (`pip install myelin-pps[excel]`).
393409

394410
## Project Structure
395411

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[project]
2-
name = "myelin"
2+
name = "myelin-pps"
33
version = "1.0.0"
44
description = "A comprehensive Python toolkit for interacting with key components of the US healthcare reimbursement system."
55
readme = "README.md"

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)