{"id":13812710,"url":"https://github.com/aces/DICAT","last_synced_at":"2025-05-14T22:31:03.514Z","repository":{"id":13318987,"uuid":"16005675","full_name":"aces/DICAT","owner":"aces","description":"Tool to anonymize DICOM data headers.","archived":false,"fork":false,"pushed_at":"2024-04-10T13:05:56.000Z","size":57182,"stargazers_count":44,"open_issues_count":7,"forks_count":25,"subscribers_count":31,"default_branch":"2.3-dev","last_synced_at":"2025-04-14T15:50:40.592Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aces.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-01-17T16:54:37.000Z","updated_at":"2024-12-30T16:54:51.000Z","dependencies_parsed_at":"2024-06-24T01:01:41.671Z","dependency_job_id":"a580fac8-2993-4446-8da2-81fb99549302","html_url":"https://github.com/aces/DICAT","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aces%2FDICAT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aces%2FDICAT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aces%2FDICAT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aces%2FDICAT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aces","download_url":"https://codeload.github.com/aces/DICAT/tar.gz/refs/heads/2.3-dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254239470,"owners_count":22037714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T04:00:54.710Z","updated_at":"2025-05-14T22:30:58.422Z","avatar_url":"https://github.com/aces.png","language":"Python","funding_links":[],"categories":["Libraries"],"sub_categories":["Python"],"readme":"# DICAT (DICOM Anonymization Tool)\r\n\r\nDICAT is a simple graphical tool that facilitates DICOM (Digital Imaging and \r\nCommunications in Medicine) de-identification directly on a local workstation. \r\nIt was designed to work on all major operating systems (Windows, Linux and OSX) \r\nand is very light in terms of dependencies (Python). Binaries (with no \r\ndependencies) have been compiled for all operating systems and made available \r\nwith each [release of DICAT](https://github.com/aces/DICAT/releases).\r\n\r\nWith the increasing use of web-based database systems, such as \r\n[LORIS](http://www.loris.ca) \r\n([Das *et al.*, 2011](http://journal.frontiersin.org/article/10.3389/fninf.2011.00037/full), \r\n[Das *et al.*, 2016](http://www.sciencedirect.com/science/article/pii/S1053811915008009)), \r\nfor large scale imaging studies, de-identification of DICOM datasets becomes a \r\nrequirement before they can be uploaded in such databases.\r\n\r\n![Flow Chart](docs/images/TypicFlowChartOfDICOMdeidentification.png)\r\n\r\n***Typical Flow Chart of DICOM de-identification.***\r\n\r\nBefore DICOM datasets can be uploaded into a web-based database, identifying \r\ninformation stored in the DICOM header (such as patient name, date of birth) \r\nshould be removed.\r\n\r\nDICAT produces two archival outputs: a back-up of the original DICOM files, and \r\na de-identified DICOM dataset that can then be uploaded or transferred to other \r\nsystems.\r\n\r\nDICAT also features an ID key log that can be used to keep a record of the \r\noriginal candidate name (participant/patient) linked to their anonymized study \r\nidentifier, for reference by study coordinators. \r\n\r\nDICAT was first developed during the \r\n[2014 and 2015 brainhacks](http://brainhack.org) held at the \r\n[Organization of Human Brain Mapping (OHBM)](http://www.humanbrainmapping.org/i4a/pages/index.cfm?pageid=1) \r\nconferences.\r\n\r\n## How to install and run DICAT\r\n\r\nInstallation instructions vary depending on the operating system used. \r\nSee below for detailed information.\r\n\r\nRunning DICAT will open a window with three different tabs:\r\n\r\n* A simple **\"Welcome to DICAT\"** tab giving a short description of the tool\r\n* A **\"DICOM de-identifier\"** tab, in which DICOM de-identification will take place \r\n* An **\"ID Key\"** tab, containing the key between candidates' name and their IDs\r\n\r\n![Welcome page](docs/images/Welcome_DicAT.png)\r\n\r\n***Welcome page of DICAT.***\r\n\r\n### Using DICAT executables/applications\r\n\r\nExecutables of DICAT have been created for most systems and can be found with \r\neach [release](https://github.com/aces/DICAT/releases) of DICAT in the Github \r\nrepository. Download the executable relevant to your system and move it to any \r\nfolder of your choice.\r\n\r\nTo open DICAT, simply double click on the executable.\r\n\r\nPlease note that for some obscure reason, DICAT is extremely slow to run on \r\nWindows OS.\r\n\r\n### From the source code\r\n\r\n###### Requirements \r\n\r\nBefore running DICAT, make sure your system contains a \r\n[Python 3](https://www.python.org) compiler with the \r\n[TkInter](https://wiki.python.org/moin/TkInter) library (usually, TkInter comes \r\nby default with most Python installations).\r\n\r\nFor Ubuntu distributions, TkInter can be installed via apt-get:\r\n```sudo apt-get install python-tk```\r\n\r\nThe [PyDICOM](https://pydicom.github.io/) \r\npackage is also required by DICAT. \r\n\r\nFor most platform, PyDICOM can be installed via `pip`: \r\n```pip install pydicom``` \r\n\r\n\r\n###### DICAT installation\r\n\r\n\r\nTo install DICAT source code on a computer, download and save the content of \r\nthe current Github repository into a workstation.\r\n\r\nDICAT can be started by executing `DICAT.py` script with a Python compiler. \r\nOn UNIX computers (Linux and Mac OS X), open a terminal, go to the main \r\ndirectory of DICAT source code (`dicat` directory) and run the following:\r\n```python DICAT.py```\r\n\r\n\r\n## How to use the DICOM de-identifier of DICAT?\r\n\r\n\r\n![DICOM deidentifier 1](docs/images/DICOM_deidentification.png)\r\n\r\n***DICOM de-identification with the DICAT GUI*** \r\n\r\nIn the *\"DICOM de-identifier\"* tab (1), use the select button (2) to choose a \r\ndirectory containing DICOM files to de-identify.\r\n\r\nOnce a directory containing DICOM files have been selected (as described in the \r\nabove section), the DICOM fields can be viewed when clicking on the \r\n*“View DICOM fields”* button (3).\r\n\r\nThe DICOM identifiable fields will be displayed in a table with editable fields (4). \r\n\r\nUsers can choose to delete all identifiable fields using the *“Clear All Fields”* \r\nbutton (5). \r\n\r\nUsers can also directly edit the fields (6) in the table and all values present in \r\nthe table will be inserted into the corresponding DICOM fields in the imaging files.\r\n\u003e Note that the PatientName field is required (7) and will need to be filled \r\nwith new IDs in order to label the scan for that session.\r\n\r\nFinally, once the user has finalized the edits, clicking on the *“De-identify”* \r\nbutton (8) will run the de-identification tool on the DICOM dataset. \r\n\r\n***Mass DICOM de-identification using `mass_deidentify.py`***\r\n\r\nThe script `mass_deidentify.py` in the `dicat` directory allows a user to \r\nmass de-identify a series of DICOM studies. Running `mass_deidentify.py -h` \r\nwill display the following information on how to run the script:\r\n\r\n![Mass_deidentify_help](docs/images/mass_deidentify_help.png)\r\n\r\n## How to use the ID Key of DICAT\r\n\r\nThe ID Key feature of DICAT allows storage of the key between identifiable \r\ncandidates's information (*Real Name* and *Date of Birth*) and its study’s \r\nidentifier. This information will be stored locally on the workstation within \r\nan XML file (candidate.xml) in DICAT's directory. See the following figure for \r\ndetailed information on how to use this feature.\r\n\r\n![ID Key](docs/images/ID_Mapper.png)\r\n\r\n***ID key feature of DICAT.*** \r\n\r\nThis feature (1) allows storage of the mapping information between candidates’s \r\ninformation and study IDs. This information will be stored in an XML file that \r\ncan be either created (2) or opened (3). Changes will be automatically saved. \r\n\r\nA candidate (participant/patient) can be looked up using the \r\n*“Search candidate”* button (5) after having entered either the *“Identifier”* \r\nor the *“Real Name”* text fields available in (4). \r\n\r\nThe *“Clear fields”* button (6) allows clearing the text in those text fields. \r\n\r\nA new candidate can be registered using the *“Add candidate”* button (7) after \r\nhaving entered the *“Identifier”*, *“Real Name”* and *“Date of birth”* \r\ninformation in the text fields of (4). \r\n\r\nClicking on a subject row (8) of the table displayed at the bottom of the \r\napplication will automatically populate the text fields (4) with the \r\ninformation of the candidate. \r\n\r\nThe *“Real Name”* or *“Date of birth”* of that candidate can be edited if \r\nneeded by altering the field and clicking on the *“Edit candidate”* button (9). \r\n\r\nFinally, the data table of candidate is sortable by clicking on any of the \r\ncolumn headers (10).\r\n\r\n\r\n## Authors\r\n\r\nAyan Sengupta \u003cuam111@gmail.com\u003e              - Concept, Pydicom implementation   \r\n\r\nCecile Madjar \u003ccecile.madjar@gmail.com\u003e       - GUI implementation, PyDICOM implementation, python integration of DICOM-toolkit, ID key\r\n\r\nDave MacFarlane \u003cdavid.macfarlane2@mcgill.ca\u003e - ID Key\r\n\r\nSamir Das \u003csamir.das@mcgill.ca\u003e               - Concept and guidance\r\n\r\nDaniel Krötz \u003cd.kroetz@fz-juelich.de\u003e         - Documentation, testing on Windows\r\n\r\nChristine Rogers \u003cchristine.rogers@mcgill.ca\u003e - Documentation\r\n\r\nLeigh Evans \u003cevansleigh26@gmail.com\u003e          - Video tutorial\r\n\r\nDerek Lo \u003cderek.lo@mcgill.ca\u003e                 - Logo design\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faces%2FDICAT","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faces%2FDICAT","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faces%2FDICAT/lists"}