]> Creatis software - clitk.git/blob - vv/vvDicomServerQueryFactory.cxx
Debug RTStruct conversion with empty struc
[clitk.git] / vv / vvDicomServerQueryFactory.cxx
1 #include "vvDicomServerQueryFactory.h"
2
3
4 gdcm::SmartPointer<gdcm::BaseRootQuery> vvDicomServerQueryFactory::composeQuerySeries(  std::vector< std::pair<gdcm::Tag, std::string> > keys )
5 {
6         gdcm::EQueryLevel theLevel = gdcm::eSeries;
7         gdcm::ERootType theRoot  = gdcm::ePatientRootType;//ePatientRootType;
8          return gdcm::CompositeNetworkFunctions::ConstructQuery(theRoot, theLevel ,keys);
9 }
10
11
12 vvQuery vvDicomServerQueryFactory::getQueryforStudy(const  std::string patient_id, bool bdisplay)
13 {
14         vvQuery query;
15         query.keys = getQueryKeysforStudy( patient_id, bdisplay);
16         query.theRoot = gdcm::ePatientRootType;
17         query.theLevel = gdcm::eStudy;
18         m_query = getQueryPatient("",patient_id);
19         return query;
20 }
21
22 std::vector< std::pair<gdcm::Tag, std::string> > vvDicomServerQueryFactory::getQueryKeysforStudy(const std::string patient_id, bool bdisplay)
23 {
24         std::vector< std::pair<gdcm::Tag, std::string> > keys;
25
26
27         // Study Description
28         gdcm::Tag tagsdc(0x0008,0x1030);
29         keys.push_back(std::make_pair(tagsdc, ""));
30         // Study date
31         gdcm::Tag tagdb(0x0008,0x0020);
32         keys.push_back(std::make_pair(tagdb, ""));
33         // Study Hour
34         gdcm::Tag tagsdh(0x0008,0x0030);
35         keys.push_back(std::make_pair(tagsdh, ""));
36
37         // Study UID
38         gdcm::Tag tagsid(0x020,0x000d);
39         keys.push_back(std::make_pair(tagsid, ""));
40
41         if (!bdisplay)
42         {
43                         // Patient ID
44         gdcm::Tag tagsd(0x0010,0x0020);
45         keys.push_back(std::make_pair(tagsd, patient_id));
46         }
47
48         return keys;
49 }
50
51 vvQuery vvDicomServerQueryFactory::getQueryforImages(const std::string patient_id, const std::string study_id, const std::string series_id,bool bdisplay)
52 {
53         vvQuery query;
54         query.keys = getQueryKeysforImages( patient_id, study_id, series_id, bdisplay);
55         query.theRoot = gdcm::ePatientRootType;
56         query.theLevel = gdcm::eImage;
57         m_query = query;
58         return query;
59 }
60
61 std::vector< std::pair<gdcm::Tag, std::string> > vvDicomServerQueryFactory::getQueryKeysforImages(const std::string patient_id, const std::string study_id, const std::string series_id,bool bdisplay)
62 {
63
64         std::vector< std::pair<gdcm::Tag, std::string> > keys;
65
66         if (!bdisplay)
67         {
68                 //Patient UID
69                 keys.push_back(std::make_pair(gdcm::Tag (0x0010,0x0020), patient_id));
70
71                 //Study UID
72         //      keys.push_back(std::make_pair(gdcm::Tag(0x0020,0x000d), study_id));
73         
74                 //Series UID
75                 keys.push_back(std::make_pair(gdcm::Tag(0x0020,0x000e), series_id));
76         }
77         // Image Description
78
79         keys.push_back(std::make_pair(gdcm::Tag(0x0020,0x0013), ""));
80         //SOP Instance UID
81         keys.push_back(std::make_pair(gdcm::Tag(0x0008,0x0018), ""));
82         return keys;
83 }
84
85
86
87 vvQuery vvDicomServerQueryFactory::getQueryPatient(const std::string i_patname, const std::string i_patid)
88 {
89         vvQuery query;
90         query.theRoot = gdcm::ePatientRootType;
91         query.theLevel = gdcm::ePatient;
92         query.keys = getPatientKeys(i_patname, i_patid);
93         m_query = query;
94         return query;
95
96 }
97
98 std::vector< std::pair<gdcm::Tag, std::string> > vvDicomServerQueryFactory::getPatientKeys(const std::string i_patname, const std::string i_patid)
99 {
100         std::vector< std::pair<gdcm::Tag, std::string> > keys;
101         // Patient Name
102         gdcm::Tag tag(0x0010,0x0010);
103         keys.push_back(std::make_pair(tag, i_patname));
104
105         //// Patient ID
106         gdcm::Tag tagpid(0x0010,0x0020);
107         keys.push_back(std::make_pair(tagpid, i_patid));
108         return keys;
109 }
110
111
112 vvQuery vvDicomServerQueryFactory::getQueryforSeries(const std::string patient_id, const std::string series_id, bool bdisplay)
113 {
114         vvQuery query;
115         query.theRoot = gdcm::ePatientRootType;
116         query.theLevel = gdcm::eSeries;
117         query.keys = getSeriesKeys(patient_id, series_id, bdisplay);
118         m_query = query;
119         return query;
120 }
121 std::vector< std::pair<gdcm::Tag, std::string> > vvDicomServerQueryFactory::getSeriesKeys(const std::string patient_id, const std::string study_id, bool bdisplay)
122 {
123         std::vector< std::pair<gdcm::Tag, std::string> > keys;
124         // Modality
125   keys.push_back(std::make_pair(gdcm::Tag(0x0008,0x0060), ""));
126         // Study date
127         
128         keys.push_back(std::make_pair(gdcm::Tag(0x0008,0x103e),""));
129 // Series Instance UID
130         keys.push_back(std::make_pair(gdcm::Tag(0x0020,0x000e), ""));
131
132
133
134         if(!bdisplay)
135         {
136                 //Patient UID
137                 keys.push_back(std::make_pair(gdcm::Tag (0x0010,0x0020), patient_id));
138
139                 //Study UID
140                 keys.push_back(std::make_pair(gdcm::Tag(0x0020,0x000d), study_id));
141                 // Study Instance UID
142                 gdcm::Tag tagsid(0x0020,0x1209);
143         //      keys.push_back(std::make_pair(tagsid, study_id));
144         }
145
146         return keys;
147 }
148
149 void vvDicomServerQueryFactory::setQueryforImage(const std::string patient_id, const std::string study_id, const std::string series_id,const std::string image_id)
150 {
151         vvQuery query;
152         query.theRoot = gdcm::ePatientRootType;
153         query.theLevel = gdcm::eImage;
154         query.keys = getQueryKeysforImage(patient_id, study_id, series_id, image_id);
155         m_query = query;
156 }
157
158 std::vector< std::pair<gdcm::Tag, std::string> > vvDicomServerQueryFactory::getQueryKeysforImage(const std::string patient_id, const std::string study_id, const std::string series_id,const std::string image_id)
159 {
160
161         std::vector< std::pair<gdcm::Tag, std::string> > keys;
162
163                 //Patient UID
164                 keys.push_back(std::make_pair(gdcm::Tag (0x0010,0x0020), patient_id));
165
166                 //Study UID
167                 keys.push_back(std::make_pair(gdcm::Tag(0x0020,0x000d), study_id));
168         
169                 //Series UID
170                 keys.push_back(std::make_pair(gdcm::Tag(0x0020,0x000e), series_id));
171         
172         //SOP Instance UID
173         keys.push_back(std::make_pair(gdcm::Tag(0x0008,0x0018), image_id));
174         return keys;
175 }