Mercurial > hg > orthanc
changeset 7072:6c78bd3fcded
Added SiemensSyngoCT manufacturer
| author | Alain Mazy <am@orthanc.team> |
|---|---|
| date | Wed, 12 Aug 2026 11:47:56 +0200 |
| parents | c5e5774720fc |
| children | 66f7a5185a4c |
| files | NEWS OrthancFramework/Sources/DicomNetworking/DicomControlUserConnection.cpp OrthancFramework/Sources/Enumerations.cpp OrthancFramework/Sources/Enumerations.h OrthancServer/Resources/Configuration.json |
| diffstat | 5 files changed, 22 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/NEWS Wed Aug 12 11:02:10 2026 +0200 +++ b/NEWS Wed Aug 12 11:47:56 2026 +0200 @@ -35,7 +35,8 @@ - "Name" was documented as "MyOrthanc" while its default value is "ORTHANC". * Orthanc no longer accepts DICOM association from modalities whose AET contains invalid characters. * Orthanc now ignores leading/trailing spaces in AET. - +* Experimental: New "Manufacturer" "SiemensSyngoCT" to propose both the SCU and SCP C-Store roles when + performing a C-Get SCU. REST API --------
--- a/OrthancFramework/Sources/DicomNetworking/DicomControlUserConnection.cpp Wed Aug 12 11:02:10 2026 +0200 +++ b/OrthancFramework/Sources/DicomNetworking/DicomControlUserConnection.cpp Wed Aug 12 11:47:56 2026 +0200 @@ -296,9 +296,16 @@ throw OrthancException(ErrorCode_BadSequenceOfCalls); // the acceptedStorageSopClassUids should always be defined for a C-Get } + DicomAssociationRole proposedStoreRole = DicomAssociationRole_Scu; + + if (parameters_.GetRemoteModality().GetManufacturer() == ModalityManufacturer_SiemensSyngoCT) + { + proposedStoreRole = DicomAssociationRole_Default; // it seems SyngoCT won't accept a C-Store/SCP only and requires both SCU and SCP roles to be proposed + } + for (std::set<std::string>::const_iterator it = acceptedStorageSopClasses.begin(); it != acceptedStorageSopClasses.end(); ++it) { - association_->ProposePresentationContext(*it, proposedStorageTransferSyntaxes, DicomAssociationRole_Scp); + association_->ProposePresentationContext(*it, proposedStorageTransferSyntaxes, proposedStoreRole); } } }
--- a/OrthancFramework/Sources/Enumerations.cpp Wed Aug 12 11:02:10 2026 +0200 +++ b/OrthancFramework/Sources/Enumerations.cpp Wed Aug 12 11:47:56 2026 +0200 @@ -816,7 +816,10 @@ case ModalityManufacturer_GE: return "GE"; - + + case ModalityManufacturer_SiemensSyngoCT: + return "SiemensSyngoCT"; + default: throw OrthancException(ErrorCode_ParameterOutOfRange); } @@ -1633,6 +1636,10 @@ { return ModalityManufacturer_GE; } + else if (manufacturer == "SiemensSyngoCT") + { + return ModalityManufacturer_SiemensSyngoCT; + } else if (manufacturer == "AgfaImpax" || manufacturer == "SyngoVia") {
--- a/OrthancFramework/Sources/Enumerations.h Wed Aug 12 11:02:10 2026 +0200 +++ b/OrthancFramework/Sources/Enumerations.h Wed Aug 12 11:47:56 2026 +0200 @@ -679,7 +679,8 @@ ModalityManufacturer_GenericNoWildcardInDates, ModalityManufacturer_GenericNoUniversalWildcard, ModalityManufacturer_Vitrea, - ModalityManufacturer_GE + ModalityManufacturer_GE, + ModalityManufacturer_SiemensSyngoCT }; enum DicomRequestType
--- a/OrthancServer/Resources/Configuration.json Wed Aug 12 11:02:10 2026 +0200 +++ b/OrthancServer/Resources/Configuration.json Wed Aug 12 11:47:56 2026 +0200 @@ -369,6 +369,8 @@ * - "Vitrea", * - "GE" (Enterprise Archive, MRI consoles and Advantage Workstation * from GE Healthcare). + * - "SiemensSyngoCT" (proposes both SCP and SCU C-Store roles when performing + * a C-Get SCU) * * This parameter is case-sensitive. **/
