{"id":21980178,"url":"https://github.com/innolitics/pacsman","last_synced_at":"2025-06-30T02:05:15.478Z","repository":{"id":39631619,"uuid":"138189045","full_name":"innolitics/pacsman","owner":"innolitics","description":"Picture Archiving and Communication System Manager And Numpifier","archived":false,"fork":false,"pushed_at":"2023-07-06T21:23:47.000Z","size":2273,"stargazers_count":19,"open_issues_count":12,"forks_count":3,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-06-24T03:58:58.053Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/innolitics.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}},"created_at":"2018-06-21T15:28:33.000Z","updated_at":"2025-05-03T09:51:16.000Z","dependencies_parsed_at":"2023-02-15T11:31:21.268Z","dependency_job_id":"734b2b8a-6004-4e1a-b3e5-04e2d65140d8","html_url":"https://github.com/innolitics/pacsman","commit_stats":{"total_commits":157,"total_committers":8,"mean_commits":19.625,"dds":0.4267515923566879,"last_synced_commit":"cc5f5373676101891cb7fe172bbfa5f8e46aef6a"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/innolitics/pacsman","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/innolitics%2Fpacsman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/innolitics%2Fpacsman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/innolitics%2Fpacsman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/innolitics%2Fpacsman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/innolitics","download_url":"https://codeload.github.com/innolitics/pacsman/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/innolitics%2Fpacsman/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262697250,"owners_count":23349890,"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-11-29T17:09:51.259Z","updated_at":"2025-06-30T02:05:15.366Z","avatar_url":"https://github.com/innolitics.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![example workflow](https://github.com/innolitics/pacsman/actions/workflows/unit-tests.yml/badge.svg)\n\n# `pacsman`: Picture Archiving and Communication System Manager And Numpifier\n\n`pacsman` is a utility to manage interactions with a PACS in Python. It has a\n`BaseDicomClient` that provides abstract methods for a variety of DICOM-related\ninteractions, and it supplies several backends that implement these methods using tools\nsuch as:\n\n- DCMTK\n- pynetdicom\n- your local filesystem\n\nIt provides the ability to fetch images and render as thumbnail PNGs, or fetch raw DICOM\nfiles.\n\nIn addition to the supplied backends, you can write your own backend implementing the\n`BaseDicomClient`. This can be a useful interface layer for non-PACS systems such as a\ncloud storage system.\n\n## Development\nLinting is done with `flake8` and testing with `pytest`.\n\nGitHub actions has automatic checks for both linting and tests, using [`tox`](https://tox.wiki/en/latest/) as the runner (see [`./tox.ini`](tox.ini)). To replicate this locally, install `tox`, then run `tox .` in the root of the project.\n\n\u003e If you get an error about `DCMDICTPATH` or `SCPCFGPATH` not being found, change the `tox.ini` setenv values to your local path to the referenced files. \n\n\u003e If you get an error about \"InterpreterNotFound\", make sure you have that version of Python installed and in the path (e.g., discoverable with `which python{version}`). Or use `--skip-missing-interpreters` to skip those.\n\n\n### Remote DICOM Testing - Using Orthanc\nTests marked *remote* rely on a live DICOM server. For GitHub actions, an instance of Orthanc will be used, and you can re-use this service locally as well.\n\n```bash\ndocker-compose up -d orthanc\n\n# If this is the first time, and test data files have not yet been loaded\npython3 pacsman/upload_test.py remote\n\n# If you have DCMTK installed, here is a quick test\nechoscu localhost 4242\n\n# Or, with pynetdicom\npython -m pynetdicom echoscu localhost 4242\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finnolitics%2Fpacsman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finnolitics%2Fpacsman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finnolitics%2Fpacsman/lists"}