Releases: CDCgov/RecordLinker
v25.10.0
What's Changed
- add initial algorithms with log-odds set to 0.0 by @m-goggins in #460
- make alembic pyproject.toml lookup dynamic by @ericbuckley in #466
- Add robustness error processing by @bamader in #467
- changing tuning match queries to return iterators by @ericbuckley in #465
- fix tuning job timeout by @ericbuckley in #470
- auto migrate by @ericbuckley in #472
- proc calc with iterators by @ericbuckley in #469
- tuning site docs by @ericbuckley in #473
Full Changelog: v25.9.0...v25.10.0
v25.9.0
What's Changed
- Add additional load test options by @ericbuckley in #436
- bugfix: record parsing issues with empty strings and null values by @ericbuckley in #441
- Update docker image by @m-goggins in #443
- python 3.13 upgrade by @ericbuckley in #452
- design explanations by @ericbuckley in #451
- database migrations by @ericbuckley in #457
- Fix locust testing file by @m-goggins in #458
- fix check unit tests to alternate databases by @ericbuckley in #461
Full Changelog: v25.8.0...v25.9.0
v25.8.0
Summary
v25.8.0 focused on expanding our algorithm testing suite and performance upgrades to the database queries.
- The expansion of the algorithm test suite, vastly improved upon our algorithm performance metrics, mostly through the addition of more meaningful tests along with larger person cluster sizes. See the README for more information on the different algorithm tests provided.
- When testing the
/api/linkendpoint using a large database (~1 million person clusters) significant performance issues we're measured. By reworking an existing index, we were able to improve performance by ~25x. Our new indices, now allow us to run/api/linkrequests on a database with 1 million person clusters, just as fast as an empty database.
Bugfixes
- bugfix: delete patient with keys by @ericbuckley in #418
- previously using the
DELETE /api/patient/{patient_reference_id}would raise a 500 if the patient record in question had blocking values associated with it. This has been fixed.
- previously using the
What's Changed
- minor installation doc changes by @ericbuckley in #361
- Expand and scramble test cases by @bamader in #364
- remove context from results in algorithm list by @ericbuckley in #369
- customizing site docs theme by @ericbuckley in #374
- reorganize site docs by @ericbuckley in #375
- Add initial locustfile for load testing by @m-goggins in #380
- enhanced smoke test and example usage by @ericbuckley in #378
- Upgrade testing framework by @bamader in #385
- Add scrambler for load testing by @m-goggins in #384
- add workflow to trigger deploy to demo environment by @alismx in #390
- Implement incremental json loading by @m-goggins in #389
- caching default algo fixture by @ericbuckley in #414
- updates to locustfile by @m-goggins in #394
- small updates to trigger demo workflow by @ericbuckley in #391
- adding indicies to improve blocking by @ericbuckley in #421
- use not exists for orphaned persons query by @ericbuckley in #419
- type check and automation cleanup by @ericbuckley in #420
New Contributors
Full Changelog: v25.7.0...v25.8.0
v25.7.0
Summary
v25.7.0 focuses on removing kwargs. Compared to the previous release, v25.6.0, this version's removal of "kwargs" has had no noticeable changes in performance or results. The major changes to highlight were:
- The kwargs field has been removed from the algorithm configuration. All necessary parameters are now explicitly defined (e.g., log_odds, fuzzy_match_measure, fuzzy_match_threshold). See the API documentation for full details.
- Linkage results now include a mapping of the evaluated features to the median log-odds points they contributed. This provides greater transparency into which features most influenced the scoring process.
What's Changed
- schema.AlgorithmContext by @ericbuckley in #330
- fixes for the performance scripts by @ericbuckley in #340
- Add stats calculations and results display by @bamader in #342
- Handle suffix during evaluation by @bamader in #346
- adding ghcr.io vulnerability scan job by @ericbuckley in #345
- Algorithm context advanced section by @ericbuckley in #334
- kwargs cleanup by @ericbuckley in #350
- Add feature medians by @bamader in #355
- add postman collection and README by @m-goggins in #358
- Fix bug in scripts/gen_seed_data.py by @m-goggins in #360
Full Changelog: v25.6.0...v25.7.0
v25.6.0
Summary
v25.6.0 focuses on adding skip values. Compared to the previous release, v25.5.0, this version's addition of skip values has:
- Made the algorithm more conservative and more able to filter out non-matching data, which can enhance match confidence
- Surfaced that name fields are particularly important to DIBBs algorithm—conducting some follow-up research to examine this effect
- One experiment shows early promise in adding a third pass that splits up first and last name, but it’s on synthetic data
- We don’t want to over-index or jump to conclusions too early, because it’s unlikely that Montana’s data looks precisely like this synthetic information
What's Changed
- named routes by @ericbuckley in #277
- Use schemas.Algorithm for linking by @ericbuckley in #321
- Add suffix normalization by @bamader in #322
- process skip values by @ericbuckley in #291
- Prepend during blocking by @bamader in #327
- configurable API root path by @ericbuckley in #320
- remove models.AlgorithmPass by @ericbuckley in #326
- Define default skip values, update test data by @bamader in #338
Full Changelog: v25.5.0...v25.6.0
v25.5.0
Summary
v25.5.0 focuses on replacing the belongingness ratio score with a relative match score. Compared to the previous release, v25.4.0, this version achieves the same quality and performance as the previous version. Before upgrading, you should reset your database schema.
What's Changed
- remove Patient.record circular dependency by @ericbuckley in #270
- Add AlgorithmPass label and description fields by @ericbuckley in #272
- RFC-003: skip values by @ericbuckley in #218
- dynamic next urls for patient/person routers by @ericbuckley in #276
- Feature/223 simplify function calls by @ericbuckley in #275
- Update regex to match default labels by @m-goggins in #284
- Implement RMS by @bamader in #229
- bugfix for null values by @ericbuckley in #282
- NAME feature by @ericbuckley in #279
- adding skip values to algorithm by @ericbuckley in #280
Full Changelog: v25.4.0...v25.5.0
v25.4.0
Summary
v25.4.0 is a performance-focused update aimed at enhancing linkage through field normalization and improved handling of records with missing values. Compared to the previous release, v25.3.0, this version achieves an 18% (15 tests) increase in correctly matched NBS algorithm test cases. In terms of speed, performance remains consistent with the prior build. A speed test linking 200 person clusters with 764 records averaged 67.11s, compared to 66.70s in the previous version.
What's Changed
- Add state normalization as part of PIIRecord construction by @m-goggins in #240
- Add ER diagram title and description by @ericbuckley in #241
- Normalize strings for comparison by @m-goggins in #247
- Handle missing values in blocked MPI records by @bamader in #242
- removing the unused SIMPLE_LINK parameter by @ericbuckley in #252
- upgrade tj-actions/changed-files by @ericbuckley in #256
- Parse and validate two-digit dates by @bamader in #245
- allowing multiple race values by @ericbuckley in #253
- Add caching of RecordLinker image to smoke tests by @m-goggins in #261
- Handle missing fields during evaluation by @bamader in #259
- Fix caching for services during smoke tests by @m-goggins in #262
- missing blocking keys by @ericbuckley in #254
- address line suffix normalize by @ericbuckley in #258
- normalize telecom model_validator by @m-goggins in #269
Full Changelog: v25.3.0...v25.4.0
v25.3.0
Breaking Changes
The deprecated endpoints POST /patient/<patient_reference_id>/person and PATCH /patient/<patient_reference_id>/person have been removed. Please use their replacements added in v25.2.0 going forward.
- removes deprecated API endpoints by @m-goggins in #220
The IDENTIFIER blocking key has updated its format to exclude authority data. This results in a new value of {value[-4:]}:{type} for all new IDENTIFIER blocking keys. We recommend resetting your database before upgrading to this release.
- Removed first 2 chars of authority from IDENTIFIER blocking key by @ericbuckley in #227
What's Changed
- Add endpoint for deleting orphaned persons by @m-goggins in #221
- Add Endpoint for getting orphaned patients by @m-goggins in #222
- minor updates to README by @ericbuckley in #228
- Add endpoint to return orphaned persons by @m-goggins in #225
Full Changelog: v25.2.0...v25.3.0
v25.2.0
Breaking Changes
The dibbs-basic algorithm and all non-probabilistic matching functions have been removed from the codebase. Before upgrading to this release, you should truncate your algorithm and algorithm_pass tables to allow for the new default algorithms to load.
Deprecations
The existing /patient/<id>/person API endpoints have been deprecated and are scheduled to be removed in v25.3.0. Please see the API documentation for replacement endpoint information.
- person cluster patient assignment endpoints by @ericbuckley in #172
What's Changed
- Slight tweaks to README for Windows set up & redoc typo by @m-goggins in #189
- Patient Details Endpoints by @cbrinson-rise8 in #174
- new local scheme of dirty-tag for developer installation by @ericbuckley in #191
- Build msodbc drivers into arm64 images by @m-goggins in #190
- correct 508 issues on site docs by @ericbuckley in #194
- Add BlockingKey descriptions to openapi.json by @ericbuckley in #188
- adding documentation about patient/person identifiers by @ericbuckley in #197
- Appropriately handle race unknown by @bamader in #196
- Reverse identifiers for comparisons by @m-goggins in #211
- Create function for probabilistic exact match by @bamader in #209
- compare the entire GIVEN_NAME by @ericbuckley in #210
- patient / person API endpoints for retrieving data by @ericbuckley in #206
- Add API endpoint for merging person clusters by @m-goggins in #203
- add custom api docs template to address a11y issues by @ericbuckley in #216
New Contributors
Full Changelog: v25.1.2...v25.2.0
v25.1.2
What's Changed
- removing Sex.UNKNOWN [Executive Order 14168] by @ericbuckley in #186
Full Changelog: v25.1.1...v25.1.2