1 package ca.uhn.fhir.rest.gclient;
2
3 import static org.apache.commons.lang3.StringUtils.defaultString;
4
5 import java.util.*;
6
7 import org.apache.commons.lang3.ObjectUtils;
8 import org.hl7.fhir.instance.model.api.IBaseCoding;
9
10 import ca.uhn.fhir.model.base.composite.BaseIdentifierDt;
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 public class TokenClientParam extends BaseClientParam implements IParam {
36
37 private static final String[] EMPTY_STRING_LIST = new String[0];
38
39 private String myParamName;
40
41 public TokenClientParam(String theParamName) {
42 myParamName = theParamName;
43 }
44
45 public IMatches exactly() {
46 return new IMatches() {
47 @Override
48 public ICriterion<TokenClientParam> code(String theCode) {
49 return new TokenCriterion(getParamName(), null, theCode);
50 }
51
52 @Override
53 public ICriterion<?> codes(Collection<String> theCodes) {
54 return new TokenCriterion(getParamName(), theCodes);
55 }
56
57 @Override
58 public ICriterion<?> codes(String... theCodes) {
59 return new TokenCriterion(getParamName(), convertToList(theCodes));
60 }
61
62 private List<String> convertToList(String[] theValues) {
63 String[] values = ObjectUtils.defaultIfNull(theValues, EMPTY_STRING_LIST);
64 return Arrays.asList(values);
65 }
66
67 @Override
68 public ICriterion<TokenClientParam> identifier(BaseIdentifierDt theIdentifier) {
69 return new TokenCriterion(getParamName(), theIdentifier.getSystemElement().getValueAsString(), theIdentifier.getValueElement().getValue());
70 }
71
72 @Override
73 public ICriterion<TokenClientParam> identifier(String theIdentifier) {
74 return new TokenCriterion(getParamName(), null, theIdentifier);
75 }
76
77 @Override
78 public ICriterion<TokenClientParam> identifiers(BaseIdentifierDt... theIdentifiers) {
79 return new TokenCriterion(getParamName(), Arrays.asList(theIdentifiers));
80 }
81
82 @Override
83 public ICriterion<TokenClientParam> identifiers(List<BaseIdentifierDt> theIdentifiers) {
84 return new TokenCriterion(getParamName(), theIdentifiers);
85 }
86
87 @Override
88 public ICriterion<TokenClientParam> systemAndCode(String theSystem, String theCode) {
89 return new TokenCriterion(getParamName(), defaultString(theSystem), theCode);
90 }
91
92 @Override
93 public ICriterion<TokenClientParam> systemAndIdentifier(String theSystem, String theCode) {
94 return new TokenCriterion(getParamName(), defaultString(theSystem), theCode);
95 }
96
97 @Override
98 public ICriterion<?> systemAndValues(String theSystem, Collection<String> theValues) {
99 return new TokenCriterion(getParamName(), defaultString(theSystem), theValues);
100 }
101
102 @Override
103 public ICriterion<?> systemAndValues(String theSystem, String... theValues) {
104 return new TokenCriterion(getParamName(), defaultString(theSystem), convertToList(theValues));
105 }
106
107 @Override
108 public ICriterion<?> codings(IBaseCoding... theCodings) {
109 return new TokenCriterion(getParamName(), theCodings);
110 }
111 };
112 }
113
114 @Override
115 public String getParamName() {
116 return myParamName;
117 }
118
119
120
121
122
123
124
125
126
127 public ICriterion<TokenClientParam> hasSystemWithAnyCode(String theSystem) {
128 return new TokenCriterion(getParamName(), theSystem, (String) null);
129 }
130
131 public interface IMatches {
132
133
134
135
136
137
138
139 ICriterion<TokenClientParam> code(String theIdentifier);
140
141
142
143
144
145
146
147
148
149
150 ICriterion<?> codes(Collection<String> theCodes);
151
152
153
154
155
156
157
158
159
160
161 ICriterion<?> codes(String... theCodes);
162
163
164
165
166
167
168
169
170
171
172
173
174
175 ICriterion<?> codings(IBaseCoding... theCodings);
176
177
178
179
180
181
182
183
184 ICriterion<TokenClientParam> identifier(BaseIdentifierDt theIdentifier);
185
186
187
188
189
190
191
192
193 ICriterion<TokenClientParam> identifier(String theIdentifier);
194
195
196
197
198
199
200
201
202
203 ICriterion<TokenClientParam> identifiers(BaseIdentifierDt... theIdentifiers);
204
205
206
207
208
209
210
211
212
213 ICriterion<TokenClientParam> identifiers(List<BaseIdentifierDt> theIdentifiers);
214
215
216
217
218
219
220
221
222
223
224 ICriterion<TokenClientParam> systemAndCode(String theSystem, String theCode);
225
226
227
228
229
230
231
232
233
234
235 ICriterion<TokenClientParam> systemAndIdentifier(String theSystem, String theIdentifier);
236
237
238
239
240
241
242
243
244
245
246 public ICriterion<?> systemAndValues(String theSystem, Collection<String> theValues);
247
248
249
250
251
252
253
254
255
256
257 ICriterion<?> systemAndValues(String theSystem, String... theValues);
258
259 }
260
261 }