| # Changelog |
|
|
| Big changes since the fork of [`NoteGuard/Automatic-PII-preprocessing-tool`](https://github.com/NoteGuard/Automatic-PII-preprocessing-tool), |
| grouped by pull request / milestone (newest first). Encode Vibe Coding Hackathon — FLock Sovereign AI Challenge (hosted by Encode Hub). |
|
|
| ## Live-demo polish — 2026-06-21 |
| Direct UI / docs changes on `main` for the public demo. |
| - **Download de-identified output** from the Try-it tab: a single sanitised note *or* the full |
| sanitised dataset, as JSON or CSV — only the de-identified text is exported (raw PHI never leaves). |
| - Removed FLock.io as a technical reference throughout (UI + docs); kept only the hackathon credit. |
| - Added a hackathon footer to every tab. |
| - Simplified the UI copy: dropped model / algorithm names and file / command references; renamed the |
| "Metrics & Leakage" tab; 1-based note index; 50 sample notes in the browser. |
| - Fixed the Streamlit `outputs/` path after the app moved to the repo root (the Metrics and Two-Trust |
| "Run" buttons read / wrote the wrong location). |
|
|
| ## [0.0.1] — 2026-06-20 — first release (Gold-RAP restructure & Hugging Face deploy) |
| Branches `dev/refactor-cleancode` + `feat/hf-spaces-demo`, merged to `main`. |
| - Reorganised to a Gold-RAP "analysis as a product" layout: `src/` package, `tests/`, `docs/`, |
| `data/` (inputs), `outputs/` (generated artifacts). |
| - Renamed package `noteguard/` → `src/`; British spelling throughout (`recognisers`). |
| - Packaged via `pyproject.toml` as the single dependency source (removed `requirements.txt`). |
| - CI (`.github/workflows/ci.yml`) runs `ruff` + `pytest` on every push/PR; added logging. |
| - Streamlit demo moved to repo root (`streamlit_app.py`); `run_eval.py` moved under `tests/`. |
| - Hugging Face Spaces (Docker SDK) deploy: `Dockerfile`, README front-matter, `docs/DEPLOY_HF_SPACES.md`. |
| - Decluttered Claude tooling (eval skill, post-edit hook, local settings) and the root changelog. |
|
|
| ## Post-PR #3 hardening — 2026-06-20 |
| Direct fixes on `main` after the team-briefing work. |
| - Only **date-of-birth** is masked; visit / admission dates are kept (clinically useful). Human-readable |
| redaction labels (e.g. `[NHS number]`). |
| - Fixed pseudonym mis-mapping caused by spaCy ORGANIZATION over-tagging. |
| - Removed the roster / gazetteer feature (kept the metric honest — no circularity). |
| - Consolidated the frontend on Streamlit; removed the Gradio demo. |
|
|
| ## PR #3 — Action items 1–4 from the team briefing — 2026-06-20 |
| - Default spaCy model `en_core_web_lg` (best UK-name recall; clinical transformer tested and rejected). |
| - **Human-in-the-loop review queue**: low-confidence spans are still redacted *and* flagged for IG |
| analyst confirmation before SDE-pool admission. |
| - ORGANIZATION excluded from Presidio's kept entities (it over-tagged labels like "NHS"/"GMC"); NHS |
| site names caught by a LOCATION rule instead. |
| - Overlap-safe, priority-ranked span merge (precise rule entities beat broad NER spans). |
|
|
| ## PR #2 — UK entity backport — 2026-06-20 |
| - Added `UK_NINO`, `UK_PASSPORT`, `UK_VEHICLE_REGISTRATION` recognisers and comma-separated |
| NHS-number detection, with format-correct fake surrogates for each. |
|
|
| ## PR #1 — NoteGuard de-identification gate — 2026-06-20 |
| Consolidated two parallel implementations into one package. |
| - One pluggable `Detector` interface: `RuleDetector` / `PresidioDetector`, degrading gracefully to |
| pure-Python rules when spaCy/Presidio are unavailable. |
| - Patient-consistent pseudonymisation via a Faker(en_GB) vault + per-patient date-shift; redaction mode. |
| - Evaluation harness: per-entity precision / recall / F1 **and** a measured residual-leakage rate, |
| using the dataset's structured patient/admission tables as free ground truth. |
| - Two-Trust "sanitise-at-source" demo; Streamlit demo UI. |
| |
| ## Initial NoteGuard implementation |
| - Pure-Python `noteguard` package: rule recognisers (NHS Modulus-11 + context anchor, postcode, date, |
| phone, email), detection layer, redaction/pseudonymisation transforms, evaluation, pipeline. |
| - Loads the NHSE synthetic clinical notes (3 CSVs joined on `person_id`/`admission_id`). |
| |
| ## Initial commit |
| - Fork of `NoteGuard/Automatic-PII-preprocessing-tool`. |
| |