Agent skill

deidentifying-clinical-text

Remove, mask, or replace PHI/PII in clinical free text on-device with OpenMed's deidentify(). Use when the user needs to de-identify medical notes, strip patient identifiers, redact PHI before sharing or analysis, anonymize discharge summaries, or pick a de-id method (mask vs remove vs replace vs hash vs shift_dates). Covers confidence_threshold for safety, consistent+seed for stable surrogates, keep_mapping for reversible de-id, policy= profiles, and the DeidentificationResult fields. Pairs with OpenMed extract_pii (detect spans), reidentify (restore), configuring-privacy-policies, and auditi

maziyarpanahigithub.com/maziyarpanahiGitHub ↗
claude-codeApache-2.0
Install
npx skills add maziyarpanahi/openmed --skill deidentifying-clinical-text --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 1
SKILL.md size: 7 KB
Bundled scripts: none
Version: 1.0
Path: skills/deidentifying-clinical-text/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 4,851
Language: Python
Read our review of the source →

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

# De-identifying clinical text `openmed.deidentify` detects PHI/PII and rewrites the text so it can be shared, stored, or analyzed without exposing patients. It runs **fully on-device** after a one-time model download — no network calls, no telemetry, no raw PHI leaving the process. This is the single most important OpenMed entry point for privacy work; everything else (policies, audit, multilingual, date-shifting) layers on top of it. ## When to use this skill Reach for `deidentify` when you need to transform text — replace, mask, remove, hash, or date-shift the identifiers. If you only need to **locate** PHI spans without changing the text, use `extract_pii` (see `extracting-pii-entities`). To **restore** masked text later, use `reidentify` (see `reidentifying-text`). ## Quick start ```python import openmed note = ( "Patient John Doe (MRN 1234567) was seen on 2024-03-02 by Dr. Alice Reed. " "Contact: john.doe@example.com, 617-555-0142." ) result = openmed.deidentify( note, method="mask", # mask | remove | replace | hash | shift_dates confidence_threshold=0.7, # safety default; raise to reduce false negatives' impact policy="hipaa_safe_harbor", # optional bundled profile (see belo

What's inside
Steps it walks through
  1. When to use this skill
  2. Quick start
  3. The five methods
  4. Workflow
  5. Consistent surrogates and reversibility
  6. Hand-off to / from OpenMed
  7. Edge cases & gotchas
  8. Standards & references
More from openmed
All skills →
About this skill
What does the deidentifying-clinical-text skill do?

Remove, mask, or replace PHI/PII in clinical free text on-device with OpenMed's deidentify(). Use when the user needs to de-identify medical notes, strip patient identifiers, redact PHI before sharing or analysis, anonymize discharge summaries, or pick a de-id method (mask vs remove vs replace vs hash vs shift_dates). Covers confidence_threshold for safety, consistent+seed for stable surrogates, keep_mapping for reversible de-id, policy= profiles, and the DeidentificationResult fields. Pairs with OpenMed extract_pii (detect spans), reidentify (restore), configuring-privacy-policies, and auditi

How do I install it?

Run `npx skills add maziyarpanahi/openmed --skill deidentifying-clinical-text --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From maziyarpanahi/openmed, a repository with 4,851 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going