Authoritative Data Harvester
yushui2022/MathModel-Skill
Finds authoritative public data sources for modeling tasks, prefers official APIs and bulk downloads, and outputs a reproducible fetch and cleaning plan with citations.
Maps OpenMed-extracted, terminology-coded conditions, drugs and measurements into OMOP CDM v5.4 tables for OHDSI and ATLAS analytics.
$ npx skills add maziyarpanahi/openmed --skill etl-to-omop-cdm -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install maziyarpanahi/openmed etl-to-omop-cdm --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/maziyarpanahi/openmed.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/etl-to-omop-cdm .claude/skills/etl-to-omop-cdm && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "etl-to-omop-cdm" agent skill from https://github.com/maziyarpanahi/openmed/tree/master/skills/etl-to-omop-cdm into .claude/skills/etl-to-omop-cdm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "etl-to-omop-cdm", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/maziyarpanahi/openmed/tree/master/skills/etl-to-omop-cdmType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add maziyarpanahi/openmed --skill etl-to-omop-cdm -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install maziyarpanahi/openmed etl-to-omop-cdm --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/maziyarpanahi/openmed.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/etl-to-omop-cdm .agents/skills/etl-to-omop-cdm && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "etl-to-omop-cdm" agent skill from https://github.com/maziyarpanahi/openmed/tree/master/skills/etl-to-omop-cdm into .agents/skills/etl-to-omop-cdm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "etl-to-omop-cdm", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add maziyarpanahi/openmed --skill etl-to-omop-cdm -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install maziyarpanahi/openmed etl-to-omop-cdm --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/maziyarpanahi/openmed.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/etl-to-omop-cdm .cursor/skills/etl-to-omop-cdm && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "etl-to-omop-cdm" agent skill from https://github.com/maziyarpanahi/openmed/tree/master/skills/etl-to-omop-cdm into .cursor/skills/etl-to-omop-cdm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "etl-to-omop-cdm", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/maziyarpanahi/openmed.git --path skills/etl-to-omop-cdm--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add maziyarpanahi/openmed --skill etl-to-omop-cdm -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install maziyarpanahi/openmed etl-to-omop-cdm --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/maziyarpanahi/openmed.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/etl-to-omop-cdm .gemini/skills/etl-to-omop-cdm && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "etl-to-omop-cdm" agent skill from https://github.com/maziyarpanahi/openmed/tree/master/skills/etl-to-omop-cdm into .gemini/skills/etl-to-omop-cdm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "etl-to-omop-cdm", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install maziyarpanahi/openmed etl-to-omop-cdmInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add maziyarpanahi/openmed --skill etl-to-omop-cdm -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/maziyarpanahi/openmed.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/etl-to-omop-cdm .github/skills/etl-to-omop-cdm && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "etl-to-omop-cdm" agent skill from https://github.com/maziyarpanahi/openmed/tree/master/skills/etl-to-omop-cdm into .github/skills/etl-to-omop-cdm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "etl-to-omop-cdm", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add maziyarpanahi/openmed --skill etl-to-omop-cdm -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install maziyarpanahi/openmed etl-to-omop-cdm --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/maziyarpanahi/openmed.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/etl-to-omop-cdm .opencode/skills/etl-to-omop-cdm && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "etl-to-omop-cdm" agent skill from https://github.com/maziyarpanahi/openmed/tree/master/skills/etl-to-omop-cdm into .opencode/skills/etl-to-omop-cdm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "etl-to-omop-cdm", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
etl-to-omop-cdmMaps OpenMed-extracted, terminology-coded conditions, drugs and measurements into OMOP CDM v5.4 tables for OHDSI and ATLAS analytics.
The skill is a deterministic downstream step. After OpenMed's `analyze_text` has extracted entities and you have linked them to source vocabularies (ICD-10-CM or SNOMED for conditions, RxNorm for drugs, LOINC for labs), it turns them into rows for `condition_occurrence`, `drug_exposure` and `measurement`. It is not a clinical NER or code-linking skill and assumes both steps are done.
Every event row carries a source concept id for the original code and a standard concept id found by following the 'Maps to' relationship in `CONCEPT_RELATIONSHIP`, standardizing conditions to SNOMED, drugs to RxNorm and measurements to LOINC, with 0 when no mapping exists. Rows also need type concepts that mark them as NLP-derived, and a reference file lists the CDM fields per table. You supply the OHDSI vocabulary bundle from Athena and do the lookups under your own license, since OpenMed ships no UMLS, SNOMED, RxNorm or LOINC content.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 34d7b8c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are python).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
ohdsi.github.ioathena.ohdsi.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
OpenMed ETL to OMOP CDM loads about 1.9k tokens when it runs, and up to ~3.1k if it reads all its reference files. Until then it costs about 187 tokens; SKILL.md has 709 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from maziyarpanahi/openmed at commit 34d7b8c, republished under its Apache-2.0 licence (© maziyarpanahi). 709 words, ~1,895 tokens.
.claude/skills/etl-to-omop-cdm/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.The OMOP Common Data Model (CDM) is the OHDSI standard for observational health
data. This skill maps OpenMed-derived clinical facts — entities from
analyze_text that you have already linked to a source terminology — into the
OMOP clinical event tables condition_occurrence, drug_exposure, and
measurement. The NLP runs on-device; OMOP loading is a downstream,
deterministic transform.
After you have (a) extracted entities with OpenMed and (b) coded them to a source vocabulary (ICD-10-CM / SNOMED for conditions, RxNorm for drugs, LOINC for labs — see the linking skills). Use this skill to turn those coded facts into OMOP rows. It is not a clinical NER skill and not a code-linking skill; it assumes both are done.
import openmed
note = "Assessment: type 2 diabetes mellitus. Started metformin 500 mg PO BID. HbA1c 8.2%."
result = openmed.analyze_text(note, output_format="dict")
# result["entities"] -> [{text,label,confidence,start,end}, ...]
# You then code each entity to a SOURCE concept using the OHDSI vocabulary you
# downloaded (see linking-umls-concepts / normalizing-rxnorm / mapping-loinc),
# and map SOURCE -> STANDARD via CONCEPT_RELATIONSHIP ('Maps to').
fact = {
"person_id": 1001,
"domain": "Condition",
"source_code": "E11.9", # ICD-10-CM, from your coding step
"source_vocabulary": "ICD10CM",
"source_concept_id": 45533010, # OHDSI CONCEPT for E11.9 (lookup)
"standard_concept_id": 201826, # 'Maps to' -> SNOMED 'Type 2 diabetes mellitus'
"start_date": "2024-03-12", # from building-patient-timelines
"char_span": (fact_start, fact_end),
}OpenMed never ships UMLS/SNOMED/RxNorm/LOINC content. You supply the OHDSI vocabulary bundle (Athena download) and do the lookups under your own license. OpenMed provides the spans and labels.
Every clinical event row carries two concept ids:
*_source_concept_id — the OHDSI CONCEPT for your original code (e.g. the
ICD-10-CM or RxNorm code your linking step produced).*_concept_id — the standard concept, obtained by following
CONCEPT_RELATIONSHIP.relationship_id = 'Maps to' from the source concept.
Conditions standardize to SNOMED, drugs to RxNorm, measurements to
LOINC. If no mapping exists, set the standard id to 0.See references/omop_cdm_v5_4_fields.md for the full per-table field list. Core
mapping by OpenMed entity domain:
| OpenMed entity domain | OMOP table | Standard vocab | Key date / value fields |
|---|---|---|---|
| Disease / Condition | condition_occurrence | SNOMED | condition_start_date, optional condition_end_date |
| Drug / Medication | drug_exposure | RxNorm | drug_exposure_start_date, drug_exposure_end_date, quantity, sig |
| Lab / Measurement | measurement | LOINC | measurement_date, value_as_number, unit_concept_id, value_as_concept_id |
Every event row needs a *_type_concept_id recording provenance. For facts
derived from clinical text, OHDSI uses the type concept 32831 "EHR episode
record" / "Note" family — specifically prefer a "...from note" /
"NLP"-flavored standard type concept from the Type Concept vocabulary in
your bundle. Do not invent ids; resolve the type concept against the vocabulary
you loaded so cohort builders can filter NLP-derived rows.
analyze_text → entities; link each to a source code
(linking skills). Resolve source_concept_id and the 'Maps to' standard
concept from your Athena vocabulary.building-patient-timelines. OMOP date fields are DATE; keep the matching
*_datetime only if you truly have a time.person_id. Join to your person table by an internal key — not
by any PHI string. De-identify upstream.*_occurrence_id /
*_exposure_id / measurement_id.*_source_value (the raw surface string, after de-id) for QA
traceability — but never put raw PHI there.analyze_text entities (offsets + labels), deidentify
upstream, and the per-domain linking skills (linking-umls-concepts,
normalizing-rxnorm, mapping-loinc, mapping-to-snomed,
coding-icd10).condition_occurrence / drug_exposure / measurement
rows are consumed by ATLAS, Achilles, and cohort definitions — and by
computing-ecqms for measure denominators/numerators.'Maps to' yields nothing, set
*_concept_id = 0 and keep the source ids. Never fabricate a standard id.domain_id is Observation or Measurement — load it into the table the
standard concept dictates.from note type
concept and carry confidence (e.g. in a companion table) so analysts can
threshold. Don't silently mix them with structured EHR rows.*_start_date; route them to your "needs review" staging, not into the CDM
with a placeholder date.measurement units and values. Parse value_as_number + unit (mapped
to a unit_concept_id); for qualitative results use value_as_concept_id.openmed/processing/ (analyze_text output shape).© maziyarpanahi, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in skills/etl-to-omop-cdm of maziyarpanahi/openmed.
Open the folder on GitHubat commit 34d7b8c
OpenMed ETL to OMOP CDM next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| OpenMed ETL to OMOP CDM this skillmaziyarpanahi/openmed | 5.5k | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Authoritative Data Harvesteryushui2022/MathModel-Skill | 454 | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| openFDA Regulatory Data Queriesdavila7/claude-code-templates | 33k | 11 repos | ~3.6k | Automated safety check: Pass | MIT | |
| Experiment AgentImbad0202/experiment-agent | 199 | — | ~3.1k | Automated safety check: Pass | CC-BY-NC-4.0 | |
| RoundingRConsortium/pharma-skills | 120 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Multimodal Media Feature ExtractionTyrealQ/q-skills | 108 | — | ~2k | Automated safety check: Notes | MIT |
yushui2022/MathModel-Skill
Finds authoritative public data sources for modeling tasks, prefers official APIs and bulk downloads, and outputs a reproducible fetch and cleaning plan with citations.
davila7/claude-code-templates
Queries the openFDA API from Python for drug, device, food and veterinary data: adverse events, recalls, labels, approvals, NDC and UNII lookups.
Imbad0202/experiment-agent
Experiment executor and monitor for academic research. An agent skill from Imbad0202/experiment-agent.
RConsortium/pharma-skills
Audit R code that prepares CSR/TLF statistics for SAS-compatible rounding compliance (ties away from zero, round-once-at-display, fixed trailing-zero precision).
TyrealQ/q-skills
Extracts pixel, video-frame, speech, music and visual-semantic features from image, video and audio files for research datasets, using local tools or the Gemini API.
davila7/claude-code-templates
Builds machine learning pipelines on clinical data with PyHealth: EHR datasets, prediction tasks, medical code mapping, healthcare models and evaluation.
maziyarpanahi/openmed
Checks OpenMed de-identified clinical text against the 18 HIPAA Safe Harbor identifier categories and reports gaps and residual re-identification risk.
maziyarpanahi/openmed
Fills in a model card for an OpenMed clinical NER or de-identification model from its evaluation reports: intended use, metrics, subgroups and limitations.
maziyarpanahi/openmed
Walks a data pipeline against the HIPAA Privacy and Security Rule checklist and produces a gap report before it processes patient data.
maziyarpanahi/openmed
Suggests candidate ICD-10-CM diagnosis and ICD-10-PCS procedure codes for clinical text extracted by OpenMed, with rationale for a certified coder to review.
maziyarpanahi/openmed
Finds social risks such as housing instability or food insecurity in clinical notes and proposes matching ICD-10-CM Z-codes for a coder to confirm.
maziyarpanahi/openmed
Converts scanned faxes, images, CSV/TSV exports and C-CDA XML into clean text on-device, ready for OpenMed de-identification and named-entity recognition.
Categories
Maps OpenMed-extracted, terminology-coded conditions, drugs and measurements into OMOP CDM v5.4 tables for OHDSI and ATLAS analytics. The skill is a deterministic downstream step. After OpenMed's `analyze_text` has extracted entities and you have linked them to source vocabularies (ICD-10-CM or SNOMED for conditions, RxNorm for drugs, LOINC for labs), it turns them into rows for `condition_occurrence`, `drug_exposure` and `measurement`.
OpenMed ETL to OMOP CDM fits situations like: loading NLP-derived clinical facts into an OMOP database; building an OHDSI ETL from clinical notes; standardizing note-derived findings to OMOP standard concepts.
Run `npx skills add maziyarpanahi/openmed --skill etl-to-omop-cdm -a claude-code`. Or copy the skill folder (skills/etl-to-omop-cdm in maziyarpanahi/openmed) into .claude/skills/etl-to-omop-cdm in your project. Claude Code loads it when a task matches its description.
Run `npx skills add maziyarpanahi/openmed --skill etl-to-omop-cdm -a codex`. Or copy the skill folder (skills/etl-to-omop-cdm in maziyarpanahi/openmed) into .agents/skills/etl-to-omop-cdm in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add maziyarpanahi/openmed --skill etl-to-omop-cdm -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/etl-to-omop-cdm, .gemini/skills/etl-to-omop-cdm, .github/skills/etl-to-omop-cdm and .opencode/skills/etl-to-omop-cdm in your project.
SKILL.md names no scripts, command-line tools or credentials: OpenMed ETL to OMOP CDM is instructions for the agent only. Our summary lists: OpenMed `analyze_text` output already linked to SNOMED, RxNorm or LOINC; An OHDSI vocabulary bundle (Athena) with CONCEPT and CONCEPT_RELATIONSHIP.
SKILL.md names 2 domains. As links in the text: ohdsi.github.io and athena.ohdsi.org. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
OpenMed ETL to OMOP CDM is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with OpenMed ETL to OMOP CDM: Authoritative Data Harvester (yushui2022/MathModel-Skill, 454 stars), openFDA Regulatory Data Queries (davila7/claude-code-templates, 33k stars), Experiment Agent (Imbad0202/experiment-agent, 199 stars) and Rounding (RConsortium/pharma-skills, 120 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
maziyarpanahi (a GitHub user) maintains it in maziyarpanahi/openmed, which has 5,506 GitHub stars. The repository holds 74 skills in this directory. The repository was last updated on October 11, 2026.
Source: maziyarpanahi/openmed on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.