DICOM Anonymizer
Structured DICOM de-identification support for research preparation workflows.
Quick Check
python -m py_compile scripts/main.py
Audit-Ready Commands
python -m py_compile scripts/main.py
python scripts/main.py --help
python scripts/smoke_test.py
When to Use
- Prepare imaging data for research sharing
- Batch-anonymize DICOM folders while preserving study linkage
- Review whether a workflow still needs manual PHI QA
- Generate audit logs for compliance documentation
Workflow
- Confirm the input type, output target, batch needs, and whether study linkage must be preserved.
- Check whether the request is asking for script execution, audit-log planning, or a manual anonymization checklist.
- Use the packaged script for supported local workflows; if dependencies or files are missing, provide a bounded fallback rather than claiming successful anonymization.
- Return the anonymization plan or result with assumptions, preserved identifiers, and remaining manual QA requirements.
- If the request exceeds supported scope, stop and state the specific boundary.
Parameters
| Parameter |
Type |
Required |
Default |
Description |
--input, -i |
string |
Yes |
- |
Input DICOM file or directory |
--output, -o |
string |
Yes |
- |
Output DICOM file or directory |
--batch, -b |
flag |
No |
false |
Enable directory processing |
--preserve-studies |
flag |
No |
false |
Preserve study linkage with pseudonyms |
--keep-tags |
string |
No |
- |
Comma-separated tags to preserve |
--remove-private |
flag |
No |
true |
Remove private tags |
--audit-log, -a |
string |
No |
- |
Optional JSON audit log path |
--overwrite |
flag |
No |
false |
Allow overwriting output files |
Usage
# Single file
python scripts/main.py --input scan.dcm --output anonymized.dcm
# Batch directory
python scripts/main.py --input ./dicoms/ --output ./anon/ --batch --preserve-studies
# With audit log
python scripts/main.py --input scan.dcm --output anon.dcm --audit-log audit.json
# Keep specific tags
python scripts/main.py --input scan.dcm --output anon.dcm --keep-tags "PatientAge,StudyDate"
Returns
- Anonymized DICOM artifact or bounded execution plan
- Summary of preserved and anonymized identifiers
- Explicit reminder of remaining QA steps before external release
Scope Boundaries
- Supports DICOM de-identification workflows, not legal certification
- Does not remove burned-in image annotations from pixel data
- Does not replace institutional privacy review or release approval
- De-anonymization is not supported: SHA-256 hashing used for PHI values is a one-way operation by design. Original patient data cannot be recovered from anonymized files. If you need to trace back to original data, consult your institutional data governance office before anonymizing.
De-anonymization Requests
If asked to recover original patient data or reverse anonymization, respond:
"Anonymization performed by this tool is irreversible by design. PHI values are replaced using one-way SHA-256 hashing — the original data is not retained by this tool and cannot be recovered. If you need access to the original patient data, contact your institutional data governance or privacy office."
Stress-Case Rules
For complex requests, always include these blocks:
- Assumptions
- Hard Constraints
- Anonymization Path
- Residual PHI Risks
- Manual QA Before Release
Input Validation
This skill accepts requests involving DICOM anonymization, PHI-tag removal, research export preparation, or audit-log planning for medical images.
If the user's request does not involve DICOM de-identification — for example, asking to diagnose from images, convert image formats unrelated to PHI removal, or certify HIPAA compliance — do not proceed with the workflow. Instead respond:
"dicom-anonymizer is designed to support DICOM de-identification workflows for research preparation. Your request appears to be outside this scope. Please provide a DICOM input path and output target, or use a more appropriate tool for your task."
References
- references/phi_tags.json — PHI-related DICOM tags used by the packaged workflow
- references/audit-reference.md — Supported scope, audit commands, and fallback boundaries
Output Requirements
Every final response must include:
- Objective or requested deliverable
- Inputs used and assumptions introduced
- Workflow or decision path
- Core result, recommendation, or artifact
- Constraints, risks, caveats, or validation needs
- Unresolved items and next-step checks
Error Handling
- If required inputs are missing, state exactly which fields are missing and request only the minimum additional information.
- If the task goes outside the documented scope, stop instead of guessing or silently widening the assignment.
- If
scripts/main.py fails, report the failure point, summarize what still can be completed safely, and provide a manual fallback.
- Do not fabricate files, citations, data, search results, or execution outcomes.
Response Template
- Objective
- Inputs Received
- Assumptions
- Workflow
- Deliverable
- Risks and Limits
- Next Checks
1---2name: dicom-anonymizer3description: De-identify DICOM medical images by removing PHI tags for research sharing, with audit logging and study-linkage preservation support.4license: MIT5---6# DICOM Anonymizer
7
8Structured DICOM de-identification support for research preparation workflows.
9
10## Quick Check
11
12```bash
13python -m py_compile scripts/main.py
14```
15
16## Audit-Ready Commands
17
18```bash
19python -m py_compile scripts/main.py
20python scripts/main.py --help
21python scripts/smoke_test.py
22```
23
24## When to Use
25
26- Prepare imaging data for research sharing
27- Batch-anonymize DICOM folders while preserving study linkage
28- Review whether a workflow still needs manual PHI QA
29- Generate audit logs for compliance documentation
30
31## Workflow
32
331. Confirm the input type, output target, batch needs, and whether study linkage must be preserved.
342. Check whether the request is asking for script execution, audit-log planning, or a manual anonymization checklist.
353. Use the packaged script for supported local workflows; if dependencies or files are missing, provide a bounded fallback rather than claiming successful anonymization.
364. Return the anonymization plan or result with assumptions, preserved identifiers, and remaining manual QA requirements.
375. If the request exceeds supported scope, stop and state the specific boundary.
38
39## Parameters
40
41| Parameter | Type | Required | Default | Description |
42|-----------|------|----------|---------|-------------|
43| `--input`, `-i` | string | Yes | - | Input DICOM file or directory |
44| `--output`, `-o` | string | Yes | - | Output DICOM file or directory |
45| `--batch`, `-b` | flag | No | false | Enable directory processing |
46| `--preserve-studies` | flag | No | false | Preserve study linkage with pseudonyms |
47| `--keep-tags` | string | No | - | Comma-separated tags to preserve |
48| `--remove-private` | flag | No | true | Remove private tags |
49| `--audit-log`, `-a` | string | No | - | Optional JSON audit log path |
50| `--overwrite` | flag | No | false | Allow overwriting output files |
51
52## Usage
53
54```bash
55# Single file
56python scripts/main.py --input scan.dcm --output anonymized.dcm
57
58# Batch directory
59python scripts/main.py --input ./dicoms/ --output ./anon/ --batch --preserve-studies
60
61# With audit log
62python scripts/main.py --input scan.dcm --output anon.dcm --audit-log audit.json
63
64# Keep specific tags
65python scripts/main.py --input scan.dcm --output anon.dcm --keep-tags "PatientAge,StudyDate"
66```
67
68## Returns
69
70- Anonymized DICOM artifact or bounded execution plan
71- Summary of preserved and anonymized identifiers
72- Explicit reminder of remaining QA steps before external release
73
74## Scope Boundaries
75
76- Supports DICOM de-identification workflows, not legal certification
77- Does not remove burned-in image annotations from pixel data
78- Does not replace institutional privacy review or release approval
79- **De-anonymization is not supported:** SHA-256 hashing used for PHI values is a one-way operation by design. Original patient data cannot be recovered from anonymized files. If you need to trace back to original data, consult your institutional data governance office before anonymizing.
80
81## De-anonymization Requests
82
83If asked to recover original patient data or reverse anonymization, respond:
84> "Anonymization performed by this tool is irreversible by design. PHI values are replaced using one-way SHA-256 hashing — the original data is not retained by this tool and cannot be recovered. If you need access to the original patient data, contact your institutional data governance or privacy office."
85
86## Stress-Case Rules
87
88For complex requests, always include these blocks:
89
901. Assumptions
912. Hard Constraints
923. Anonymization Path
934. Residual PHI Risks
945. Manual QA Before Release
95
96## Input Validation
97
98This skill accepts requests involving DICOM anonymization, PHI-tag removal, research export preparation, or audit-log planning for medical images.
99
100If the user's request does not involve DICOM de-identification — for example, asking to diagnose from images, convert image formats unrelated to PHI removal, or certify HIPAA compliance — do not proceed with the workflow. Instead respond:
101> "dicom-anonymizer is designed to support DICOM de-identification workflows for research preparation. Your request appears to be outside this scope. Please provide a DICOM input path and output target, or use a more appropriate tool for your task."
102
103## References
104
105- [references/phi_tags.json](references/phi_tags.json) — PHI-related DICOM tags used by the packaged workflow
106- [references/audit-reference.md](references/audit-reference.md) — Supported scope, audit commands, and fallback boundaries
107
108## Output Requirements
109
110Every final response must include:
111
112- Objective or requested deliverable
113- Inputs used and assumptions introduced
114- Workflow or decision path
115- Core result, recommendation, or artifact
116- Constraints, risks, caveats, or validation needs
117- Unresolved items and next-step checks
118
119## Error Handling
120
121- If required inputs are missing, state exactly which fields are missing and request only the minimum additional information.
122- If the task goes outside the documented scope, stop instead of guessing or silently widening the assignment.
123- If `scripts/main.py` fails, report the failure point, summarize what still can be completed safely, and provide a manual fallback.
124- Do not fabricate files, citations, data, search results, or execution outcomes.
125
126## Response Template
127
1281. Objective
1292. Inputs Received
1303. Assumptions
1314. Workflow
1325. Deliverable
1336. Risks and Limits
1347. Next Checks