{"id":13812810,"url":"https://github.com/mercure-imaging/mercure","last_synced_at":"2025-05-14T22:31:13.365Z","repository":{"id":37421012,"uuid":"250666613","full_name":"mercure-imaging/mercure","owner":"mercure-imaging","description":"mercure DICOM Orchestrator","archived":false,"fork":false,"pushed_at":"2025-04-24T16:41:33.000Z","size":20251,"stargazers_count":75,"open_issues_count":9,"forks_count":35,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-24T17:27:14.078Z","etag":null,"topics":["ai","deep-learning","dicom","medical","medical-image-processing","medical-imaging","open-source","routing"],"latest_commit_sha":null,"homepage":"https://mercure-imaging.org","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/mercure-imaging.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/support.rst","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-03-27T22:55:09.000Z","updated_at":"2025-04-24T16:14:09.000Z","dependencies_parsed_at":"2023-02-13T04:31:02.860Z","dependency_job_id":"25cf93a2-9518-44b7-9985-b8d7794bc984","html_url":"https://github.com/mercure-imaging/mercure","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mercure-imaging%2Fmercure","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mercure-imaging%2Fmercure/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mercure-imaging%2Fmercure/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mercure-imaging%2Fmercure/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mercure-imaging","download_url":"https://codeload.github.com/mercure-imaging/mercure/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254239522,"owners_count":22037721,"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":["ai","deep-learning","dicom","medical","medical-image-processing","medical-imaging","open-source","routing"],"created_at":"2024-08-04T04:00:55.703Z","updated_at":"2025-05-14T22:31:08.257Z","avatar_url":"https://github.com/mercure-imaging.png","language":"JavaScript","funding_links":[],"categories":["Libraries"],"sub_categories":["Other/Combination"],"readme":"\n![mercure](mercure.png)\n\n![Python application](https://github.com/mercure-imaging/mercure/workflows/Python%20application/badge.svg)\u0026nbsp; ![GitHub](https://img.shields.io/github/license/mercure-imaging/mercure?color=%233273dc)\u0026nbsp; [![project chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://mercure-imaging.zulipchat.com)\n\n# mercure DICOM Orchestrator\n\nA flexible DICOM routing and processing solution with user-friendly web interface and extensive monitoring functions. Custom processing modules can be implemented as Docker containers. mercure has been written in the Python language and uses the DCMTK toolkit for the underlying DICOM communication. It can be deployed either as containerized single-server installation using Docker Compose, or as scalable cluster installation using Nomad. mercure consists of multiple service modules that handle different steps of the processing pipeline.\n\nInstallation instructions and usage information can be found in the project documentation:  \nhttps://mercure-imaging.org/docs/index.html\n\n\n## Receiver\nThe receiver listens on a tcp port for incoming DICOM files. Received files are run through\na preprocessing procedure, which extracts DICOM tag information and stores it in a json file.\n\n## Router\nThe router module runs periodically and checks \n* if the transfer of a DICOM series has finished (based on timeouts)\n* if a routing rule triggers for the received series (or study)\n\nIf both conditions are met, the DICOM series (or study) is moved into a subdirectory of the `outgoing` folder or \n`processing` folder (depending on the triggered rule), together with task file that describes the action to be performed. \nIf no rule applies, the DICOM series is placed in the `discard` folder.\n\n## Processor\nThe processor module runs periodically and checks for tasks submitted to the `processing` folder. It then locks the task and executes processing modules as defined in the `task.json` file. The requested processing module is started as Docker container, either on the same server or on a separate processing node (for Nomad installations). If results should be dispatched, the processed files are moved into a subfolder of the `outgoing` folder.\n\n## Dispatcher\nThe dispatcher module runs periodically and checks\n* if a transfer from the router or processor has finished\n* if the series is not already being dispatched\n* if at least one DICOM file is available\n\nIf the conditions are true, the information about the DICOM target node is read from the \n`task.json` file and the images are sent to this node. After the transfer, the files\nare moved to either the `success` or `error` folder.\n\n## Cleaner\nThe cleaner module runs periodically and checks\n* if new series arrived in the `discard` or `success` folder\n* if the move operation into these folder has finished\n* if the predefined clean-up delay has elapsed (by default, 3 days)\n\nIf these conditions are true, series in the `success` and `discard` folders are deleted.\n\n## Webgui\nThe webgui module provides a user-friendly web interface for configuring, controlling, and \nmonitoring the server.\n\n## Bookkeeper\nThe bookkeeper module acts as central monitoring instance for all mercure services. The individual modules communicate with the bookkeeper via a TCP/IP connection. The submitted information is stored in a Postgres database.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmercure-imaging%2Fmercure","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmercure-imaging%2Fmercure","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmercure-imaging%2Fmercure/lists"}