Mercurial > hg > orthanc
view OrthancServer/Resources/DicomConformanceStatement.py @ 4333:a85e74235a78
fix parsing of multipart boundaries, to resolve issue #190 in STOW-RS of DICOMweb plugin
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 27 Nov 2020 06:57:23 +0100 |
parents | d25f4c0fa160 |
children | d9473bd5ed43 |
line wrap: on
line source
#!/usr/bin/python # Orthanc - A Lightweight, RESTful DICOM Store # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics # Department, University Hospital of Liege, Belgium # Copyright (C) 2017-2020 Osimis S.A., Belgium # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # In addition, as a special exception, the copyright holders of this # program give permission to link the code of its release with the # OpenSSL project's "OpenSSL" library (or with modified versions of it # that use the same license as the "OpenSSL" library), and distribute # the linked executables. You must obey the GNU General Public License # in all respects for all of the code used other than "OpenSSL". If you # modify file(s) with this exception, you may extend this exception to # your version of the file(s), but you are not obligated to do so. If # you do not wish to do so, delete this exception statement from your # version. If you delete this exception statement from all source files # in the program, then also delete it here. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # This file injects the UID information into the DICOM conformance # statement of Orthanc import re # Read the conformance statement of Orthanc with open('DicomConformanceStatement.txt', 'r') as f: statements = f.readlines() # Create an index of all the DICOM UIDs that are known to DCMTK uids = {} with open('/usr/include/dcmtk/dcmdata/dcuid.h', 'r') as dcmtk: for l in dcmtk.readlines(): m = re.match(r'#define UID_(.+?)\s*"(.+?)"', l) if m != None: uids[m.group(1)] = m.group(2) # Loop over the lines of the statement, looking for the "|" separator with open('/tmp/DicomConformanceStatement.txt', 'w') as f: for l in statements: m = re.match(r'(\s*)(.*?)(\s*)\|.*$', l) if m != None: name = m.group(2) uid = uids[name] f.write('%s%s%s| %s\n' % (m.group(1), name, m.group(3), uid)) else: # No "|" in this line, just output it f.write(l)