{"id":13634581,"url":"https://github.com/dcmjs-org/dcmjs","last_synced_at":"2025-04-18T23:32:28.705Z","repository":{"id":37627288,"uuid":"95673749","full_name":"dcmjs-org/dcmjs","owner":"dcmjs-org","description":"Javascript implementation of DICOM manipulation                       ","archived":false,"fork":false,"pushed_at":"2024-10-29T19:25:48.000Z","size":22598,"stargazers_count":299,"open_issues_count":86,"forks_count":112,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-11-07T20:08:22.579Z","etag":null,"topics":["dicom","javascript","medical-imaging","nci-itcr"],"latest_commit_sha":null,"homepage":"https://dcmjs.netlify.com/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dcmjs-org.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"License.txt","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":"2017-06-28T13:47:21.000Z","updated_at":"2024-11-06T22:08:59.000Z","dependencies_parsed_at":"2024-03-15T17:53:49.212Z","dependency_job_id":"a268b9a6-1152-4947-b5cc-7c97155b4a6f","html_url":"https://github.com/dcmjs-org/dcmjs","commit_stats":{"total_commits":500,"total_committers":48,"mean_commits":"10.416666666666666","dds":0.656,"last_synced_commit":"4f1e6754e856d1aca9863def4b82b399bc0c8bb2"},"previous_names":[],"tags_count":124,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcmjs-org%2Fdcmjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcmjs-org%2Fdcmjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcmjs-org%2Fdcmjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcmjs-org%2Fdcmjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dcmjs-org","download_url":"https://codeload.github.com/dcmjs-org/dcmjs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223786390,"owners_count":17202581,"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":["dicom","javascript","medical-imaging","nci-itcr"],"created_at":"2024-08-02T00:00:26.540Z","updated_at":"2025-04-18T23:32:28.697Z","avatar_url":"https://github.com/dcmjs-org.png","language":"JavaScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003edcmjs\u003c/h1\u003e\n  \u003cp\u003eJavaScript implementation of DICOM manipulation. This code is an outgrowth of several efforts to implement web applications for medical imaging.\u003c/p\u003e\n\u003c/div\u003e\n\n\u003chr /\u003e\n\n[![CI](https://github.com/dcmjs-org/dcmjs/actions/workflows/publish-package.yml/badge.svg)](https://github.com/dcmjs-org/dcmjs/actions?query=workflow:publish-package)\n\n**Note: this code is a work-in-progress**\n\nThis is a community effort so please help improve support for a wide range of DICOM data and use cases.\n\nSee [live examples here](https://master--dcmjs2.netlify.app/)\n\n# Goals\n\n_Overall the code should:_\n\n- Support reading and writing of correct DICOM objects in JavaScript for browser or node environments\n- Provide a programmer-friendly JavaScript environment for using and manipulating DICOM objects\n- Include a set of useful demos to encourage correct usage of dcmjs and modern DICOM objects\n- Encourage correct referencing of instances and composite context when creating derived objects\n- Current target is modern web browsers, but a set of node-based utilities also makes sense someday\n\n_Architectural goals include:_\n\n- Use modern JavaScript programming methods (currently ES6) but avoid heavy frameworks\n- Leverage modern DICOM standards but avoid legacy parts\n- Support straightforward integration with multiple JavaScript deployment targets (browser, node, etc) and frameworks.\n\n_Parts of DICOM that dcmjs *will* focus on:_\n\n- Enhanced Multiframe Images\n- Segmentation Objects\n- Parametric Maps\n- Structured Reports\n\n_Parts of DICOM that dcmjs *will not* focus on:_\n\n- DIMSE (legacy networking like C-STORE, C-FIND, C-MOVE, etc). See the [dcmjs-dimse](https://github.com/PantelisGeorgiadis/dcmjs-dimse) project for that.\n- Physical Media (optical disks). See [this FAQ](https://www.dclunie.com/medical-image-faq/html/index.html) if you need to work with those.\n- Image rendering. See [dcmjs-imaging](https://github.com/PantelisGeorgiadis/dcmjs-imaging) for this.\n- Encapsulated transfer syntax transcoding. See [dcmjs-codecs](https://github.com/PantelisGeorgiadis/dcmjs-codecs) for this.\n- 3D rendering.  See [vtk.js](https://kitware.github.io/vtk-js/index.html).\n- Radiology review application - see [OHIF](https://ohif.org).\n\n# Usage\n\n## In Browser\n\n```html\n\u003cscript type=\"text/javascript\" src=\"https://unpkg.com/dcmjs\"\u003e\u003c/script\u003e\n```\n\n## In Node\n\n```None\n// To install latest _stable_ release\nnpm install --save dcmjs\n\n// To install latest code merged to master\nnpm install --save dcmjs@dev\n```\n\n## For Developers\n\n```None\ngit clone https://github.com/dcmjs-org/dcmjs\ncd dcmjs\nnpm install\nnpm run build\nnpm test\n```\n\n## For Maintainers and Contributors\n\nPublish new version automatically from commit:\n\nUse the following \"Commit Message Format\" when drafting commit messages. If you're merging a 3rd party's PR, you have the ability to override the supplied commit messages by doing a \"Squash \u0026 Merge\":\n\n- [Commit Message Format](https://semantic-release.gitbook.io/semantic-release/#commit-message-format)\n\nNote: Be wary of `BREAKING_CHANGE` in commit message descriptions, as this can force a major version bump.\n\nBe sure to use lower case for the first letter of your semantic commit message, so use `fix` not `Fix` or `feat` not `Feat`, have a space after the : and make the PR github review title follow the SAME rules.  It is the PR review title that determins the final commit message and will be used for semantic detection.\n\nNote: a new package version will be published only if the commit comes from a PR.\n\n### Optional Tooling\n\nIt is advised to use the git-cz, i.e.:\n\n- install git-cz\n\n```\nnpm install -g git-cz\n```\n\n- how to commit\n\n```\ngit-cz --non-interactive --type=fix --subject=\"commit message\"\n```\n\nMore info at [git-cz](https://www.npmjs.com/package/git-cz).\n\n## Community Participation\n\nUse this repository's issues page to report any bugs. Please follow [SSCCE](http://sscce.org/) guidelines when submitting issues.\n\nUse github pull requests to make contributions.\n\n## Unit Tests\n\nTests are written using the [Jest](https://jestjs.io) testing framework and live in the `test/` folder. Test file names must end with `.test.js`.\n\nPull requests should either update existing tests or add new tests in order to ensure good test coverage of the changes being made.\n\nTo run all tests use `npm run test`. To only run specific tests use Jest's [`.only`](https://www.testim.io/blog/unit-testing-best-practices/) feature. If you're using VS Code, an extension such as [`firsttris.vscode-jest-runner`](https://marketplace.visualstudio.com/items?itemName=firsttris.vscode-jest-runner) can be used to step through specific tests in the debugger.\n\nRead all about unit testing best practices [here](https://www.testim.io/blog/unit-testing-best-practices/).\n\n# Status\n\nCurrently dcmjs is an early-stage development experiment, but already has valuable functionality.\n\n## Implemented\n\n- Bidirectional conversion to and from part 10 binary DICOM and DICOM standard JSON encoding (as in [DICOMweb](http://dicomweb.org))\n- Bidirectional convertion to and from DICOM standard JSON and a programmer-friendly high-level version (high-level form is called the \"naturalized\" form in the code).\n\n## In development\n\n- Creation of (correct) enhanced multiframe DICOM objects from legacy image objects\n- Creation of (correct) derived DICOM objects such as Segmentations and Structured Reports\n\n## TODO\n\n- Create a test suite of input and output DICOM objects\n- Test interoperability with other DICOM implementations\n- Add documentation\n\n# History\n\n- 2014\n  - [DCMTK](dcmtk.org) cross compiled to javascript at [CTK Hackfest](http://www.commontk.org/index.php/CTK-Hackfest-May-2014). While this was useful and powerful, it was heavyweight for typical web usage.\n- 2016\n  - A [Medical Imaging Web Appliction meeting at Stanford](http://qiicr.org/web/outreach/Medical-Imaging-Web-Apps/) and [follow-on hackfest in Boston](http://qiicr.org/web/outreach/MIWS-hackfest/) helped elaborate the needs for manipulating DICOM in pure Javascript.\n  - Based on [DICOM Part 10 read/write code](https://github.com/OHIF/dicom-dimse) initiated by Weiwei Wu of [OHIF](http://ohif.org), Steve Pieper [developed further features](https://github.com/pieper/sites/tree/gh-pages/dcmio) and [examples of creating multiframe and segmentation objects](https://github.com/pieper/sites/tree/gh-pages/DICOMzero) discussed with the community at RSNA\n- 2017\n  - At [NA-MIC Project Week 25](https://na-mic.org/wiki/Project_Week_25) Erik Ziegler and Steve Pieper [worked](https://na-mic.org/wiki/Project_Week_25/DICOM_Segmentation_Support_for_Cornerstone_and_OHIF_Viewer)\n    with the community to define some example use cases to mix the pure JavaScript DICOM code with Cornerstone and [CornerstoneTools](https://github.com/chafey/cornerstoneTools).\n- 2018-2022\n  - Work continues to develop SR and SEG support to [OHIFViewer](http://ohif.org) allow interoperability with [DICOM4QI](https://legacy.gitbook.com/book/qiicr/dicom4qi/details)\n- 2022-present\n  - dcmjs is used by a number of projects and as of January 2025 has about 15,000 weekly [downloads from npm]([url](https://www.npmjs.com/package/dcmjs)).\n\n# Support\n\nThe developers gratefully acknowledge their research support:\n\n- Open Health Imaging Foundation ([OHIF](http://ohif.org))\n- Quantitative Image Informatics for Cancer Research ([QIICR](http://qiicr.org))\n- [Radiomics](http://radiomics.io)\n- The [Neuroimage Analysis Center](http://nac.spl.harvard.edu)\n- The [National Center for Image Guided Therapy](http://ncigt.org)\n- The [NCI Imaging Data Commons](https://imagingdatacommons.github.io/) NCI Imaging Data Commons: contract number 19X037Q from Leidos Biomedical Research under Task Order HHSN26100071 from NCI\n\n## Logging\n\nThis library uses [loglevel](https://github.com/pimterry/loglevel) for logging. By default, the log level is set to \"warn\". You can change the log level by setting the `LOG_LEVEL` environment variable or by using the `setLevel` method in your code.\n","funding_links":[],"categories":["Uncategorized","Libraries","Data Standards \u0026 Interoperability"],"sub_categories":["Uncategorized","JavaScript","DICOM \u0026 Medical Imaging"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcmjs-org%2Fdcmjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdcmjs-org%2Fdcmjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcmjs-org%2Fdcmjs/lists"}