{ "info": { "author": "mrbean-bremen", "author_email": "hansemrbean@googlemail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Healthcare Industry", "License :: OSI Approved :: MIT License", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering :: Medical Science Apps." ], "description": "# dcm-spec-tools\n\n*dcm-spec-tools* is planned to be a collection of simple pure python command line tools which get the input from \nthe DICOM standard in docbook format as provided by [ACR NEMA](http://medical.nema.org/).\n\nCurrently available tools: \n* `validate_iods` checks DICOM files for correct attributes for the given SOP class. \n* `dump_dcm_info` outputs the DICOM tag IDs and values of a given DICOM file.\n\nNote that this is still in an early stage of development.\n\n[pydicom](https://github.com/pydicom/pydicom) is used to read/parse DICOM \nfiles.\n\nInstallation\n------------\nThe latest version is available on pypi and can be installed via\n```\npip install dcm-spec-tools\n```\n\nUsage\n-----\n```\ndump_dcm_info [-r ] [-src ] \nvalidate_iods [-r ] [-src ] [-v] \n```\nUse the `--help` option for each script do get usage info.\n\nAccess to DICOM standard\n------------------------\n\nUpon first start of a tool, part of the latest version of the DICOM standard\nin docbook format is downloaded, parsed, and the needed information saved in \njson files. These files are then used by the tools. Periodically (once a \nmonth), the tools check for a newer version of the DICOM standard and download \nit if found.\n\nIt is also possible to use older versions of the standard via a command line \noption, provided they are still available for download (at the time of \nwriting, standards are available from 2014a to 2018b).\n\ndcm_dump_info\n-------------\n\nThis is a very simple DICOM dump tool with (currently) no options, which uses \nthe DICOM dictionary as read from part 6 of the standard. The output looks \nlike this:\n```\n(py3_test) c:\\dev\\GitHub\\dcm-spec-tools>dump_dcm_info \"c:\\dev\\DICOM Data\\SR\\image12.dcm\"\n(0005,0010) [Unknown] LO 1 [AEGIS_DICOM_2.00]\n(0005,1000) [Unknown] UN 1 [b'\\x00\\x05 \\x08\\x00\\x00\\x00\\n RIGHT \\x00\\x05\\xc1X\\x00\\x00\\x00\\x06 0.09 \\x00\\x05\\xd1X\\x00\\x00\\x00\\x02 0']\n(0008,0008) Image Type CS 0 []\n(0008,0016) SOP Class UID UI 1 [Ultrasound Image Storage (Retired)]\n(0008,0018) SOP Instance UID UI 1 [1.2.840.113680.3.103.775.2873347909.282313.2]\n(0008,0020) Study Date DA 1 [19950119]\n(0008,0030) Study Time TM 1 [092854.0]\n(0008,0050) Accession Number SH 1 [ACN000001]\n(0008,0060) Modality CS 1 [US]\n(0008,0070) Manufacturer LO 1 [Acuson]\n(0008,0090) Referring Physician's Name PN 1 []\n(0008,1010) Station Name SH 1 [QV-00775]\n(0008,1030) Study Description LO 1 [ABDOMEN]\n(0008,1050) Performing Physician's Name PN 1 [KLOFAS,EDWARD]\n(0008,1060) Name of Physician(s) Reading Study PN 1 []\n(0008,1070) Operators' Name PN 1 [DO]\n(0008,1080) Admitting Diagnoses Description LO 1 [RSNA'95 Data Not Delete]\n(0009,0010) [Unknown] LO 1 [AEGIS_DICOM_2.00]\n...\n```\n\nvalidate_iods\n-------------\n\nThis checks a given DICOM file, or all DICOM files recursively in a given \ndirectory, for correct tags for the related SOP class. Only the presence or \nabsence of the tag, and the presence of a tag value is checked, not the \ncontained value itself (a check for correct enumerated values may be added later).\nThis is done by looking up all required and optional modules for this \nSOP class, and checking the tags for these modules. Tags that are not allowed or \nmissing in a module are listed. Parts 3 and 4 of the DICOM standard are used \nto collect the needed information.\nConditions for type 1C and 2C modules and tags are evaluated if possible. \nIf the evaluation fails, the respective modules and tags are considered \noptional. Condition evaluation may fail if:\n- the needed information is not contained in the DICOM file (e.g. verbose \ndescriptions like \"if the Patient is an animal\")\n- the information is related to other DICOM files (e.g. referenced images)\n- the parsing failed because the condition is too complicated, unexpected, \nor due to a bug\n\nThe output for a single file may look like this:\n```\n(py3_test) c:\\dev\\GitHub\\dcm-spec-tools>validate_iods \"c:\\dev\\DICOM Data\\SR\\test.dcm\"\n\nProcessing DICOM file \"c:\\dev\\DICOM Data\\SR\\test.dcm\"\nSOP class is \"1.2.840.10008.5.1.4.1.1.88.33\" (Comprehensive SR IOD)\n\nErrors\n======\nModule \"SR Document Content\":\nTag (0040,A043) (Concept Name Code Sequence) is not allowed due to condition:\n Value Type is equal to \"TEXT\", \"NUM\", \"CODE\", \"DATETIME\", \"DATE\", \"TIME\", \"UIDREF\" or \"PNAME\"\nTag (0040,A300) (Measured Value Sequence) is missing\nTag (0040,A168) (Concept Code Sequence) is missing\nTag (0008,1199) (Referenced SOP Sequence) is missing\nTag (0070,0022) (Graphic Data) is missing\nTag (0070,0023) (Graphic Type) is missing\nTag (3006,0024) (Referenced Frame of Reference UID) is missing\nTag (0040,A130) (Temporal Range Type) is missing\nTag (0040,A138) (Referenced Time Offsets) is missing due to condition:\n Referenced Sample Positions is not present and Referenced DateTime is not present\nTag (0040,A13A) (Referenced DateTime) is missing due to condition:\n Referenced Sample Positions is not present and Referenced Time Offsets is not present\n```\n\n*Note:* No guarantees are given for the correctness of the results. This is \npre-alpha software and mostly thought as a proof of concept.\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/mrbean-bremen/dcm-spec-tools", "keywords": "dicom python", "license": "", "maintainer": "", "maintainer_email": "", "name": "dcm-spec-tools", "package_url": "https://pypi.org/project/dcm-spec-tools/", "platform": "", "project_url": "https://pypi.org/project/dcm-spec-tools/", "project_urls": { "Homepage": "http://github.com/mrbean-bremen/dcm-spec-tools" }, "release_url": "https://pypi.org/project/dcm-spec-tools/0.3.0/", "requires_dist": [ "pydicom" ], "requires_python": "", "summary": "Python DICOM tools using input from DICOM specs in docbook format", "version": "0.3.0" }, "last_serial": 4004939, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "97d06f866ccd57f6402868d4465fa866", "sha256": "8c5416cf7388f8b9ab1b5edc9cf11b27d9525a18f5a4694c7c517cc9a158aed2" }, "downloads": -1, "filename": "dcm-spec-tools-0.1.0.zip", "has_sig": false, "md5_digest": "97d06f866ccd57f6402868d4465fa866", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18907, "upload_time": "2016-12-18T19:47:42", "url": "https://files.pythonhosted.org/packages/f1/19/3929e826622bb98a1978ae864bbb9da8ff7c0cf29c006ebde0a16c170c5f/dcm-spec-tools-0.1.0.zip" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e0a316808082b4c9dbb088bd50029364", "sha256": "6504c2ad71416bf8af48ceacba48ce424bd5727e91dd7206bfa7a249abbb650c" }, "downloads": -1, "filename": "dcm-spec-tools-0.1.1.zip", "has_sig": false, "md5_digest": "e0a316808082b4c9dbb088bd50029364", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23005, "upload_time": "2017-01-15T16:16:44", "url": "https://files.pythonhosted.org/packages/a6/2e/a997459cfa5307da6aec24166acbec42747a1140913c814d9f243944acca/dcm-spec-tools-0.1.1.zip" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "59dfbf826138ba124b83238c1ed505ab", "sha256": "452321935db342c127308088d328b6f676862e86979cef420fb7d19114d77e39" }, "downloads": -1, "filename": "dcm-spec-tools-0.1.2.zip", "has_sig": false, "md5_digest": "59dfbf826138ba124b83238c1ed505ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22446, "upload_time": "2017-01-23T18:49:36", "url": "https://files.pythonhosted.org/packages/ee/b2/a57a8201ba24d6977c329fa23a3335c8dcdfe49ff10c91f25412abb36aa8/dcm-spec-tools-0.1.2.zip" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "c7a72f042cbc52831b023b3d625e6f77", "sha256": "1282dcc3becb8f604635e77d2dba8138793ade0f807a6ee53e56b1e0357ebb45" }, "downloads": -1, "filename": "dcm-spec-tools-0.1.3.zip", "has_sig": false, "md5_digest": "c7a72f042cbc52831b023b3d625e6f77", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22599, "upload_time": "2017-02-16T21:13:06", "url": "https://files.pythonhosted.org/packages/7b/09/7975edc7f08983bf5fde694fcafb7ec684398c3e905bb42c7e30db3a7e14/dcm-spec-tools-0.1.3.zip" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "76d53df088e006a791859d6ed41d2fa9", "sha256": "921fe96263229ad5e718145aadb8f0904388398bfa45cc62720b842f4106106e" }, "downloads": -1, "filename": "dcm-spec-tools-0.1.4.zip", "has_sig": false, "md5_digest": "76d53df088e006a791859d6ed41d2fa9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23498, "upload_time": "2017-04-11T17:58:39", "url": "https://files.pythonhosted.org/packages/4e/cd/981b3dbd97f9677e05474a0257bd7ff2f148f35659de78b30045ada1ef68/dcm-spec-tools-0.1.4.zip" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "293537357e36497d5af298d9c9fd39b9", "sha256": "ef305f142211e9eae5b1e06fe3b91b175d396f25080a53c0eb93eb3a0612fcae" }, "downloads": -1, "filename": "dcm-spec-tools-0.2.0.tar.gz", "has_sig": false, "md5_digest": "293537357e36497d5af298d9c9fd39b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3586, "upload_time": "2018-04-23T18:54:11", "url": "https://files.pythonhosted.org/packages/c9/8e/10c9392cab08510ee611d097b484bafac9791b0f7d6d76d7bbfc64909125/dcm-spec-tools-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "f7dba5c3b0f4f505f9d00542c6f14aa0", "sha256": "e00ed3b126621ac94152ae14b348aaf23506ea3b73ac8b709c3a62b271c14f99" }, "downloads": -1, "filename": "dcm_spec_tools-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f7dba5c3b0f4f505f9d00542c6f14aa0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6305, "upload_time": "2018-04-24T19:08:24", "url": "https://files.pythonhosted.org/packages/ed/d2/1fa634cab962901f8624f4aa2df8ec702571428f0183f4a875e4dc289556/dcm_spec_tools-0.2.1-py2.py3-none-any.whl" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "1e1179330efcf35cc91420e8394ef0fc", "sha256": "0044b2a326b52e880560b72b9944ff4586632de2305e0e523a6bb82e5e8a568b" }, "downloads": -1, "filename": "dcm_spec_tools-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1e1179330efcf35cc91420e8394ef0fc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 37773, "upload_time": "2018-04-24T19:15:56", "url": "https://files.pythonhosted.org/packages/b3/32/f13cb6107a976a7b943c4388b514d0811ddc3955d2b5e91cf0b2091e4c7b/dcm_spec_tools-0.2.2-py2.py3-none-any.whl" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "639f4d9252dd6806f9cd376af43ec552", "sha256": "fa001fb1b455156d41ec8693736ab39b0074ef0b1ee136633c7a22ea31464d19" }, "downloads": -1, "filename": "dcm_spec_tools-0.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "639f4d9252dd6806f9cd376af43ec552", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 36279, "upload_time": "2018-04-25T17:38:00", "url": "https://files.pythonhosted.org/packages/23/f9/a882794866291c19b308fe8ddf57279083fff163af0e620b7a56223b987d/dcm_spec_tools-0.2.3-py2.py3-none-any.whl" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "9dfc20de8c1e463fda9a1834dc424079", "sha256": "b1c95c1450cd9be1a989b085eda593a31847ba2f24ab6193c59311e157308cb2" }, "downloads": -1, "filename": "dcm_spec_tools-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9dfc20de8c1e463fda9a1834dc424079", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 40285, "upload_time": "2018-06-26T20:14:10", "url": "https://files.pythonhosted.org/packages/bc/95/e46a79382787762a1568b726bca58132f7918e217e5978a6be181859e7ea/dcm_spec_tools-0.3.0-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9dfc20de8c1e463fda9a1834dc424079", "sha256": "b1c95c1450cd9be1a989b085eda593a31847ba2f24ab6193c59311e157308cb2" }, "downloads": -1, "filename": "dcm_spec_tools-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9dfc20de8c1e463fda9a1834dc424079", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 40285, "upload_time": "2018-06-26T20:14:10", "url": "https://files.pythonhosted.org/packages/bc/95/e46a79382787762a1568b726bca58132f7918e217e5978a6be181859e7ea/dcm_spec_tools-0.3.0-py2.py3-none-any.whl" } ] }