1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
/**
* Orthanc - A Lightweight, RESTful DICOM Store
* Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
* Department, University Hospital of Liege, Belgium
* Copyright (C) 2017-2021 Osimis S.A., Belgium
*
* This program is free software: you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* 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
* Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
**/
#pragma once
#include <DicomFormat/DicomTag.h>
#include <Enumerations.h>
#include <orthanc/OrthancCPlugin.h>
#include <json/value.h>
#if (ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER <= 0 && \
ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER <= 9 && \
ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER <= 6)
# define HAS_SEND_MULTIPART_ITEM_2 0
#else
# define HAS_SEND_MULTIPART_ITEM_2 1
#endif
namespace OrthancPlugins
{
static const Orthanc::DicomTag DICOM_TAG_RETRIEVE_URL(0x0008, 0x1190);
static const Orthanc::DicomTag DICOM_TAG_FAILURE_REASON(0x0008, 0x1197);
static const Orthanc::DicomTag DICOM_TAG_WARNING_REASON(0x0008, 0x1196);
static const Orthanc::DicomTag DICOM_TAG_FAILED_SOP_SEQUENCE(0x0008, 0x1198);
static const Orthanc::DicomTag DICOM_TAG_REFERENCED_SOP_SEQUENCE(0x0008, 0x1199);
static const Orthanc::DicomTag DICOM_TAG_REFERENCED_SOP_CLASS_UID(0x0008, 0x1150);
static const Orthanc::DicomTag DICOM_TAG_REFERENCED_SOP_INSTANCE_UID(0x0008, 0x1155);
enum MetadataMode
{
MetadataMode_Full, // Read all the DICOM instances from the storage area
MetadataMode_MainDicomTags, // Only use the Orthanc database (main DICOM tags only)
MetadataMode_Extrapolate // Extrapolate user-specified tags from a few DICOM instances
};
bool LookupHttpHeader(std::string& value,
const OrthancPluginHttpRequest* request,
const std::string& header);
void ParseContentType(std::string& application,
std::map<std::string, std::string>& attributes,
const std::string& header);
void ParseAssociativeArray(std::map<std::string, std::string>& target,
const Json::Value& value,
const std::string& key);
void ParseAssociativeArray(std::map<std::string, std::string>& target,
const Json::Value& value);
bool ParseTag(Orthanc::DicomTag& target,
const std::string& name);
void ParseJsonBody(Json::Value& target,
const OrthancPluginHttpRequest* request);
std::string RemoveMultipleSlashes(const std::string& source);
bool LookupStringValue(std::string& target,
const Json::Value& json,
const std::string& key);
bool LookupIntegerValue(int& target,
const Json::Value& json,
const std::string& key);
bool LookupBooleanValue(bool& target,
const Json::Value& json,
const std::string& key);
namespace Configuration
{
void Initialize();
bool HasKey(const std::string& key);
bool GetBooleanValue(const std::string& key,
bool defaultValue);
bool LookupBooleanValue(bool& target,
const std::string& key);
unsigned int GetUnsignedIntegerValue(const std::string& key,
unsigned int defaultValue);
std::string GetDicomWebRoot();
std::string GetOrthancApiRoot();
std::string GetWadoRoot();
std::string GetBaseUrl(const std::map<std::string, std::string>& headers);
// TODO => REMOVE
std::string GetBaseUrl(const OrthancPluginHttpRequest* request);
std::string GetWadoUrl(const std::string& wadoBase,
const std::string& studyInstanceUid,
const std::string& seriesInstanceUid,
const std::string& sopInstanceUid);
Orthanc::Encoding GetDefaultEncoding();
bool IsXmlExpected(const std::map<std::string, std::string>& headers);
// TODO => REMOVE
bool IsXmlExpected(const OrthancPluginHttpRequest* request);
MetadataMode GetMetadataMode(Orthanc::ResourceType level);
void GetSetOfTags(std::set<Orthanc::DicomTag>& tags,
const std::string& key);
void GetExtrapolatedMetadataTags(std::set<Orthanc::DicomTag>& tags,
Orthanc::ResourceType level);
void LoadDicomWebServers();
void SaveDicomWebServers();
}
}
|