medsci-skills 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +50 -0
- package/README.md +602 -0
- package/README_FIRST.md +27 -0
- package/bin/medsci-skills.js +159 -0
- package/installers/install-macos.command +19 -0
- package/installers/install-windows.cmd +26 -0
- package/installers/install-windows.ps1 +17 -0
- package/installers/install.py +218 -0
- package/metadata/skills_catalog.json +452 -0
- package/package.json +48 -0
- package/skills/academic-aio/SKILL.md +408 -0
- package/skills/academic-aio/references/case_studies/kjr_mllm_2025.md +82 -0
- package/skills/academic-aio/references/checklists/AIO_GENERAL.md +354 -0
- package/skills/academic-aio/references/journal_summarybox_templates.yaml +126 -0
- package/skills/academic-aio/references/oac_funding_checklist.yaml +129 -0
- package/skills/academic-aio/references/reporting_guideline_mapping.md +39 -0
- package/skills/academic-aio/references/schema_markup_templates/CodeRepository.jsonld +32 -0
- package/skills/academic-aio/references/schema_markup_templates/Dataset.jsonld +36 -0
- package/skills/academic-aio/references/schema_markup_templates/Person.jsonld +30 -0
- package/skills/academic-aio/references/schema_markup_templates/README.md +43 -0
- package/skills/academic-aio/references/schema_markup_templates/ScholarlyArticle.jsonld +55 -0
- package/skills/academic-aio/scripts/batch_metadata_audit.py +169 -0
- package/skills/academic-aio/scripts/validate_schema.py +118 -0
- package/skills/academic-aio/skill.yml +36 -0
- package/skills/academic-aio/templates/aio_audit_checklist.md.j2 +108 -0
- package/skills/add-journal/SKILL.md +482 -0
- package/skills/add-journal/skill.yml +33 -0
- package/skills/analyze-stats/SKILL.md +598 -0
- package/skills/analyze-stats/references/analysis_guides/missing_data.md +109 -0
- package/skills/analyze-stats/references/analysis_guides/nhis_icd10_mapping.md +247 -0
- package/skills/analyze-stats/references/analysis_guides/propensity_score.md +132 -0
- package/skills/analyze-stats/references/analysis_guides/regression.md +115 -0
- package/skills/analyze-stats/references/analysis_guides/repeated_measures.md +160 -0
- package/skills/analyze-stats/references/analysis_guides/survey_weighted.md +366 -0
- package/skills/analyze-stats/references/analysis_guides/test_selection.md +86 -0
- package/skills/analyze-stats/references/style/figure_style.mplstyle +69 -0
- package/skills/analyze-stats/references/style/theme_publication.R +147 -0
- package/skills/analyze-stats/references/table-standards/journal-profiles/ajr.yaml +51 -0
- package/skills/analyze-stats/references/table-standards/journal-profiles/european_radiology.yaml +55 -0
- package/skills/analyze-stats/references/table-standards/journal-profiles/jama.yaml +66 -0
- package/skills/analyze-stats/references/table-standards/journal-profiles/lancet.yaml +57 -0
- package/skills/analyze-stats/references/table-standards/journal-profiles/nejm.yaml +51 -0
- package/skills/analyze-stats/references/table-standards/journal-profiles/radiology.yaml +66 -0
- package/skills/analyze-stats/references/table-standards/table-standards.md +287 -0
- package/skills/analyze-stats/references/table-standards/table-types/diagnostic_accuracy.md +36 -0
- package/skills/analyze-stats/references/table-standards/table-types/meta_analysis.md +58 -0
- package/skills/analyze-stats/references/table-standards/table-types/model_comparison.md +36 -0
- package/skills/analyze-stats/references/table-standards/table-types/regression_results.md +50 -0
- package/skills/analyze-stats/references/table-standards/table-types/table1_demographics.md +51 -0
- package/skills/analyze-stats/references/table-standards/tool-comparison.md +79 -0
- package/skills/analyze-stats/references/templates/agreement_analysis.py +436 -0
- package/skills/analyze-stats/references/templates/dca_plot.R +237 -0
- package/skills/analyze-stats/references/templates/diagnostic_accuracy.py +401 -0
- package/skills/analyze-stats/references/templates/dta_meta_analysis.R +384 -0
- package/skills/analyze-stats/references/templates/forest_plot.py +412 -0
- package/skills/analyze-stats/references/templates/likert_summary.py +356 -0
- package/skills/analyze-stats/references/templates/meta_analysis.R +365 -0
- package/skills/analyze-stats/references/templates/propensity_score.py +478 -0
- package/skills/analyze-stats/references/templates/regression.py +425 -0
- package/skills/analyze-stats/references/templates/repeated_measures.py +434 -0
- package/skills/analyze-stats/references/templates/sample_size.R +382 -0
- package/skills/analyze-stats/references/templates/survey_weighted_analysis.py +411 -0
- package/skills/analyze-stats/references/templates/survival_analysis.py +325 -0
- package/skills/analyze-stats/references/templates/table1_demographics.py +287 -0
- package/skills/analyze-stats/scripts/check_generated_code.py +335 -0
- package/skills/analyze-stats/skill.yml +38 -0
- package/skills/analyze-stats/tests/fixtures/gen_bad.R +16 -0
- package/skills/analyze-stats/tests/fixtures/gen_bad.py +24 -0
- package/skills/analyze-stats/tests/fixtures/gen_clean.py +21 -0
- package/skills/analyze-stats/tests/test_generated_code.sh +59 -0
- package/skills/analyze-stats/tests/test_survival_template.sh +53 -0
- package/skills/author-strategy/SKILL.md +117 -0
- package/skills/author-strategy/analyze_patterns.py +303 -0
- package/skills/author-strategy/fetch_pubmed.py +374 -0
- package/skills/author-strategy/skill.yml +34 -0
- package/skills/batch-cohort/SKILL.md +223 -0
- package/skills/batch-cohort/references/base_template_knhanes.R +210 -0
- package/skills/batch-cohort/references/batch_template_generator.R +222 -0
- package/skills/batch-cohort/references/variable_coding_registry.md +136 -0
- package/skills/batch-cohort/skill.yml +35 -0
- package/skills/calc-sample-size/SKILL.md +491 -0
- package/skills/calc-sample-size/references/formulas.md +655 -0
- package/skills/calc-sample-size/references/observational_cohort.md +49 -0
- package/skills/calc-sample-size/skill.yml +51 -0
- package/skills/check-reporting/SKILL.md +534 -0
- package/skills/check-reporting/references/LICENSES.md +41 -0
- package/skills/check-reporting/references/checklists/AMSTAR2.md +54 -0
- package/skills/check-reporting/references/checklists/ARRIVE_2.md +234 -0
- package/skills/check-reporting/references/checklists/CARE.md +102 -0
- package/skills/check-reporting/references/checklists/CLAIM_2024.md +128 -0
- package/skills/check-reporting/references/checklists/CLEAR.md +113 -0
- package/skills/check-reporting/references/checklists/CONSORT.md +86 -0
- package/skills/check-reporting/references/checklists/COSMIN_RoB.md +136 -0
- package/skills/check-reporting/references/checklists/GRRAS.md +61 -0
- package/skills/check-reporting/references/checklists/MI_CLEAR_LLM.md +167 -0
- package/skills/check-reporting/references/checklists/MOOSE.md +85 -0
- package/skills/check-reporting/references/checklists/NOS.md +88 -0
- package/skills/check-reporting/references/checklists/PRISMA_2020.md +135 -0
- package/skills/check-reporting/references/checklists/PRISMA_DTA.md +36 -0
- package/skills/check-reporting/references/checklists/PRISMA_P.md +56 -0
- package/skills/check-reporting/references/checklists/PROBAST.md +75 -0
- package/skills/check-reporting/references/checklists/PROBAST_AI.md +130 -0
- package/skills/check-reporting/references/checklists/QUADAS2.md +77 -0
- package/skills/check-reporting/references/checklists/QUADAS_C.md +131 -0
- package/skills/check-reporting/references/checklists/ROBINS_E.md +179 -0
- package/skills/check-reporting/references/checklists/ROBINS_I.md +87 -0
- package/skills/check-reporting/references/checklists/ROBIS.md +114 -0
- package/skills/check-reporting/references/checklists/ROB_ME.md +126 -0
- package/skills/check-reporting/references/checklists/RoB2.md +79 -0
- package/skills/check-reporting/references/checklists/RoB_NMA.md +96 -0
- package/skills/check-reporting/references/checklists/SPIRIT.md +112 -0
- package/skills/check-reporting/references/checklists/SQUIRE_2.md +68 -0
- package/skills/check-reporting/references/checklists/STARD.md +129 -0
- package/skills/check-reporting/references/checklists/STARD_AI.md +211 -0
- package/skills/check-reporting/references/checklists/STROBE.md +80 -0
- package/skills/check-reporting/references/checklists/SWiM.md +33 -0
- package/skills/check-reporting/references/checklists/TRIPOD.md +157 -0
- package/skills/check-reporting/references/checklists/TRIPOD_AI.md +140 -0
- package/skills/check-reporting/references/step4c_registration_timing.md +93 -0
- package/skills/check-reporting/references/step4d_prisma_figure_audit.md +137 -0
- package/skills/check-reporting/scripts/check_checklist_exists.py +183 -0
- package/skills/check-reporting/scripts/check_checklist_version.py +168 -0
- package/skills/check-reporting/scripts/check_framework_naming.py +206 -0
- package/skills/check-reporting/scripts/check_prisma_figure.py +209 -0
- package/skills/check-reporting/scripts/prisma_cascade_check.py +274 -0
- package/skills/check-reporting/skill.yml +41 -0
- package/skills/check-reporting/tests/fixtures/framework_bad.md +8 -0
- package/skills/check-reporting/tests/fixtures/framework_clean.md +7 -0
- package/skills/check-reporting/tests/test_checklist_fail_fast.sh +77 -0
- package/skills/check-reporting/tests/test_checklist_version.sh +72 -0
- package/skills/check-reporting/tests/test_framework_naming.sh +45 -0
- package/skills/check-reporting/tests/test_prisma_cascade.sh +104 -0
- package/skills/clean-data/SKILL.md +180 -0
- package/skills/clean-data/references/cleaning_patterns.md +299 -0
- package/skills/clean-data/references/profiling_template.py +304 -0
- package/skills/clean-data/scripts/check_structural_zero.py +174 -0
- package/skills/clean-data/skill.yml +35 -0
- package/skills/clean-data/tests/fixtures/smoking.csv +8 -0
- package/skills/clean-data/tests/test_structural_zero.sh +49 -0
- package/skills/cross-national/SKILL.md +264 -0
- package/skills/cross-national/skill.yml +37 -0
- package/skills/define-variables/SKILL.md +146 -0
- package/skills/define-variables/references/common_definitions.md +190 -0
- package/skills/define-variables/skill.yml +34 -0
- package/skills/define-variables/templates/variable_operationalization.md +64 -0
- package/skills/deidentify/SKILL.md +203 -0
- package/skills/deidentify/deidentify.py +1224 -0
- package/skills/deidentify/locales/_template.json +45 -0
- package/skills/deidentify/locales/au.json +43 -0
- package/skills/deidentify/locales/ca.json +44 -0
- package/skills/deidentify/locales/cn.json +47 -0
- package/skills/deidentify/locales/de.json +48 -0
- package/skills/deidentify/locales/fr.json +48 -0
- package/skills/deidentify/locales/in.json +48 -0
- package/skills/deidentify/locales/jp.json +48 -0
- package/skills/deidentify/locales/kr.json +48 -0
- package/skills/deidentify/locales/uk.json +45 -0
- package/skills/deidentify/locales/us.json +43 -0
- package/skills/deidentify/references/date_shift_guide.md +82 -0
- package/skills/deidentify/references/hipaa_18_identifiers.md +48 -0
- package/skills/deidentify/references/korean_phi_patterns.md +135 -0
- package/skills/deidentify/skill.yml +43 -0
- package/skills/deidentify/tests/README.md +26 -0
- package/skills/deidentify/tests/test_clean.csv +16 -0
- package/skills/deidentify/tests/test_edge_cases.csv +11 -0
- package/skills/deidentify/tests/test_phi_korean.csv +11 -0
- package/skills/design-ai-benchmarking/SKILL.md +214 -0
- package/skills/design-ai-benchmarking/references/benchmark_export_schema.json +69 -0
- package/skills/design-ai-benchmarking/references/elicitation_rubric_template.md +37 -0
- package/skills/design-ai-benchmarking/skill.yml +38 -0
- package/skills/design-study/SKILL.md +298 -0
- package/skills/design-study/skill.yml +33 -0
- package/skills/fill-icmje-coi/SKILL.md +216 -0
- package/skills/fill-icmje-coi/scripts/fill_icmje_coi.py +140 -0
- package/skills/fill-icmje-coi/skill.yml +35 -0
- package/skills/fill-icmje-coi/templates/icmje_coi_seed_synthetic.docx +0 -0
- package/skills/fill-protocol/SKILL.md +248 -0
- package/skills/fill-protocol/examples/example_irb_template.yaml +53 -0
- package/skills/fill-protocol/references/best_practices.md +121 -0
- package/skills/fill-protocol/scripts/doc_to_docx.py +111 -0
- package/skills/fill-protocol/scripts/fill_form.py +611 -0
- package/skills/fill-protocol/scripts/inspect_template.py +61 -0
- package/skills/fill-protocol/setup.sh +162 -0
- package/skills/fill-protocol/skill.yml +37 -0
- package/skills/find-cohort-gap/SKILL.md +309 -0
- package/skills/find-cohort-gap/references/cohort_profile_template.md +93 -0
- package/skills/find-cohort-gap/references/onepager_template.md +84 -0
- package/skills/find-cohort-gap/references/pattern_scoring_rubric.md +169 -0
- package/skills/find-cohort-gap/references/saturation_query_templates.md +143 -0
- package/skills/find-cohort-gap/skill.yml +35 -0
- package/skills/find-journal/POLICY.md +87 -0
- package/skills/find-journal/SKILL.md +340 -0
- package/skills/find-journal/references/journal_profiles/AJNR.md +29 -0
- package/skills/find-journal/references/journal_profiles/AJR.md +30 -0
- package/skills/find-journal/references/journal_profiles/Abdominal_Radiology.md +30 -0
- package/skills/find-journal/references/journal_profiles/Academic_Radiology.md +30 -0
- package/skills/find-journal/references/journal_profiles/Annals_of_Internal_Medicine.md +33 -0
- package/skills/find-journal/references/journal_profiles/Artificial_Intelligence_in_Medicine.md +28 -0
- package/skills/find-journal/references/journal_profiles/BMC_Medicine.md +31 -0
- package/skills/find-journal/references/journal_profiles/British_Journal_of_Radiology.md +39 -0
- package/skills/find-journal/references/journal_profiles/CVIR.md +30 -0
- package/skills/find-journal/references/journal_profiles/Chest.md +39 -0
- package/skills/find-journal/references/journal_profiles/Clinical_Radiology.md +30 -0
- package/skills/find-journal/references/journal_profiles/Clinical_and_Molecular_Hepatology.md +32 -0
- package/skills/find-journal/references/journal_profiles/Diabetes_Metabolism_Journal.md +36 -0
- package/skills/find-journal/references/journal_profiles/Diagnostic_and_Interventional_Radiology.md +32 -0
- package/skills/find-journal/references/journal_profiles/Endocrinology_and_Metabolism.md +37 -0
- package/skills/find-journal/references/journal_profiles/European_Journal_of_Preventive_Cardiology.md +39 -0
- package/skills/find-journal/references/journal_profiles/European_Radiology.md +29 -0
- package/skills/find-journal/references/journal_profiles/Hepatology_Communications.md +40 -0
- package/skills/find-journal/references/journal_profiles/Hepatology_International.md +37 -0
- package/skills/find-journal/references/journal_profiles/IEEE_JBHI.md +28 -0
- package/skills/find-journal/references/journal_profiles/IEEE_TMI.md +28 -0
- package/skills/find-journal/references/journal_profiles/INSI.md +29 -0
- package/skills/find-journal/references/journal_profiles/Investigative_Radiology.md +25 -0
- package/skills/find-journal/references/journal_profiles/JACC_Advances.md +41 -0
- package/skills/find-journal/references/journal_profiles/JACC_Asia.md +30 -0
- package/skills/find-journal/references/journal_profiles/JACR.md +28 -0
- package/skills/find-journal/references/journal_profiles/JAMA.md +40 -0
- package/skills/find-journal/references/journal_profiles/JAMA_Network_Open.md +30 -0
- package/skills/find-journal/references/journal_profiles/JCSM.md +39 -0
- package/skills/find-journal/references/journal_profiles/JKMS.md +32 -0
- package/skills/find-journal/references/journal_profiles/JMIR.md +29 -0
- package/skills/find-journal/references/journal_profiles/JMIR_Medical_Education.md +29 -0
- package/skills/find-journal/references/journal_profiles/JNIS.md +35 -0
- package/skills/find-journal/references/journal_profiles/JVIR.md +31 -0
- package/skills/find-journal/references/journal_profiles/Journal_of_Biomedical_Informatics.md +29 -0
- package/skills/find-journal/references/journal_profiles/Journal_of_Clinical_Endocrinology_and_Metabolism.md +40 -0
- package/skills/find-journal/references/journal_profiles/Journal_of_Magnetic_Resonance_Imaging.md +30 -0
- package/skills/find-journal/references/journal_profiles/Journal_of_Nuclear_Medicine.md +31 -0
- package/skills/find-journal/references/journal_profiles/Journal_of_Stroke.md +32 -0
- package/skills/find-journal/references/journal_profiles/KJR.md +38 -0
- package/skills/find-journal/references/journal_profiles/Korean_Circulation_Journal.md +38 -0
- package/skills/find-journal/references/journal_profiles/Korean_Journal_of_Internal_Medicine.md +36 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Diabetes_and_Endocrinology.md +40 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Gastroenterology_and_Hepatology.md +49 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Infectious_Diseases.md +38 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Neurology.md +39 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Oncology.md +40 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Psychiatry.md +38 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Public_Health.md +30 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Respiratory_Medicine.md +39 -0
- package/skills/find-journal/references/journal_profiles/Liver_International.md +33 -0
- package/skills/find-journal/references/journal_profiles/Medical_Image_Analysis.md +28 -0
- package/skills/find-journal/references/journal_profiles/NEJM.md +33 -0
- package/skills/find-journal/references/journal_profiles/Nature_Machine_Intelligence.md +31 -0
- package/skills/find-journal/references/journal_profiles/Nature_Medicine.md +39 -0
- package/skills/find-journal/references/journal_profiles/Neuroradiology.md +31 -0
- package/skills/find-journal/references/journal_profiles/Nutrition_Metabolism_and_Cardiovascular_Diseases.md +39 -0
- package/skills/find-journal/references/journal_profiles/PLOS_Medicine.md +32 -0
- package/skills/find-journal/references/journal_profiles/RYAI.md +28 -0
- package/skills/find-journal/references/journal_profiles/Radiology.md +29 -0
- package/skills/find-journal/references/journal_profiles/Skeletal_Radiology.md +31 -0
- package/skills/find-journal/references/journal_profiles/Stroke.md +37 -0
- package/skills/find-journal/references/journal_profiles/The_BMJ.md +31 -0
- package/skills/find-journal/references/journal_profiles/The_Lancet.md +31 -0
- package/skills/find-journal/references/journal_profiles/The_Lancet_Digital_Health.md +29 -0
- package/skills/find-journal/references/journal_profiles/World_Journal_of_Hepatology.md +53 -0
- package/skills/find-journal/references/journal_profiles/npj_Digital_Medicine.md +29 -0
- package/skills/find-journal/skill.yml +34 -0
- package/skills/fulltext-retrieval/SKILL.md +174 -0
- package/skills/fulltext-retrieval/fetch_oa.py +433 -0
- package/skills/fulltext-retrieval/pdf_to_md.py +160 -0
- package/skills/fulltext-retrieval/skill.yml +41 -0
- package/skills/generate-codebook/SKILL.md +155 -0
- package/skills/generate-codebook/references/codebook_schema.md +76 -0
- package/skills/generate-codebook/scripts/generate_codebook.py +278 -0
- package/skills/generate-codebook/skill.yml +35 -0
- package/skills/generate-codebook/tests/test_generate_codebook.sh +76 -0
- package/skills/grant-builder/SKILL.md +251 -0
- package/skills/grant-builder/skill.yml +34 -0
- package/skills/humanize/SKILL.md +251 -0
- package/skills/humanize/references/ai_patterns.md +571 -0
- package/skills/humanize/skill.yml +33 -0
- package/skills/intake-project/SKILL.md +264 -0
- package/skills/intake-project/skill.yml +34 -0
- package/skills/lit-sync/SKILL.md +448 -0
- package/skills/lit-sync/references/locale/ko/note_templates.md +110 -0
- package/skills/lit-sync/skill.yml +52 -0
- package/skills/lit-sync/tests/test_poll_logic.sh +92 -0
- package/skills/ma-scout/SKILL.md +640 -0
- package/skills/ma-scout/references/project_readme_template.md +95 -0
- package/skills/ma-scout/references/project_readme_template_ko.md +82 -0
- package/skills/ma-scout/skill.yml +33 -0
- package/skills/make-figures/SKILL.md +957 -0
- package/skills/make-figures/references/critic_rubrics/data_plot.md +166 -0
- package/skills/make-figures/references/critic_rubrics/flow_diagram.md +169 -0
- package/skills/make-figures/references/design_principles.md +181 -0
- package/skills/make-figures/references/exemplar_diagrams/README.md +65 -0
- package/skills/make-figures/references/exemplar_diagrams/consort/README.md +15 -0
- package/skills/make-figures/references/exemplar_diagrams/consort/template_input.yaml +37 -0
- package/skills/make-figures/references/exemplar_diagrams/consort/template_output.pdf +0 -0
- package/skills/make-figures/references/exemplar_diagrams/consort/template_output.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/consort/template_output_600.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/other/other_02.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/other/other_02.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/other/other_02_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/README.md +15 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_01.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_01.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_01_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_03.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_03.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_03_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_04.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_04.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_04_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_05.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_05.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_05_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_06.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_06.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_06_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_07.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_07.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_07_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_08.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_08.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_08_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_09.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_09.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_09_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_10.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_10.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_10_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/prisma/README.md +15 -0
- package/skills/make-figures/references/exemplar_diagrams/prisma/template_input.yaml +47 -0
- package/skills/make-figures/references/exemplar_diagrams/prisma/template_output.pdf +0 -0
- package/skills/make-figures/references/exemplar_diagrams/prisma/template_output.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/prisma/template_output_600.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/stard/README.md +15 -0
- package/skills/make-figures/references/exemplar_diagrams/stard/template_input.yaml +40 -0
- package/skills/make-figures/references/exemplar_diagrams/stard/template_output.pdf +0 -0
- package/skills/make-figures/references/exemplar_diagrams/stard/template_output.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/stard/template_output_600.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/strobe/template_input.yaml +43 -0
- package/skills/make-figures/references/exemplar_diagrams/strobe/template_input_pptx.yaml +43 -0
- package/skills/make-figures/references/exemplar_diagrams/strobe/template_output.pdf +0 -0
- package/skills/make-figures/references/exemplar_diagrams/strobe/template_output.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/strobe/template_output.pptx +0 -0
- package/skills/make-figures/references/exemplar_diagrams/strobe/template_output_600.png +0 -0
- package/skills/make-figures/references/figure_specs.md +291 -0
- package/skills/make-figures/references/flow_diagram_lessons.md +164 -0
- package/skills/make-figures/references/jacc_central_illustration_principles.md +91 -0
- package/skills/make-figures/references/medical_illustration_sources.md +98 -0
- package/skills/make-figures/references/pipeline_concepts_medical_ai.md +240 -0
- package/skills/make-figures/references/reporting_guideline_figure_map.md +104 -0
- package/skills/make-figures/references/visual_abstract_templates/european_radiology.pptx +0 -0
- package/skills/make-figures/references/visual_abstract_templates/jacc_central_illustration.pptx +0 -0
- package/skills/make-figures/references/visual_abstract_templates/medsci_default.pptx +0 -0
- package/skills/make-figures/references/visual_abstract_templates/template_guide.md +114 -0
- package/skills/make-figures/scripts/build_jacc_template.py +77 -0
- package/skills/make-figures/scripts/build_prisma2020_template.py +371 -0
- package/skills/make-figures/scripts/build_strobe_template.py +351 -0
- package/skills/make-figures/scripts/critic_figure.py +264 -0
- package/skills/make-figures/scripts/derive_figure_legend_counts.py +138 -0
- package/skills/make-figures/scripts/extract_exemplar_from_pdf.py +186 -0
- package/skills/make-figures/scripts/fetch_official_templates.sh +88 -0
- package/skills/make-figures/scripts/fill_prisma_template.py +142 -0
- package/skills/make-figures/scripts/generate_flow_diagram.R +133 -0
- package/skills/make-figures/scripts/generate_image.py +99 -0
- package/skills/make-figures/scripts/generate_visual_abstract.py +438 -0
- package/skills/make-figures/scripts/validate_pptx_mac_compat.py +233 -0
- package/skills/make-figures/skill.yml +52 -0
- package/skills/make-figures/templates/official/NOTES.md +62 -0
- package/skills/make-figures/templates/official/consort2010/CONSORT_2025_editable_checklist.docx +0 -0
- package/skills/make-figures/templates/official/consort2010/CONSORT_2025_flow_diagram.docx +0 -0
- package/skills/make-figures/templates/official/prisma2020/PRISMA_2020_flow_new_v1.pptx +0 -0
- package/skills/make-figures/templates/official/prisma2020/PRISMA_2020_flow_new_v2.pptx +0 -0
- package/skills/make-figures/templates/official/prisma2020/PRISMA_2020_flow_updated_v2.pptx +0 -0
- package/skills/make-figures/templates/official/spirit2013/SPIRIT_2025_editable_checklist.docx +0 -0
- package/skills/make-figures/templates/official/spirit2013/SPIRIT_2025_participant_timeline.docx +0 -0
- package/skills/make-figures/templates/official/stard2015/STARD_2015_checklist.docx +0 -0
- package/skills/make-figures/templates/official/stard2015/STARD_2015_flow_diagram.pdf +0 -0
- package/skills/make-figures/tests/fixtures/figure1_flow.yaml +8 -0
- package/skills/make-figures/tests/fixtures/manuscript_ok.md +9 -0
- package/skills/make-figures/tests/fixtures/manuscript_stale.md +4 -0
- package/skills/make-figures/tests/test_legend_reconcile.sh +36 -0
- package/skills/manage-project/SKILL.md +358 -0
- package/skills/manage-project/references/pre_submission_checklist.md +53 -0
- package/skills/manage-project/references/project_state_template.json +37 -0
- package/skills/manage-project/references/scaffold_templates.md +118 -0
- package/skills/manage-project/references/status_output_format.md +44 -0
- package/skills/manage-project/references/timeline_example.md +20 -0
- package/skills/manage-project/skill.yml +36 -0
- package/skills/manage-project/templates/SSOT.yaml.template +41 -0
- package/skills/manage-refs/LICENSE.zotero-mcp +21 -0
- package/skills/manage-refs/NOTICE.md +29 -0
- package/skills/manage-refs/SKILL.md +289 -0
- package/skills/manage-refs/citation_styles/README.md +40 -0
- package/skills/manage-refs/citation_styles/american-journal-of-roentgenology.csl +211 -0
- package/skills/manage-refs/citation_styles/cardiovascular-and-interventional-radiology.csl +19 -0
- package/skills/manage-refs/citation_styles/european-radiology.csl +19 -0
- package/skills/manage-refs/citation_styles/journal-of-cachexia-sarcopenia-and-muscle.csl +150 -0
- package/skills/manage-refs/citation_styles/journal-of-korean-medical-science-strict.csl +533 -0
- package/skills/manage-refs/citation_styles/journal-of-korean-medical-science.csl +16 -0
- package/skills/manage-refs/citation_styles/korean-journal-of-radiology.csl +155 -0
- package/skills/manage-refs/citation_styles/nature.csl +189 -0
- package/skills/manage-refs/citation_styles/nlm-citation-sequence.csl +535 -0
- package/skills/manage-refs/citation_styles/radiology.csl +228 -0
- package/skills/manage-refs/citation_styles/springer-basic-brackets.csl +187 -0
- package/skills/manage-refs/citation_styles/springer-vancouver-brackets.csl +276 -0
- package/skills/manage-refs/citation_styles/vancouver-superscript.csl +536 -0
- package/skills/manage-refs/citation_styles/vancouver.csl +535 -0
- package/skills/manage-refs/references/REFERENCE_STYLE_SPECS.md +59 -0
- package/skills/manage-refs/references/check_xref_symptoms.md +35 -0
- package/skills/manage-refs/scripts/_vendor_citation_writer.py +600 -0
- package/skills/manage-refs/scripts/check_citation_keys.py +112 -0
- package/skills/manage-refs/scripts/check_csl_render.py +102 -0
- package/skills/manage-refs/scripts/check_xref.py +633 -0
- package/skills/manage-refs/scripts/fill_journal_abbrev.py +104 -0
- package/skills/manage-refs/scripts/inject_zotero_cwyw.py +133 -0
- package/skills/manage-refs/scripts/md_marker_convert.py +193 -0
- package/skills/manage-refs/scripts/pre_submission_gate.sh +238 -0
- package/skills/manage-refs/scripts/render_pandoc.sh +88 -0
- package/skills/manage-refs/skill.yml +70 -0
- package/skills/manage-refs/tests/fixtures/pre_submission_gate/README.md +32 -0
- package/skills/manage-refs/tests/fixtures/pre_submission_gate/manuscript.md +10 -0
- package/skills/manage-refs/tests/fixtures/pre_submission_gate/refs.bib +34 -0
- package/skills/manage-refs/tests/fixtures/pre_submission_gate/run.sh +117 -0
- package/skills/manage-refs/tests/test_vN_docx_check.sh +145 -0
- package/skills/meta-analysis/SKILL.md +739 -0
- package/skills/meta-analysis/references/LICENSES.md +21 -0
- package/skills/meta-analysis/references/PROSPERO_template.md +221 -0
- package/skills/meta-analysis/references/ai_pre_screening_template.py +245 -0
- package/skills/meta-analysis/references/checklists/JBI_Case_Series.md +45 -0
- package/skills/meta-analysis/references/checklists/NOS.md +88 -0
- package/skills/meta-analysis/references/checklists/PRISMA_DTA.md +36 -0
- package/skills/meta-analysis/references/checklists/PROBAST.md +75 -0
- package/skills/meta-analysis/references/checklists/QUADAS2.md +77 -0
- package/skills/meta-analysis/references/checklists/ROBINS_I.md +87 -0
- package/skills/meta-analysis/references/checklists/RoB2.md +79 -0
- package/skills/meta-analysis/references/data_integrity_checklist.md +57 -0
- package/skills/meta-analysis/references/icmje_coi_guide.md +181 -0
- package/skills/meta-analysis/references/phase10_recovery.md +136 -0
- package/skills/meta-analysis/references/phase4_km_composite.md +58 -0
- package/skills/meta-analysis/references/phase6_statistical_synthesis.md +148 -0
- package/skills/meta-analysis/references/phase9_circulation.md +84 -0
- package/skills/meta-analysis/references/post_submission_release_ops.md +41 -0
- package/skills/meta-analysis/references/r_templates.md +132 -0
- package/skills/meta-analysis/references/review_orchestration.md +40 -0
- package/skills/meta-analysis/references/submission_package_drift.md +71 -0
- package/skills/meta-analysis/scripts/check_pool_consistency.py +201 -0
- package/skills/meta-analysis/scripts/cohort_overlap_check.py +242 -0
- package/skills/meta-analysis/scripts/dta_extraction_qc.py +137 -0
- package/skills/meta-analysis/scripts/screening_reconcile.py +160 -0
- package/skills/meta-analysis/skill.yml +47 -0
- package/skills/meta-analysis/templates/FINAL_POOL_LOCK.yaml.template +70 -0
- package/skills/meta-analysis/templates/extraction_form_v2.md +129 -0
- package/skills/meta-analysis/templates/supplementary_8file_checklist.md +94 -0
- package/skills/meta-analysis/tests/test_pool_consistency.sh +123 -0
- package/skills/orchestrate/SKILL.md +501 -0
- package/skills/orchestrate/references/dialogue_nodes.md +196 -0
- package/skills/orchestrate/references/report_template.md +109 -0
- package/skills/orchestrate/references/report_template_ko.md +88 -0
- package/skills/orchestrate/skill.yml +44 -0
- package/skills/peer-review/SKILL.md +381 -0
- package/skills/peer-review/references/aczel_2021_reviewer2_patterns.md +88 -0
- package/skills/peer-review/references/domain-probes/ai_overclaiming.md +47 -0
- package/skills/peer-review/references/domain-probes/narrative_review.md +44 -0
- package/skills/peer-review/references/domain-probes/observational_confounding.md +48 -0
- package/skills/peer-review/references/domain-probes/radiomics.md +38 -0
- package/skills/peer-review/references/domain-probes/sr_ma.md +87 -0
- package/skills/peer-review/references/domain-probes/survival_prognostic.md +68 -0
- package/skills/peer-review/references/exemplar_reviews/README.md +43 -0
- package/skills/peer-review/references/exemplar_reviews/ai_overclaiming.md +47 -0
- package/skills/peer-review/references/exemplar_reviews/calibration_missing.md +44 -0
- package/skills/peer-review/references/exemplar_reviews/data_leakage.md +48 -0
- package/skills/peer-review/references/exemplar_reviews/reference_standard_validity.md +45 -0
- package/skills/peer-review/references/narrative_review_audit.md +67 -0
- package/skills/peer-review/references/reviewer_calibration/README.md +34 -0
- package/skills/peer-review/references/reviewer_calibration/compliance_floor.md +52 -0
- package/skills/peer-review/references/reviewer_profiles/AJR.md +82 -0
- package/skills/peer-review/references/reviewer_profiles/EURE.md +64 -0
- package/skills/peer-review/references/reviewer_profiles/INSI.md +57 -0
- package/skills/peer-review/references/reviewer_profiles/KJR.md +100 -0
- package/skills/peer-review/references/reviewer_profiles/README.md +32 -0
- package/skills/peer-review/references/reviewer_profiles/RYAI.md +86 -0
- package/skills/peer-review/skill.yml +39 -0
- package/skills/present-paper/SKILL.md +675 -0
- package/skills/present-paper/references/critic_rubrics/slide.md +155 -0
- package/skills/present-paper/references/generate_pptx_templates.py +604 -0
- package/skills/present-paper/references/medical_presentation_templates.md +277 -0
- package/skills/present-paper/references/slide_design_principles.md +202 -0
- package/skills/present-paper/references/slide_visual_styles/nature_lancet.md +168 -0
- package/skills/present-paper/references/workflow-checklist.md +109 -0
- package/skills/present-paper/scripts/extract_pdf_figures.py +243 -0
- package/skills/present-paper/scripts/inject_pronunciation_notes.py +178 -0
- package/skills/present-paper/scripts/inject_speaker_notes.py +133 -0
- package/skills/present-paper/scripts/strip_notes_for_sharing.py +140 -0
- package/skills/present-paper/scripts/trim_caption.py +271 -0
- package/skills/present-paper/skill.yml +41 -0
- package/skills/present-paper/templates/build_pptx_nature_lancet.py +688 -0
- package/skills/publish-skill/SKILL.md +370 -0
- package/skills/publish-skill/references/license-compatibility-matrix.md +132 -0
- package/skills/publish-skill/references/pii-patterns.md +130 -0
- package/skills/publish-skill/scripts/audit_skill.sh +278 -0
- package/skills/publish-skill/skill.yml +35 -0
- package/skills/render-pdf-doc/SKILL.md +146 -0
- package/skills/render-pdf-doc/references/known_pitfalls.md +53 -0
- package/skills/render-pdf-doc/references/pandoc_korean_cheatsheet.md +77 -0
- package/skills/render-pdf-doc/scripts/check_deps.sh +42 -0
- package/skills/render-pdf-doc/scripts/infer_colwidths.py +164 -0
- package/skills/render-pdf-doc/scripts/render_pdf.sh +98 -0
- package/skills/render-pdf-doc/skill.yml +57 -0
- package/skills/render-pdf-doc/templates/anchor-doc.md +27 -0
- package/skills/render-pdf-doc/templates/anchor-doc_ko.md +25 -0
- package/skills/render-pdf-doc/templates/briefing-handout.md +33 -0
- package/skills/render-pdf-doc/templates/briefing-handout_ko.md +31 -0
- package/skills/render-pdf-doc/templates/proposal-cover.md +33 -0
- package/skills/render-pdf-doc/templates/proposal-cover_ko.md +31 -0
- package/skills/render-pdf-doc/templates/reference-table.md +22 -0
- package/skills/render-pdf-doc/templates/reference-table_ko.md +20 -0
- package/skills/replicate-study/SKILL.md +150 -0
- package/skills/replicate-study/references/harmonization_3country.csv +47 -0
- package/skills/replicate-study/references/harmonization_knhanes_nhanes.csv +68 -0
- package/skills/replicate-study/references/methodology_extraction_template.md +134 -0
- package/skills/replicate-study/skill.yml +37 -0
- package/skills/review-paper/SKILL.md +104 -0
- package/skills/review-paper/references/macro_skeleton.md +6 -0
- package/skills/review-paper/skill.yml +25 -0
- package/skills/revise/SKILL.md +515 -0
- package/skills/revise/references/r2r_voice.md +346 -0
- package/skills/revise/skill.yml +43 -0
- package/skills/search-lit/SKILL.md +443 -0
- package/skills/search-lit/references/parse_pubmed.py +326 -0
- package/skills/search-lit/references/pubmed_eutils.sh +111 -0
- package/skills/search-lit/skill.yml +46 -0
- package/skills/self-review/SKILL.md +1045 -0
- package/skills/self-review/references/domain-probes/ai_overclaiming.md +47 -0
- package/skills/self-review/references/domain-probes/narrative_review.md +44 -0
- package/skills/self-review/references/domain-probes/observational_confounding.md +48 -0
- package/skills/self-review/references/domain-probes/radiomics.md +38 -0
- package/skills/self-review/references/domain-probes/sr_ma.md +87 -0
- package/skills/self-review/references/domain-probes/survival_prognostic.md +68 -0
- package/skills/self-review/references/exemplar_findings/README.md +43 -0
- package/skills/self-review/references/exemplar_findings/cohort_arithmetic_mismatch.md +35 -0
- package/skills/self-review/references/exemplar_findings/estimand_drift_posthoc_primary.md +39 -0
- package/skills/self-review/references/exemplar_findings/scope_overreach_cross_sectional.md +35 -0
- package/skills/self-review/references/exemplar_findings/unadjusted_confounder.md +36 -0
- package/skills/self-review/references/panel_review_template.md +177 -0
- package/skills/self-review/scripts/check_artifact_coverage.py +301 -0
- package/skills/self-review/scripts/check_claim_artifact.py +248 -0
- package/skills/self-review/scripts/check_classical_style.py +185 -0
- package/skills/self-review/scripts/check_cohort_arithmetic.py +481 -0
- package/skills/self-review/scripts/check_confounding_completeness.py +287 -0
- package/skills/self-review/scripts/check_panel_diversity.py +336 -0
- package/skills/self-review/scripts/check_reference_adequacy.py +392 -0
- package/skills/self-review/scripts/check_reviewer_team_consistency.py +412 -0
- package/skills/self-review/scripts/check_scope_coherence.py +177 -0
- package/skills/self-review/skill.yml +47 -0
- package/skills/self-review/tests/fixtures/claim_manuscript.md +17 -0
- package/skills/self-review/tests/fixtures/claim_prereg.md +6 -0
- package/skills/self-review/tests/fixtures/cohort_bad.md +21 -0
- package/skills/self-review/tests/fixtures/cohort_clean.md +21 -0
- package/skills/self-review/tests/fixtures/cohort_partition.csv +5 -0
- package/skills/self-review/tests/fixtures/coverage_analysis/31_delong_nested_added_value.csv +3 -0
- package/skills/self-review/tests/fixtures/coverage_analysis/table1_demographics.csv +3 -0
- package/skills/self-review/tests/fixtures/coverage_clean.md +13 -0
- package/skills/self-review/tests/fixtures/coverage_manuscript.md +11 -0
- package/skills/self-review/tests/fixtures/panel_collapse.json +27 -0
- package/skills/self-review/tests/fixtures/panel_good.json +32 -0
- package/skills/self-review/tests/fixtures/panel_monoculture.json +32 -0
- package/skills/self-review/tests/fixtures/refadeq_letter.md +13 -0
- package/skills/self-review/tests/fixtures/refadeq_original_fixed.md +42 -0
- package/skills/self-review/tests/fixtures/refadeq_original_uncited.md +40 -0
- package/skills/self-review/tests/fixtures/scope_bad.md +9 -0
- package/skills/self-review/tests/fixtures/scope_clean.md +8 -0
- package/skills/self-review/tests/fixtures/scope_surrogate.md +8 -0
- package/skills/self-review/tests/fixtures/style_bad.md +13 -0
- package/skills/self-review/tests/fixtures/style_clean.md +11 -0
- package/skills/self-review/tests/fixtures/table1_by_exposure.csv +11 -0
- package/skills/self-review/tests/test_artifact_coverage.sh +44 -0
- package/skills/self-review/tests/test_claim_artifact.sh +50 -0
- package/skills/self-review/tests/test_classical_style.sh +44 -0
- package/skills/self-review/tests/test_cohort_arithmetic.sh +49 -0
- package/skills/self-review/tests/test_confounding_completeness.sh +66 -0
- package/skills/self-review/tests/test_panel_diversity.sh +55 -0
- package/skills/self-review/tests/test_panel_mode.sh +69 -0
- package/skills/self-review/tests/test_reference_adequacy.sh +68 -0
- package/skills/self-review/tests/test_reviewer_team_consistency.sh +138 -0
- package/skills/self-review/tests/test_scope_coherence.sh +46 -0
- package/skills/setup-medsci/SKILL.md +110 -0
- package/skills/setup-medsci/references/setup-checklist.md +51 -0
- package/skills/setup-medsci/skill.yml +30 -0
- package/skills/sync-submission/SKILL.md +382 -0
- package/skills/sync-submission/scripts/author_registry_example.yaml +36 -0
- package/skills/sync-submission/scripts/blind_sweep.py +203 -0
- package/skills/sync-submission/scripts/check_asset_anonymization.py +300 -0
- package/skills/sync-submission/scripts/check_cross_artifact_stale.py +211 -0
- package/skills/sync-submission/scripts/cover_letter_drift_check.py +451 -0
- package/skills/sync-submission/scripts/cross_document_n_check.py +486 -0
- package/skills/sync-submission/scripts/detect_copy_divergence.py +136 -0
- package/skills/sync-submission/scripts/preflight_gate.py +458 -0
- package/skills/sync-submission/scripts/scope_drift_check.py +362 -0
- package/skills/sync-submission/scripts/sync_submission.py +169 -0
- package/skills/sync-submission/skill.yml +43 -0
- package/skills/sync-submission/tests/fixtures/copy_ok.md +5 -0
- package/skills/sync-submission/tests/fixtures/copy_stale.md +5 -0
- package/skills/sync-submission/tests/fixtures/ssot.md +5 -0
- package/skills/sync-submission/tests/test_asset_anonymization.sh +99 -0
- package/skills/sync-submission/tests/test_copy_divergence.sh +44 -0
- package/skills/sync-submission/tests/test_cross_artifact_stale.sh +80 -0
- package/skills/sync-submission/tests/test_cross_document_n.sh +132 -0
- package/skills/sync-submission/tests/test_preflight_gate.sh +112 -0
- package/skills/sync-submission/tests/test_scope_drift.sh +122 -0
- package/skills/sync-submission/tests/test_vN_docx_assertion.sh +51 -0
- package/skills/verify-refs/SKILL.md +177 -0
- package/skills/verify-refs/references/manual_checkpoint_guide.md +100 -0
- package/skills/verify-refs/scripts/verify_cli.sh +62 -0
- package/skills/verify-refs/scripts/verify_refs.py +782 -0
- package/skills/verify-refs/skill.yml +44 -0
- package/skills/verify-refs/tests/fixtures/pagination_placeholder.bib +17 -0
- package/skills/verify-refs/tests/test_pagination_placeholder.sh +42 -0
- package/skills/version-dataset/SKILL.md +143 -0
- package/skills/version-dataset/references/manifest_schema.md +72 -0
- package/skills/version-dataset/scripts/version_dataset.py +242 -0
- package/skills/version-dataset/skill.yml +35 -0
- package/skills/version-dataset/tests/test_version_dataset.sh +52 -0
- package/skills/write-paper/SKILL.md +1148 -0
- package/skills/write-paper/references/exemplar_methods/README.md +38 -0
- package/skills/write-paper/references/exemplar_methods/ai_validation_tripod_claim.md +47 -0
- package/skills/write-paper/references/exemplar_methods/diagnostic_accuracy_stard.md +50 -0
- package/skills/write-paper/references/exemplar_methods/observational_cohort_strobe.md +43 -0
- package/skills/write-paper/references/journal_profiles/AJNR.md +185 -0
- package/skills/write-paper/references/journal_profiles/AJR.md +149 -0
- package/skills/write-paper/references/journal_profiles/Abdominal_Radiology.md +139 -0
- package/skills/write-paper/references/journal_profiles/Academic_Radiology.md +90 -0
- package/skills/write-paper/references/journal_profiles/Annals_of_Internal_Medicine.md +150 -0
- package/skills/write-paper/references/journal_profiles/Artificial_Intelligence_in_Medicine.md +82 -0
- package/skills/write-paper/references/journal_profiles/British_Journal_of_Radiology.md +161 -0
- package/skills/write-paper/references/journal_profiles/CVIR.md +157 -0
- package/skills/write-paper/references/journal_profiles/Chest.md +270 -0
- package/skills/write-paper/references/journal_profiles/Clinical_Radiology.md +160 -0
- package/skills/write-paper/references/journal_profiles/Clinical_and_Molecular_Hepatology.md +147 -0
- package/skills/write-paper/references/journal_profiles/Diabetes_Metabolism_Journal.md +163 -0
- package/skills/write-paper/references/journal_profiles/Diagnostic_and_Interventional_Radiology.md +216 -0
- package/skills/write-paper/references/journal_profiles/Endocrinology_and_Metabolism.md +167 -0
- package/skills/write-paper/references/journal_profiles/European_Journal_of_Preventive_Cardiology.md +192 -0
- package/skills/write-paper/references/journal_profiles/European_Radiology.md +159 -0
- package/skills/write-paper/references/journal_profiles/Hepatology_Communications.md +110 -0
- package/skills/write-paper/references/journal_profiles/Hepatology_International.md +106 -0
- package/skills/write-paper/references/journal_profiles/IEEE_TMI.md +180 -0
- package/skills/write-paper/references/journal_profiles/INSI.md +163 -0
- package/skills/write-paper/references/journal_profiles/Investigative_Radiology.md +86 -0
- package/skills/write-paper/references/journal_profiles/JACC_Advances.md +197 -0
- package/skills/write-paper/references/journal_profiles/JACC_Asia.md +168 -0
- package/skills/write-paper/references/journal_profiles/JACR.md +87 -0
- package/skills/write-paper/references/journal_profiles/JAMA.md +188 -0
- package/skills/write-paper/references/journal_profiles/JAMA_Network_Open.md +170 -0
- package/skills/write-paper/references/journal_profiles/JCSM.md +266 -0
- package/skills/write-paper/references/journal_profiles/JKMS.md +201 -0
- package/skills/write-paper/references/journal_profiles/JMIR.md +88 -0
- package/skills/write-paper/references/journal_profiles/JMIR_Medical_Education.md +86 -0
- package/skills/write-paper/references/journal_profiles/JNIS.md +227 -0
- package/skills/write-paper/references/journal_profiles/JVIR.md +158 -0
- package/skills/write-paper/references/journal_profiles/Journal_of_Clinical_Endocrinology_and_Metabolism.md +191 -0
- package/skills/write-paper/references/journal_profiles/Journal_of_Stroke.md +176 -0
- package/skills/write-paper/references/journal_profiles/KJR.md +185 -0
- package/skills/write-paper/references/journal_profiles/Korean_Circulation_Journal.md +184 -0
- package/skills/write-paper/references/journal_profiles/Korean_Journal_of_Internal_Medicine.md +178 -0
- package/skills/write-paper/references/journal_profiles/Lancet_Gastroenterology_and_Hepatology.md +127 -0
- package/skills/write-paper/references/journal_profiles/Liver_International.md +165 -0
- package/skills/write-paper/references/journal_profiles/Medical_Image_Analysis.md +147 -0
- package/skills/write-paper/references/journal_profiles/NEJM.md +147 -0
- package/skills/write-paper/references/journal_profiles/Nature_Medicine.md +181 -0
- package/skills/write-paper/references/journal_profiles/Neuroradiology.md +151 -0
- package/skills/write-paper/references/journal_profiles/Nutrition_Metabolism_and_Cardiovascular_Diseases.md +184 -0
- package/skills/write-paper/references/journal_profiles/PLOS_Medicine.md +166 -0
- package/skills/write-paper/references/journal_profiles/RYAI.md +124 -0
- package/skills/write-paper/references/journal_profiles/Radiology.md +173 -0
- package/skills/write-paper/references/journal_profiles/Skeletal_Radiology.md +135 -0
- package/skills/write-paper/references/journal_profiles/Stroke.md +210 -0
- package/skills/write-paper/references/journal_profiles/The_BMJ.md +121 -0
- package/skills/write-paper/references/journal_profiles/The_Lancet.md +112 -0
- package/skills/write-paper/references/journal_profiles/The_Lancet_Digital_Health.md +104 -0
- package/skills/write-paper/references/journal_profiles/World_Journal_of_Hepatology.md +106 -0
- package/skills/write-paper/references/journal_profiles/npj_Digital_Medicine.md +93 -0
- package/skills/write-paper/references/paper_types/ai_validation.md +270 -0
- package/skills/write-paper/references/paper_types/animal_study.md +194 -0
- package/skills/write-paper/references/paper_types/case_report.md +237 -0
- package/skills/write-paper/references/paper_types/cross_national.md +328 -0
- package/skills/write-paper/references/paper_types/letter.md +127 -0
- package/skills/write-paper/references/paper_types/meta_analysis.md +181 -0
- package/skills/write-paper/references/paper_types/nhis_cohort.md +297 -0
- package/skills/write-paper/references/paper_types/original_article.md +221 -0
- package/skills/write-paper/references/paper_types/technical_note.md +131 -0
- package/skills/write-paper/references/section_guides/discussion.md +155 -0
- package/skills/write-paper/references/section_guides/introduction.md +108 -0
- package/skills/write-paper/references/section_guides/methods.md +144 -0
- package/skills/write-paper/references/section_guides/results.md +113 -0
- package/skills/write-paper/references/section_guides/step7_1_classical_qc.md +67 -0
- package/skills/write-paper/references/section_guides/step7_4a_audit_recovery.md +74 -0
- package/skills/write-paper/references/section_guides/title_abstract.md +123 -0
- package/skills/write-paper/references/section_templates/methods_statistical.md +147 -0
- package/skills/write-paper/scripts/check_placeholders.py +182 -0
- package/skills/write-paper/skill.yml +48 -0
- package/skills/write-paper/tests/test_placeholders.sh +107 -0
- package/skills/write-protocol/SKILL.md +243 -0
- package/skills/write-protocol/references/ethics_checklist.md +150 -0
- package/skills/write-protocol/references/protocol_template.md +304 -0
- package/skills/write-protocol/skill.yml +34 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: define-variables
|
|
3
|
+
description: >
|
|
4
|
+
Literature-grounded variable operationalization for observational research. Turns a data dictionary +
|
|
5
|
+
research question into a citation-backed table of exposure/outcome/covariate definitions, cutoffs, and
|
|
6
|
+
DB variable mappings. Prevents ad-hoc phenotype definitions that invite reviewer rejection. Bridges
|
|
7
|
+
/search-lit output into /write-protocol Methods.
|
|
8
|
+
triggers: variable definition, phenotype definition, operationalization, cutoff justification, inclusion criteria, case definition, grouping criteria, literature-grounded definition, canonical definition, 변수 정의, 정의 근거
|
|
9
|
+
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
10
|
+
model: inherit
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Define-Variables Skill
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
|
|
17
|
+
Every observational study operationalizes abstract constructs (MASLD, CKD, emphysema, obesity, incidentaloma) into concrete rules against the available data dictionary. When that operationalization is invented ad-hoc from the dictionary alone, reviewers reject on construct validity regardless of downstream statistics.
|
|
18
|
+
|
|
19
|
+
This skill forces a **literature-first** pass: each variable is mapped to a canonical guideline/consensus definition, cross-checked against prior operationalizations in comparable cohorts, then mapped to available DB variables. Ad-hoc deviations are flagged explicitly and justified, not hidden.
|
|
20
|
+
|
|
21
|
+
Use it when:
|
|
22
|
+
- a study question is known and variables are being selected
|
|
23
|
+
- inclusion/exclusion criteria or phenotype definitions need citation backing
|
|
24
|
+
- a data dictionary has ambiguous or derived variables (eGFR formula, BMI class, liver steatosis criteria, etc.)
|
|
25
|
+
- a reviewer asked "why this cutoff?"
|
|
26
|
+
- a retrospective audit reveals drifted definitions across projects in the same cohort
|
|
27
|
+
|
|
28
|
+
Call after `/design-study`, before `/write-protocol`.
|
|
29
|
+
|
|
30
|
+
## Communication Rules
|
|
31
|
+
|
|
32
|
+
- Communicate in the user's preferred language.
|
|
33
|
+
- All variable names, guideline names, cutoffs in English.
|
|
34
|
+
- Produce one artifact: `variable_operationalization.md` in the project root (or path the user specifies).
|
|
35
|
+
|
|
36
|
+
## Inputs
|
|
37
|
+
|
|
38
|
+
1. **Research question** (one sentence)
|
|
39
|
+
2. **Candidate variables** — exposure, outcome, key covariates, eligibility filters
|
|
40
|
+
3. **Data dictionary path** (xlsx / csv / markdown) OR explicit list of available DB columns
|
|
41
|
+
4. **Cohort type** (e.g., health-screening, NHANES-like, claims, registry) — informs which prior-art cohort to compare against
|
|
42
|
+
|
|
43
|
+
Missing inputs → ask once, then proceed.
|
|
44
|
+
|
|
45
|
+
## 4-Tier Pipeline (DB codebook + token-efficient literature)
|
|
46
|
+
|
|
47
|
+
### Tier 0 — DB codebook lookup (mandatory for DB-backed observational studies)
|
|
48
|
+
|
|
49
|
+
**Trigger**: project has a `project.yaml::db.dictionary_path` field pointing to a machine-readable codebook (xlsx/csv/markdown), OR user supplied a dictionary path in inputs. If neither, skip to Tier 1.
|
|
50
|
+
|
|
51
|
+
For every candidate DB variable — **before** touching literature — open the dictionary and record, verbatim, the sheet name, row number, and code→meaning mapping. This prevents the single most common observational-study error: assuming a column code (`status == 0`, `grade == 4`) means what it intuitively reads like, when the codebook says otherwise.
|
|
52
|
+
|
|
53
|
+
Concrete procedure per variable:
|
|
54
|
+
|
|
55
|
+
1. Locate the variable in the dictionary by exact column name.
|
|
56
|
+
2. Copy verbatim: the sheet title, row number, and full code→meaning mapping (or unit/range statement for continuous vars).
|
|
57
|
+
3. Paste into the `Dict. sheet & row` + `Dict. verbatim` columns of the operationalization table.
|
|
58
|
+
4. If the variable is not found, OR the codebook is silent on a specific code value, file a question to the DB owner / data steward. Do NOT infer from cross-tabs, do NOT guess, do NOT proceed with that variable until a verbatim answer exists.
|
|
59
|
+
|
|
60
|
+
Empirical checks (value distributions, cross-tabs with related columns) are useful for sanity testing **after** the verbatim codebook meaning is recorded — never as a substitute for it.
|
|
61
|
+
|
|
62
|
+
Project-level binding (recommended): commit a `DICTIONARY_FIRST_POLICY.md` at the project root (or shared-config path) capturing the canonical dictionary path + escalation contact. Cross-project rule template: `~/.claude/rules/dictionary-first.md`.
|
|
63
|
+
|
|
64
|
+
**Exit gate**: `check_dictionary_citations.py` (or equivalent) PASS on the operationalization table before running Tier 1.
|
|
65
|
+
|
|
66
|
+
### Tier 1 — Canonical index lookup (no API calls)
|
|
67
|
+
|
|
68
|
+
Check `references/common_definitions.md` (shipped with skill) for the variable. Covers high-frequency constructs:
|
|
69
|
+
|
|
70
|
+
- Liver: MASLD (AASLD 2023), MetALD (AASLD 2023), MAFLD (2020), NAFLD (legacy), ALD, viral hepatitis (AASLD 2022/2024 HBV, AASLD-IDSA HCV)
|
|
71
|
+
- Metabolic: T2DM (ADA 2024), prediabetes (ADA 2024), metabolic syndrome (IDF 2009 / NCEP ATP III / K-NCEP), obesity/BMI (WHO Asian 2004 + WHO global), HTN (ACC/AHA 2017 + JNC-8), dyslipidemia (NCEP ATP III, 2023 AHA/ACC)
|
|
72
|
+
- Renal: CKD (KDIGO 2024), eGFR formulas (CKD-EPI 2021 race-free, MDRD legacy), incidental renal mass (ACR 2018 white paper, Bosniak 2019)
|
|
73
|
+
- Pulmonary: COPD (GOLD 2024), emphysema imaging (Fleischner 2015)
|
|
74
|
+
- CV: CAC scoring (Agatston 1990, MESA percentiles), CAD risk (2018 ACC/AHA cholesterol, PREVENT 2023)
|
|
75
|
+
- Cancer: gastric cancer H. pylori (Maastricht VI 2022), thyroid nodule (ACR TI-RADS 2017), gallbladder polyp (European 2022 joint guideline)
|
|
76
|
+
- Imaging incidentalomas: adrenal (ACR 2023), pancreas (ACR 2017), renal (ACR 2018), thyroid (ACR 2017)
|
|
77
|
+
|
|
78
|
+
If the variable hits Tier 1, record: guideline, year, canonical cutoff, BibTeX key. Done — no `/search-lit` call.
|
|
79
|
+
|
|
80
|
+
### Tier 2 — Targeted `/search-lit` (focused queries only)
|
|
81
|
+
|
|
82
|
+
For variables NOT in Tier 1, OR when subgroup justification is needed (Asian-specific cutoff, pediatric, young-adult, pregnancy, etc.), call `/search-lit` with **one query per variable** — not a general sweep. Query pattern:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
"{construct} definition {cohort type} {subgroup qualifier}"
|
|
86
|
+
e.g., "obstructive sleep apnea prevalence Korean health screening cohort"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Cap: 5 queries per session. Stop early if first 1-2 papers converge on the same definition.
|
|
90
|
+
|
|
91
|
+
### Tier 3 — Verification
|
|
92
|
+
|
|
93
|
+
Before finalizing, run `/verify-refs` on the accumulated BibTeX to confirm every citation exists in PubMed/CrossRef. Ad-hoc choices (no canonical source found) must be flagged `Ad-hoc: yes` and justified with 1-2 sentences — never hidden.
|
|
94
|
+
|
|
95
|
+
## Output Template
|
|
96
|
+
|
|
97
|
+
Write to `{project_root}/variable_operationalization.md` using `templates/variable_operationalization.md`. Required structure:
|
|
98
|
+
|
|
99
|
+
1. **Header**: research question, cohort type, date, author
|
|
100
|
+
2. **Operationalization table** — one row per variable:
|
|
101
|
+
|
|
102
|
+
| Variable | Role | Dict. sheet & row | Dict. verbatim | Canonical source | Definition | Cutoff | DB vars | Implementation | Ad-hoc? |
|
|
103
|
+
|
|
104
|
+
- `Role`: exposure / outcome / covariate / eligibility
|
|
105
|
+
- `Dict. sheet & row`: e.g. `5-1.복부초음파 r12` — mandatory if a DB dictionary exists
|
|
106
|
+
- `Dict. verbatim`: full code→meaning string copied from the dictionary — mandatory same condition
|
|
107
|
+
- `Canonical source`: BibTeX key (e.g., `@rinella2023_aasld_masld`)
|
|
108
|
+
- `Definition`: one line, verbatim from guideline where possible
|
|
109
|
+
- `Cutoff`: numeric + units
|
|
110
|
+
- `DB vars`: exact dictionary column names used
|
|
111
|
+
- `Implementation`: SQL/pandas-style pseudocode (e.g., `bmi>=25 & (b_tg>=150 | b_hdl<40)`)
|
|
112
|
+
- `Ad-hoc?`: yes/no. If yes, justification below table
|
|
113
|
+
|
|
114
|
+
3. **Ad-hoc justifications** — for each yes row
|
|
115
|
+
4. **Mapping gaps** — variables in the protocol with no DB equivalent; list proxy / omit / request decisions
|
|
116
|
+
5. **References** — BibTeX block
|
|
117
|
+
|
|
118
|
+
## Non-Goals
|
|
119
|
+
|
|
120
|
+
- Statistical analysis → `/analyze-stats`
|
|
121
|
+
- Manuscript drafting → `/write-paper`
|
|
122
|
+
- Data cleaning / missingness → `/clean-data`
|
|
123
|
+
- Sample size → `/calc-sample-size`
|
|
124
|
+
|
|
125
|
+
## Pipeline Position
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
intake-project → design-study → search-lit → define-variables → write-protocol → analyze-stats → write-paper
|
|
129
|
+
^^^^^^^^^^^^^^^
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
`/orchestrate` should insert this skill between `/search-lit` and `/write-protocol` for any observational cohort or registry study.
|
|
133
|
+
|
|
134
|
+
## Anti-Hallucination
|
|
135
|
+
|
|
136
|
+
Every variable definition, cutoff, and era anchor must be grounded in a verified source — a clinical guideline, a peer-reviewed paper with DOI, or an established registry data dictionary. Never invent a phenotype threshold from the model's prior; if the source is unknown, mark the row `Ad-hoc: yes` and require user confirmation before it propagates into `/write-protocol` or `/analyze-stats`. When citing papers to justify a cutoff, verify the citation via `/search-lit` or `/verify-refs` — do not carry references from memory alone. The output table must carry explicit `source`, `year`, and `guideline_version` columns so downstream skills can re-verify.
|
|
137
|
+
|
|
138
|
+
## Failure Modes to Avoid
|
|
139
|
+
|
|
140
|
+
0. **Ad-hoc DB code interpretation** (the single most costly observational-study error). Interpreting a column value (`status == 0`, `grade == 4`) by its surface reading without consulting the codebook. Tier 0 exists specifically to prevent this. Distinguish from Failure #1: Tier 0 says "once you've picked the DB column, quote the codebook verbatim before using its values." Failure #1 says "don't pick DB columns before picking definitions from literature." Both rules co-exist.
|
|
141
|
+
1. **Dictionary-first framing** — starting from what columns exist, then picking a definition that matches. Always flip: definition first, then map.
|
|
142
|
+
2. **Cutoff drift** — using a different cutoff than the cited guideline without justification (e.g., BMI≥23 cited as WHO Asian while text says ≥25).
|
|
143
|
+
3. **Mixing eras** — 2020 MAFLD criteria with 2023 MASLD criteria in the same analysis. Pick one and note why.
|
|
144
|
+
4. **Silent ad-hoc** — introducing a novel cutoff without the `Ad-hoc: yes` flag.
|
|
145
|
+
5. **Sweep-style /search-lit** — running a generic lit search instead of one focused query per gap variable. Wastes tokens and buries the signal.
|
|
146
|
+
6. **Dose/duration structural-missingness** — operationalizing a dose/duration covariate (pack-years, cessation-years, alcohol grams/week) anchored to a categorical exposure (smoking status, alcohol use) without specifying what the *reference level* (never-smoker, never-drinker) does to the dose. A never-smoker's pack-years is a structural zero, not a missing value; conflating the two collapses the analytic sample under complete-case modeling and lets MICE fabricate a non-zero dose for the unexposed. Operationalize it explicitly — add a row with `Role = covariate` and `Implementation = "IF status == 'never' THEN dose = 0 ELSE measured_value"` — and adjust on the categorical **status** variable, reserving the continuous **dose** for an exposed-only secondary analysis. `/clean-data` (categorical-implied-zero flag) and `/analyze-stats` ("Covariate Pitfalls") enforce this downstream.
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# Canonical Definitions Index (Tier 1)
|
|
2
|
+
|
|
3
|
+
Curated index of high-frequency phenotype/variable definitions for observational research. Each entry gives the authoritative source, year, cutoff, BibTeX key stub, and DOI. **Always quote the cutoff verbatim** — do not paraphrase.
|
|
4
|
+
|
|
5
|
+
Update cadence: review annually or when a major guideline revision drops.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Hepatology
|
|
10
|
+
|
|
11
|
+
### MASLD (Metabolic dysfunction-associated Steatotic Liver Disease)
|
|
12
|
+
- **Source**: Rinella et al., AASLD multi-society Delphi consensus, *Hepatology* 2023
|
|
13
|
+
- **Definition**: Hepatic steatosis (imaging/histology) + ≥1 cardiometabolic risk factor, no other identifiable cause
|
|
14
|
+
- **Cardiometabolic criteria (≥1 of 5)**:
|
|
15
|
+
- BMI ≥25 kg/m² (≥23 for Asian populations) OR WC >94 cm (M) / >80 cm (F)
|
|
16
|
+
- FPG ≥100 mg/dL OR 2h-PG ≥140 OR HbA1c ≥5.7% OR T2DM OR T2DM treatment
|
|
17
|
+
- BP ≥130/85 OR antihypertensive treatment
|
|
18
|
+
- TG ≥150 mg/dL OR lipid-lowering treatment
|
|
19
|
+
- HDL ≤40 (M) / ≤50 (F) mg/dL OR lipid-lowering treatment
|
|
20
|
+
- **BibTeX**: `@rinella2023_aasld_masld`
|
|
21
|
+
- **DOI**: 10.1097/HEP.0000000000000520
|
|
22
|
+
|
|
23
|
+
### MetALD
|
|
24
|
+
- **Source**: Same AASLD 2023 consensus
|
|
25
|
+
- **Definition**: MASLD criteria + moderate alcohol (M 140–350 g/wk, F 70–210 g/wk)
|
|
26
|
+
- **BibTeX**: `@rinella2023_aasld_masld`
|
|
27
|
+
|
|
28
|
+
### ALD (Alcohol-associated Liver Disease)
|
|
29
|
+
- **Source**: AASLD 2023 consensus + Crabb et al., AASLD practice guidance 2020
|
|
30
|
+
- **Definition**: Steatosis + alcohol >350 g/wk (M) / >210 g/wk (F)
|
|
31
|
+
- **BibTeX**: `@crabb2020_aasld_ald`, `@rinella2023_aasld_masld`
|
|
32
|
+
|
|
33
|
+
### MAFLD (legacy, 2020)
|
|
34
|
+
- **Source**: Eslam et al., international expert consensus, *J Hepatol* 2020
|
|
35
|
+
- **BibTeX**: `@eslam2020_mafld`
|
|
36
|
+
- **Note**: Superseded by MASLD (2023) — use only for backwards comparability.
|
|
37
|
+
|
|
38
|
+
### HBV chronic infection
|
|
39
|
+
- **Source**: Terrault et al., AASLD 2022/2018 guidance
|
|
40
|
+
- **Definition**: HBsAg positive ≥6 months
|
|
41
|
+
- **BibTeX**: `@terrault2018_aasld_hbv`
|
|
42
|
+
|
|
43
|
+
### HCV chronic infection
|
|
44
|
+
- **Source**: AASLD-IDSA HCV guidance (latest rolling update at hcvguidelines.org)
|
|
45
|
+
- **Definition**: Anti-HCV positive + HCV RNA detectable
|
|
46
|
+
- **BibTeX**: `@aasld_idsa_hcv_guidance`
|
|
47
|
+
|
|
48
|
+
### Liver fibrosis non-invasive scores
|
|
49
|
+
- **FIB-4**: Sterling et al. 2006. Cutoffs <1.3 exclude advanced fibrosis (<65 y); <2.0 (≥65 y). >2.67 rule-in. `@sterling2006_fib4`
|
|
50
|
+
- **NFS (NAFLD fibrosis score)**: Angulo et al. 2007. `@angulo2007_nfs`
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Metabolic / Endocrine
|
|
55
|
+
|
|
56
|
+
### Type 2 Diabetes
|
|
57
|
+
- **Source**: ADA Standards of Care in Diabetes — 2024, *Diabetes Care*
|
|
58
|
+
- **Definition (any ONE)**:
|
|
59
|
+
- FPG ≥126 mg/dL
|
|
60
|
+
- 2h-PG ≥200 mg/dL on 75g OGTT
|
|
61
|
+
- HbA1c ≥6.5%
|
|
62
|
+
- Classic hyperglycemia symptoms + random PG ≥200
|
|
63
|
+
- Physician diagnosis OR antidiabetic medication
|
|
64
|
+
- **BibTeX**: `@ada2024_standards`
|
|
65
|
+
- **DOI**: 10.2337/dc24-S002
|
|
66
|
+
|
|
67
|
+
### Prediabetes
|
|
68
|
+
- **Source**: ADA 2024
|
|
69
|
+
- **Definition**: FPG 100–125 OR 2h-PG 140–199 OR HbA1c 5.7–6.4%
|
|
70
|
+
|
|
71
|
+
### Metabolic Syndrome
|
|
72
|
+
- **Source**: IDF 2009 harmonized (Alberti et al., *Circulation*) — ≥3 of 5 criteria
|
|
73
|
+
- **Criteria**:
|
|
74
|
+
- WC (ethnicity-specific: Asian M ≥90, F ≥80 cm)
|
|
75
|
+
- TG ≥150 OR treatment
|
|
76
|
+
- HDL <40 (M) / <50 (F) OR treatment
|
|
77
|
+
- BP ≥130/85 OR antihypertensive treatment
|
|
78
|
+
- FPG ≥100 OR T2DM treatment
|
|
79
|
+
- **BibTeX**: `@alberti2009_idf_harmonized`
|
|
80
|
+
- **DOI**: 10.1161/CIRCULATIONAHA.109.192644
|
|
81
|
+
|
|
82
|
+
### Obesity (BMI)
|
|
83
|
+
- **WHO global**: Overweight ≥25, obese ≥30 kg/m². `@who2000_obesity`
|
|
84
|
+
- **WHO Asian (2004, *Lancet*)**: Overweight ≥23, obese ≥25. `@who2004_asian_bmi`
|
|
85
|
+
- **Korean Society for the Study of Obesity (KSSO) 2022**: Same 23/25 thresholds. `@ksso2022_obesity`
|
|
86
|
+
|
|
87
|
+
### Hypertension
|
|
88
|
+
- **ACC/AHA 2017**: ≥130/80 = stage 1. `@whelton2017_accaha_htn`
|
|
89
|
+
- **JNC-8 / ESC (legacy)**: ≥140/90. `@james2014_jnc8`
|
|
90
|
+
- **Pick one explicitly** — do not mix.
|
|
91
|
+
|
|
92
|
+
### Dyslipidemia
|
|
93
|
+
- **Source**: 2018 AHA/ACC/multi-society cholesterol guideline; 2023 update
|
|
94
|
+
- **BibTeX**: `@grundy2019_aha_cholesterol`
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Renal
|
|
99
|
+
|
|
100
|
+
### CKD
|
|
101
|
+
- **Source**: KDIGO 2024 CKD guideline, *Kidney Int*
|
|
102
|
+
- **Definition**: eGFR <60 mL/min/1.73m² OR markers of kidney damage (ACR ≥30 mg/g etc.) ≥3 months
|
|
103
|
+
- **Staging**: G1–G5 by eGFR; A1–A3 by albuminuria
|
|
104
|
+
- **BibTeX**: `@kdigo2024_ckd`
|
|
105
|
+
|
|
106
|
+
### eGFR formulas
|
|
107
|
+
- **CKD-EPI 2021 (race-free)** — *NEJM* 2021, Inker et al. `@inker2021_ckdepi2021`. Current KDIGO-recommended.
|
|
108
|
+
- **CKD-EPI 2009** — legacy, race-based. `@levey2009_ckdepi`
|
|
109
|
+
- **MDRD** — obsolete for clinical use; still seen in older datasets. `@levey2006_mdrd`
|
|
110
|
+
|
|
111
|
+
### Incidental Renal Mass
|
|
112
|
+
- **Source**: ACR White Paper 2018 (Herts et al., *JACR*)
|
|
113
|
+
- **Cutoffs**: <1 cm too small to characterize; ≥1 cm workup per size/attenuation; growth >5 mm/y concerning
|
|
114
|
+
- **BibTeX**: `@herts2018_acr_renal`
|
|
115
|
+
- **DOI**: 10.1016/j.jacr.2017.10.028
|
|
116
|
+
|
|
117
|
+
### Bosniak Classification (cystic renal mass)
|
|
118
|
+
- **Source**: Silverman et al., *Radiology* 2019 update
|
|
119
|
+
- **BibTeX**: `@silverman2019_bosniak`
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Pulmonary
|
|
124
|
+
|
|
125
|
+
### COPD
|
|
126
|
+
- **Source**: GOLD 2024 Report
|
|
127
|
+
- **Definition**: Post-bronchodilator FEV1/FVC <0.70 + compatible symptoms/exposure
|
|
128
|
+
- **Severity (GOLD 1–4)** by FEV1% predicted: ≥80 / 50–79 / 30–49 / <30
|
|
129
|
+
- **BibTeX**: `@gold2024`
|
|
130
|
+
|
|
131
|
+
### Emphysema (imaging)
|
|
132
|
+
- **Source**: Fleischner Society 2015 statement (Lynch et al., *Radiology*)
|
|
133
|
+
- **CT pattern classification**: centrilobular (trace/mild/moderate/confluent/advanced destructive), paraseptal, panlobular
|
|
134
|
+
- **BibTeX**: `@lynch2015_fleischner_emphysema`
|
|
135
|
+
- **DOI**: 10.1148/radiol.2015141579
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Cardiovascular
|
|
140
|
+
|
|
141
|
+
### CAC (Coronary Artery Calcium)
|
|
142
|
+
- **Agatston method**: Agatston et al., *JACC* 1990. `@agatston1990`
|
|
143
|
+
- **MESA percentiles** (age/sex/race): McClelland et al. 2015. `@mcclelland2015_mesa`
|
|
144
|
+
- **Categories**: 0 / 1–99 / 100–399 / ≥400 (widely used)
|
|
145
|
+
|
|
146
|
+
### ASCVD risk
|
|
147
|
+
- **Pooled Cohort Equations**: 2013 ACC/AHA. `@goff2014_pce`
|
|
148
|
+
- **PREVENT (2023)**: AHA new risk calculator, Khan et al., *Circulation*. `@khan2023_prevent`
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Oncology / Imaging incidentalomas
|
|
153
|
+
|
|
154
|
+
### Thyroid nodule
|
|
155
|
+
- **ACR TI-RADS 2017**: Tessler et al., *JACR*. `@tessler2017_tirads`
|
|
156
|
+
|
|
157
|
+
### Gallbladder polyp
|
|
158
|
+
- **European joint guideline 2022**: Foley et al., *Eur Radiol*. `@foley2022_gb_polyp`
|
|
159
|
+
|
|
160
|
+
### Adrenal incidentaloma
|
|
161
|
+
- **ACR 2023 white paper**: Mayo-Smith et al. `@mayosmith2023_acr_adrenal`
|
|
162
|
+
- **ESE 2023 clinical**: Fassnacht et al., *Eur J Endocrinol*. `@fassnacht2023_ese_adrenal`
|
|
163
|
+
|
|
164
|
+
### Pancreatic cystic lesion
|
|
165
|
+
- **ACR 2017 white paper**: Megibow et al., *JACR*. `@megibow2017_acr_pancreas`
|
|
166
|
+
|
|
167
|
+
### H. pylori / gastric
|
|
168
|
+
- **Maastricht VI / Florence Consensus 2022**: Malfertheiner et al., *Gut*. `@malfertheiner2022_maastricht6`
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Alcohol exposure
|
|
173
|
+
|
|
174
|
+
### Standard drink (Korea)
|
|
175
|
+
- 1 drink ≈ 10 g ethanol (KNHANES; KCDC standard-drink definition)
|
|
176
|
+
- ALD cutoffs above use grams/week, not drinks/week — convert when operationalizing.
|
|
177
|
+
|
|
178
|
+
### AUDIT-C / AUDIT
|
|
179
|
+
- Bush et al. 1998; Saunders et al. 1993. `@bush1998_auditc`, `@saunders1993_audit`
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## How to extend this file
|
|
184
|
+
|
|
185
|
+
1. Add a new subsection under the appropriate organ/domain.
|
|
186
|
+
2. Cite the authoritative guideline/consensus (not a secondary review).
|
|
187
|
+
3. Quote the cutoff exactly — include units.
|
|
188
|
+
4. Provide BibTeX key stub + DOI.
|
|
189
|
+
5. If multiple competing guidelines exist (e.g., HTN 130 vs 140), list both and note "pick one explicitly."
|
|
190
|
+
6. Commit with message: `define-variables: add {construct} canonical definition ({guideline year})`.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
schema_version: 2
|
|
2
|
+
name: define-variables
|
|
3
|
+
layer: C
|
|
4
|
+
owner_domain: variable_operationalization
|
|
5
|
+
|
|
6
|
+
when_to_use: "Turn a data dictionary + research question into a citation-backed table of exposure/outcome/covariate definitions, cutoffs, and DB variable mappings."
|
|
7
|
+
when_NOT_to_use: "Drafting Methods prose (use write-protocol/write-paper); finding literature (use search-lit)."
|
|
8
|
+
|
|
9
|
+
inputs:
|
|
10
|
+
- "data dictionary"
|
|
11
|
+
- "research question"
|
|
12
|
+
- "candidate literature"
|
|
13
|
+
outputs:
|
|
14
|
+
- "variable operationalization table (definitions, cutoffs, DB mappings)"
|
|
15
|
+
side_effects:
|
|
16
|
+
- writes_project_artifacts
|
|
17
|
+
downstream_consumers:
|
|
18
|
+
- write-protocol
|
|
19
|
+
- analyze-stats
|
|
20
|
+
forbidden_actions:
|
|
21
|
+
- define_phenotype_without_dictionary_citation
|
|
22
|
+
- invent_cutoff_without_literature_source
|
|
23
|
+
|
|
24
|
+
# v2.1 quality card
|
|
25
|
+
purpose: "Produce a literature-grounded, dictionary-cited operationalization table that prevents ad-hoc phenotype definitions."
|
|
26
|
+
safety_boundaries:
|
|
27
|
+
- "Every DB variable interpretation quotes the data dictionary verbatim (dictionary-first)."
|
|
28
|
+
- "Cutoffs cite a canonical literature source; unsupported definitions are flagged, not invented."
|
|
29
|
+
known_limitations:
|
|
30
|
+
- "Quality depends on a complete data dictionary; silent dictionary gaps block definitions."
|
|
31
|
+
- "No standalone demo; output is reviewed against the dictionary and sources."
|
|
32
|
+
validation_commands:
|
|
33
|
+
- "cross-check each row's dictionary citation against the source dictionary"
|
|
34
|
+
evidence_surface: manual_workflow
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Variable Operationalization — {{PROJECT_SHORT_TITLE}}
|
|
2
|
+
|
|
3
|
+
- **Research question**: {{ONE_SENTENCE_Q}}
|
|
4
|
+
- **Cohort**: {{COHORT_NAME_TYPE}} (e.g., Institutional Health Screening Cohort, retrospective)
|
|
5
|
+
- **Author**: {{AUTHOR_NAME}}
|
|
6
|
+
- **Last updated**: {{YYYY-MM-DD}}
|
|
7
|
+
- **Upstream artifacts**: `design_study.md`, `search_lit_results.md` (if present)
|
|
8
|
+
|
|
9
|
+
## Operationalization table
|
|
10
|
+
|
|
11
|
+
| # | Variable | Role | Dict. sheet & row | Dict. verbatim | Canonical source | Definition | Cutoff | DB vars | Implementation | Ad-hoc? |
|
|
12
|
+
|---|----------|------|-------------------|----------------|------------------|------------|--------|---------|----------------|---------|
|
|
13
|
+
| 1 | {{var}} | exposure | `{{sheet}} r{{N}}` | `{{code→meaning verbatim from dictionary}}` | @bibkey | verbatim from guideline | value + units | `col_a, col_b` | `col_a>=X & col_b==Y` | no |
|
|
14
|
+
| 2 | {{var}} | outcome | `{{sheet}} r{{N}}` | `{{verbatim}}` | @bibkey | ... | ... | ... | ... | no |
|
|
15
|
+
| 3 | {{var}} | covariate | `{{sheet}} r{{N}}` | `{{verbatim}}` | @bibkey | ... | ... | ... | ... | yes |
|
|
16
|
+
| 4 | {{var}} | eligibility | `{{sheet}} r{{N}}` | `{{verbatim}}` | @bibkey | ... | ... | ... | ... | no |
|
|
17
|
+
|
|
18
|
+
Roles: `exposure` / `outcome` / `covariate` / `eligibility`
|
|
19
|
+
|
|
20
|
+
**Dict. sheet & row / Dict. verbatim (mandatory for DB-backed projects)**:
|
|
21
|
+
- Citation format example (categorical): sheet = `{{dictionary_sheet}}`, row = `r{{N}}`, verbatim = `0={{meaning}}, 1={{meaning}}, ...` (copied exactly from the codebook).
|
|
22
|
+
- **Mandatory** for observational studies that have a data dictionary (e.g., NHIS, KNHANES, UK Biobank, institutional EMR / health-screening registries) — it cannot be left blank. Record the project-level policy in `DICTIONARY_FIRST_POLICY.md` (or a shared config) in the repo.
|
|
23
|
+
- For a code value not specified in the dictionary → hold off filling that row until you have asked the DB owner / data steward and received an answer.
|
|
24
|
+
- Self-evident continuous variables such as BMI/SBP may be marked `dict: n/a (continuous)`. The cutoff still requires a canonical source.
|
|
25
|
+
|
|
26
|
+
## Ad-hoc justifications
|
|
27
|
+
|
|
28
|
+
For each row flagged `Ad-hoc: yes`, document:
|
|
29
|
+
|
|
30
|
+
### {{variable_name}}
|
|
31
|
+
|
|
32
|
+
- **Why no canonical source**: e.g., no guideline for this subgroup; novel combination of existing criteria
|
|
33
|
+
- **Chosen rule**: precise cutoff / logic
|
|
34
|
+
- **Sensitivity plan**: alternative cutoff to test in sensitivity analysis
|
|
35
|
+
- **Reviewer-facing justification**: 1-2 sentences that will appear in Methods
|
|
36
|
+
|
|
37
|
+
## Mapping gaps
|
|
38
|
+
|
|
39
|
+
Variables defined in the protocol but NOT directly available in the DB:
|
|
40
|
+
|
|
41
|
+
| Protocol variable | DB status | Decision |
|
|
42
|
+
|-------------------|-----------|----------|
|
|
43
|
+
| {{name}} | not available | proxy with `...` / request from DB owner / drop |
|
|
44
|
+
|
|
45
|
+
## References
|
|
46
|
+
|
|
47
|
+
```bibtex
|
|
48
|
+
@article{rinella2023_aasld_masld,
|
|
49
|
+
author = {Rinella, Mary E and others},
|
|
50
|
+
title = {A multisociety {Delphi} consensus statement on new fatty liver disease nomenclature},
|
|
51
|
+
journal = {Hepatology},
|
|
52
|
+
year = {2023},
|
|
53
|
+
doi = {10.1097/HEP.0000000000000520}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
% add one entry per cited canonical source
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Verification log
|
|
60
|
+
|
|
61
|
+
- [ ] Tier 1 lookups documented (guideline year, cutoff quoted)
|
|
62
|
+
- [ ] Tier 2 `/search-lit` queries logged (query string + papers retained)
|
|
63
|
+
- [ ] Tier 3 `/verify-refs` passed (0 unverified citations)
|
|
64
|
+
- [ ] No silent ad-hoc — every deviation flagged and justified
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deidentify
|
|
3
|
+
description: >
|
|
4
|
+
De-identify clinical research data before LLM-assisted analysis. Standalone Python CLI
|
|
5
|
+
detects PHI via regex + heuristics with 10 country locale packs (kr, us, jp, cn, de, uk,
|
|
6
|
+
fr, ca, au, in). Interactive terminal review. No LLM touches raw data — the script runs
|
|
7
|
+
locally without any network or AI calls.
|
|
8
|
+
triggers: deidentify, de-identify, anonymize, 비식별화, 익명화, remove PHI, remove PII, strip patient info
|
|
9
|
+
tools: Read, Bash, Glob
|
|
10
|
+
model: inherit
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# De-identification Skill
|
|
14
|
+
|
|
15
|
+
You are guiding a medical researcher through data de-identification. The actual
|
|
16
|
+
de-identification is performed by a **standalone Python script** that runs WITHOUT
|
|
17
|
+
any LLM. Your role is to explain, guide, and verify — not to see or process raw
|
|
18
|
+
PHI data.
|
|
19
|
+
|
|
20
|
+
## Critical Safety Rules
|
|
21
|
+
|
|
22
|
+
1. **NEVER ask the user to paste, show, or upload raw data containing PHI.**
|
|
23
|
+
The script processes data locally. You never need to see patient-level data.
|
|
24
|
+
2. **NEVER read or display the mapping file contents.** It contains original PHI values.
|
|
25
|
+
3. **You may read** the scan report (column classifications, no raw values), audit log
|
|
26
|
+
(SHA-256 hashes only), and de-identified output (PHI already removed).
|
|
27
|
+
4. **Always communicate in the user's preferred language** about the process, but use
|
|
28
|
+
English for technical terms (PHI, HIPAA, Safe Harbor, etc.).
|
|
29
|
+
|
|
30
|
+
## Reference Files
|
|
31
|
+
|
|
32
|
+
- `${CLAUDE_SKILL_DIR}/references/hipaa_18_identifiers.md` — HIPAA Safe Harbor checklist
|
|
33
|
+
- `${CLAUDE_SKILL_DIR}/references/korean_phi_patterns.md` — Korean-specific regex patterns
|
|
34
|
+
- `${CLAUDE_SKILL_DIR}/references/date_shift_guide.md` — Date shifting best practices
|
|
35
|
+
|
|
36
|
+
Read relevant references before advising the researcher.
|
|
37
|
+
|
|
38
|
+
## Prerequisites
|
|
39
|
+
|
|
40
|
+
- Python 3.10+
|
|
41
|
+
- `openpyxl` (for .xlsx files): `pip install openpyxl`
|
|
42
|
+
- Supported formats: CSV, TSV, Excel (.xlsx)
|
|
43
|
+
|
|
44
|
+
## Five-Phase Workflow
|
|
45
|
+
|
|
46
|
+
### Phase 1: Assessment
|
|
47
|
+
|
|
48
|
+
Ask the researcher:
|
|
49
|
+
1. What file format is the data? (CSV, Excel, etc.)
|
|
50
|
+
2. What PHI do you expect in the data? (names, dates, IDs, etc.)
|
|
51
|
+
3. Does your IRB require specific de-identification documentation?
|
|
52
|
+
4. Do you need to re-identify later? (affects mapping file choice)
|
|
53
|
+
|
|
54
|
+
Based on answers, recommend the appropriate command:
|
|
55
|
+
- Full pipeline (most common): `python deidentify.py full <file> --locale <code>`
|
|
56
|
+
- Step-by-step (cautious): `python deidentify.py scan <file> --locale <code>` first
|
|
57
|
+
|
|
58
|
+
Available locale codes: `kr` (Korea), `us` (USA), `jp` (Japan), `cn` (China), `de` (Germany),
|
|
59
|
+
`uk` (United Kingdom), `fr` (France), `ca` (Canada), `au` (Australia), `in` (India).
|
|
60
|
+
If `--locale` is omitted, the script shows an interactive country selection menu.
|
|
61
|
+
Users can provide a custom locale file via `--locale-file custom.json`.
|
|
62
|
+
|
|
63
|
+
### Phase 2: Script Execution
|
|
64
|
+
|
|
65
|
+
Guide the researcher to run the script. The script is located at:
|
|
66
|
+
```
|
|
67
|
+
${CLAUDE_SKILL_DIR}/deidentify.py
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Full pipeline** (recommended for most users):
|
|
71
|
+
```bash
|
|
72
|
+
python ${CLAUDE_SKILL_DIR}/deidentify.py full data.xlsx \
|
|
73
|
+
--locale kr \
|
|
74
|
+
--output-dir ./deidentified/ \
|
|
75
|
+
--auto-accept-safe
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Step-by-step** (for careful review):
|
|
79
|
+
```bash
|
|
80
|
+
# Step 1: Scan
|
|
81
|
+
python ${CLAUDE_SKILL_DIR}/deidentify.py scan data.xlsx --locale kr --output-dir ./deidentified/
|
|
82
|
+
|
|
83
|
+
# Step 2: Review (interactive)
|
|
84
|
+
python ${CLAUDE_SKILL_DIR}/deidentify.py review ./deidentified/scan_report.json
|
|
85
|
+
|
|
86
|
+
# Step 3: Apply
|
|
87
|
+
python ${CLAUDE_SKILL_DIR}/deidentify.py apply ./deidentified/reviewed_report.json
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Options:**
|
|
91
|
+
- `--locale CODE`: Country locale for PHI patterns (kr, us, jp, cn, de, uk, fr, ca, au, in)
|
|
92
|
+
- `--locale-file PATH`: Custom locale JSON file (copy `locales/_template.json` to create one)
|
|
93
|
+
- `--auto-accept-safe`: Skip confirmation for columns classified as SAFE (faster for large datasets)
|
|
94
|
+
- `--hash-mapping`: Store SHA-256 hashes instead of original values in mapping file (one-way, more secure)
|
|
95
|
+
- `--output-dir`: Where to save de-identified file, mapping, and audit log
|
|
96
|
+
- `-v/--verbose`: Enable debug logging
|
|
97
|
+
|
|
98
|
+
### Phase 3: Interactive Review Guidance
|
|
99
|
+
|
|
100
|
+
The script's terminal review has three passes:
|
|
101
|
+
|
|
102
|
+
1. **Pass 1 — Column Classification**: Each column is shown as PHI / REVIEW_NEEDED / SAFE.
|
|
103
|
+
The researcher confirms or overrides each classification.
|
|
104
|
+
2. **Pass 2 — Undecided Items**: Columns that weren't resolved in Pass 1 get a second look
|
|
105
|
+
with more sample values displayed.
|
|
106
|
+
3. **Pass 3 — Final Summary**: A table of all planned actions. The researcher can edit
|
|
107
|
+
individual decisions before confirming.
|
|
108
|
+
|
|
109
|
+
Coach the researcher. Deliver these prompts in the researcher's preferred language:
|
|
110
|
+
- "Columns classified as PHI are anonymized by default. Press 'k' to keep the original value."
|
|
111
|
+
- "REVIEW_NEEDED are columns the script could not classify. Check the sample values and decide."
|
|
112
|
+
- "SAFE means no PHI detected. Press 'r' to request re-review if any column looks suspicious."
|
|
113
|
+
|
|
114
|
+
### Phase 4: Verify and Document
|
|
115
|
+
|
|
116
|
+
After the script completes, help the researcher verify:
|
|
117
|
+
|
|
118
|
+
1. **Read the audit log** (safe — contains only hashes):
|
|
119
|
+
```bash
|
|
120
|
+
cat ./deidentified/audit_log.csv | head -20
|
|
121
|
+
```
|
|
122
|
+
Verify the number of changes, affected columns, and PHI types.
|
|
123
|
+
|
|
124
|
+
2. **Spot-check the de-identified file** (safe — PHI already removed):
|
|
125
|
+
Read a few rows to confirm pseudonyms (P0001, etc.), date shifts, and [REDACTED] markers
|
|
126
|
+
appear where expected.
|
|
127
|
+
|
|
128
|
+
3. **Check that sensitive columns are actually removed**:
|
|
129
|
+
Verify no original names, phone numbers, or RRN values remain.
|
|
130
|
+
|
|
131
|
+
4. **Mapping file security**:
|
|
132
|
+
- Remind the researcher: "mapping.json contains original patient identifiers — treat it as restricted."
|
|
133
|
+
- Recommend storing it separately from the de-identified data
|
|
134
|
+
- File permissions are automatically set to 0600 (owner-only)
|
|
135
|
+
|
|
136
|
+
### Phase 5: Documentation
|
|
137
|
+
|
|
138
|
+
Generate a de-identification methods paragraph for the manuscript or IRB:
|
|
139
|
+
|
|
140
|
+
Template:
|
|
141
|
+
> Protected health information was removed from the dataset prior to analysis using
|
|
142
|
+
> a rule-based de-identification tool (deidentify.py, medsci-skills) with the [COUNTRY]
|
|
143
|
+
> locale pattern pack. The tool scanned column names and cell values using regex patterns
|
|
144
|
+
> for country-specific identifiers (e.g., national ID numbers, phone numbers), email
|
|
145
|
+
> addresses, dates, and addresses. Each column classification was reviewed by the
|
|
146
|
+
> researcher in an interactive terminal session. Names were replaced with pseudonyms
|
|
147
|
+
> (P0001, P0002, ...), dates were shifted by a random per-patient offset (±365 days)
|
|
148
|
+
> preserving relative temporal intervals, and direct identifiers (phone numbers, email
|
|
149
|
+
> addresses, national ID numbers) were suppressed. A total of [N] cells across [M]
|
|
150
|
+
> columns were de-identified. The de-identification mapping file was stored separately
|
|
151
|
+
> under restricted access (file permissions 0600).
|
|
152
|
+
|
|
153
|
+
Customize based on the actual audit log statistics.
|
|
154
|
+
|
|
155
|
+
## Cross-Skill Integration
|
|
156
|
+
|
|
157
|
+
- **deidentify** sits BEFORE `clean-data` in the research pipeline
|
|
158
|
+
- After de-identification, hand off to `/clean-data` for data quality profiling
|
|
159
|
+
- `/analyze-stats` can safely process the de-identified output
|
|
160
|
+
- `/write-paper` Methods section should reference the de-identification process
|
|
161
|
+
- `/write-protocol` can use the HIPAA/PIPA reference files for protocol documentation
|
|
162
|
+
|
|
163
|
+
## Output Files
|
|
164
|
+
|
|
165
|
+
| File | Contains PHI? | Safe for Claude? | Purpose |
|
|
166
|
+
|------|:------------:|:----------------:|---------|
|
|
167
|
+
| `*_deidentified.xlsx/csv` | No | Yes | De-identified data for analysis |
|
|
168
|
+
| `mapping.json` | **YES** | **No** | Original ↔ pseudonym mapping |
|
|
169
|
+
| `audit_log.csv` | No (hashes only) | Yes | What was changed and where |
|
|
170
|
+
| `scan_report.json` | No | Yes | Column classification results |
|
|
171
|
+
| `reviewed_report.json` | No | Yes | Researcher-reviewed classifications |
|
|
172
|
+
|
|
173
|
+
## Scope and Limitations
|
|
174
|
+
|
|
175
|
+
**Supported (v1)**:
|
|
176
|
+
- Structured tabular data: CSV, TSV, Excel (.xlsx)
|
|
177
|
+
- 10 country locales with country-specific PHI patterns:
|
|
178
|
+
- Korea (kr): RRN (주민번호), phone, email, address, Hangul names, dates
|
|
179
|
+
- USA (us): SSN, US phone, US address, zip codes
|
|
180
|
+
- Japan (jp): マイナンバー, Japanese phone, 都道府県 address, Kanji names
|
|
181
|
+
- China (cn): 身份证号, Chinese phone, 省市区 address, Chinese names
|
|
182
|
+
- Germany (de): Steuer-ID, German phone, Straße address
|
|
183
|
+
- UK (uk): NHS Number, NI Number, UK phone, postcodes
|
|
184
|
+
- France (fr): NIR/INSEE, French phone, Rue address
|
|
185
|
+
- Canada (ca): SIN, Canadian phone, postal codes
|
|
186
|
+
- Australia (au): TFN, Medicare number, AU phone
|
|
187
|
+
- India (in): Aadhaar, PAN, Indian phone, pin codes
|
|
188
|
+
- Universal patterns (all locales): email, ISO dates, high-cardinality numeric IDs (MRN)
|
|
189
|
+
- English column names recognized across all locales
|
|
190
|
+
- Custom locale support via `--locale-file` with template
|
|
191
|
+
- Pseudonymization, date shifting, ID replacement, suppression
|
|
192
|
+
|
|
193
|
+
**NOT supported (planned for v2)**:
|
|
194
|
+
- DICOM image metadata (PS3.15 Annex E) — requires pydicom
|
|
195
|
+
- Clinical free-text NER (clinical notes, radiology reports)
|
|
196
|
+
- Automated k-anonymity / l-diversity assessment
|
|
197
|
+
- SPSS (.sav), SAS (.sas7bdat), or other statistical formats
|
|
198
|
+
|
|
199
|
+
## Anti-Hallucination
|
|
200
|
+
|
|
201
|
+
- **Never fabricate file paths, URLs, DOIs, or package names.** Verify existence before recommending.
|
|
202
|
+
- **Never invent journal metadata, impact factors, or submission policies** without verification at the journal's website.
|
|
203
|
+
- If a tool, package, or resource does not exist or you are unsure, say so explicitly rather than guessing.
|