Last modified by Nico Lemaire on 2025/05/06 15:49

From version 3.1
edited by Robin Huisman
on 2022/02/08 11:50
Change comment: There is no comment for this version
To version 18.3
edited by Luca de Laat
on 2024/04/10 11:26
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.RobinHuisman
1 +XWiki.LucadeLaat
Content
... ... @@ -1,47 +1,75 @@
1 1  {{toc/}}
2 2  
3 3  
4 -= Firewall IP-Adresssen van TerraIndex =
4 += Digital Lab Exchange process =
5 5  
6 -Onze IP-adressen:
6 +The flow diagram gives a small overview of what the data flow of a lab assignment is. Every green block shows a step of the lab assignment process. From top to bottom these steps are:
7 +~==> nle what green blocks?
7 7  
8 -ingaand [[Web.terraindex.com>>url:http://Web.terraindex.com]]
9 +1. Showing the laboratory and all the analyses that can be requested as an option to the user.
10 +1. The user creating a lab assignment and sending it to the lab trough TerraIndex.
11 +1. The lab delivering the analysis results back to the TerraIndex.
12 +
13 +[[attach:Lab exchange.svg||rel="noopener noreferrer" target="_blank"]] [[attach:Lab exchange.txt||rel="noopener noreferrer" target="_blank"]]
14 +
15 +[[image:1712326465681-980.png||height="315" width="630"]]
16 +
17 +[[image:1712326492306-381.png||height="781" width="635"]]
18 +
19 +[[image:1712326520488-924.png||height="312" width="632"]]
20 +
21 +
22 +(% class="wikigeneratedid" element-id="1884" %)
23 +~==> nle Perhaps add option download labcertificate
24 +
25 +(% element-id="1884" %)
26 += =
27 +
28 +(% element-id="1884" %)
29 += (% element-id="1883" %)Firewall IP-Addresses of TerraIndex(%%) =
30 +
31 +(% element-id="1882" %)
32 +Our IP-addresses:
33 +
34 +(% element-id="1881" %)
35 +inbound [[Web.terraindex.com>>url:http://Web.terraindex.com||element-id="1880"]]
9 9  137.116.199.164
10 10  
11 -ingaand [[Test.terraindex.com>>url:http://Test.terraindex.com]]
38 +(% element-id="1878" %)
39 +outbound [[Test.terraindex.com>>url:http://Test.terraindex.com||element-id="1877"]]
12 12  104.45.9.128
13 13  
14 -Productie uitgaand
42 +(% element-id="1875" %)
43 +Production outbound
15 15  40.115.34.64
16 16  
17 -Test uitgaand
46 +(% element-id="1873" %)
47 +Test outbound
18 18  13.73.138.173
19 19  
20 -CD/CI uitgaand
50 +(% element-id="1871" %)
51 +CD/CI outbound
21 21  40.114.238.16
22 22  
23 ---Kantoor VPN uitgaand  (niet meer in gebruik, was de oude OpenVPN)
24 -10.33.66.215--
25 -
26 -Kantoor uitgaand
54 +(% element-id="1869" %)
55 +Office outbound
27 27  213.124.115.132
28 28  
29 ---Oude Citrix uitgaand (citrix is ook verhuisd, dit is niet meer in gebruik)
30 -83.96.194.140--
31 31  
59 +(% element-id="1864" %)
60 += (% element-id="1863" %)Labdelivery (menu-card) files Exchange(%%) =
32 32  
33 -= Labaanlever bestanden uitwisseling =
62 +(% element-id="1862" %)
63 +== (% element-id="1861" %)Solution/Design(%%) ==
34 34  
35 -== Oplossing/Design ==
36 36  
37 -
38 -(% class="table-hover" %)
39 -|**Action**|**TerraIndex**| |**Laboratorium**|**Parameters/Message**|**Remarks**|**ResultCodes**
40 -|1|Sends a request to the function: GetCustomers().|=>| |**WebserviceUsername (string), **
41 -**WebservicePassword (string),**
42 -**CustomerUsername (string)**| |
43 -|2| | |Receives the request and check the customers this username and searches the dateLastChanged for this Customer.| | |
44 -|3| |<=|Sends back the list of customers with the lastChangedTimestamp|ResultCode (),
66 +(% class="table-hover" element-id="1858" %)
67 +(% element-id="1856" %)|(% element-id="1855" %)(% element-id="1854" %)**Action**|(% element-id="1853" %)(% element-id="1852" %)**TerraIndex**|(% element-id="1851" %) |(% element-id="1849" %)(% element-id="1848" %)**Laboratorium**|(% element-id="1847" %)(% element-id="1846" %)**Parameters/Message**|(% element-id="1845" %)(% element-id="1844" %)**Remarks**|(% element-id="1843" %)(% element-id="1842" %)**ResultCodes**
68 +(% element-id="1841" %)|(% element-id="1840" %)1|(% element-id="1839" %)Sends a request to the function: GetCustomers().|=(% element-id="1838" %)>|(% element-id="1837" %) |(% element-id="1835" %)(% element-id="1834" %)**WebserviceUsername (string), **(%%)
69 +(% element-id="1832" %)**WebservicePassword (string),**(%%)
70 +(% element-id="1830" %)**CustomerUsername (string)**|(% element-id="1829" %) |(% element-id="1827" %)
71 +(% element-id="1825" %)|(% element-id="1824" %)2|(% element-id="1823" %) |(% element-id="1821" %) |(% element-id="1819" %)Receives the request and check the customers this username and searches the dateLastChanged for this Customer.|(% element-id="1818" %) |(% element-id="1816" %) |(% element-id="1814" %)
72 +(% element-id="1812" %)|(% element-id="1811" %)3|(% element-id="1810" %) |(% element-id="1808" %)<=|(% element-id="1807" %)Sends back the list of customers with the lastChangedTimestamp|(% element-id="1806" %)ResultCode (),
45 45  ErrorMessage (string),
46 46  List<customer> , Customer:
47 47  CustomerCode (string),
... ... @@ -48,7 +48,7 @@
48 48  CustomerName (string),
49 49  LabID (int),
50 50  LabName (string),
51 -ChangedTimeStamp (DateTime)|We receive the dateTimestamp instead of sending it, so we always get the full list and we are also able to delete customercodes.|1 = Success,
79 +ChangedTimeStamp (DateTime)|(% element-id="1798" %)We receive the dateTimestamp instead of sending it, so we always get the full list and we are also able to delete customercodes.|(% element-id="1797" %)1 = Success,
52 52  2 = GeneralError,
53 53  3 = WrongSIKBVersion,
54 54  4 = InvalidCredentials,
... ... @@ -58,26 +58,32 @@
58 58  8 = InvalidOrderId,
59 59  9 = OrderIdAlreadyApproved
60 60  10 = PDFNotAvailable
61 -|4|Receives the list of Customers, and will check for each customer it needs to request a new/changed labdelivery file based on the ChangedTimestamp.| | | |If a customer is not longer in this list, TerraIndex can remove this customercode from the customer database.|
62 -|5|Sends a request to the function: GetProductList() if it has changed.|=>| |**WebserviceUsername (string), **
63 -**WebservicePassword (string),**
64 -**CustomerUsername (string),**
89 +(% element-id="1787" %)|(% element-id="1786" %)4|(% element-id="1785" %)Receives the list of Customers, and will check for each customer it needs to request a new/changed labdelivery file based on the ChangedTimestamp.|(% element-id="1784" %) |(% element-id="1782" %) |(% element-id="1780" %) |(% element-id="1778" %)If a customer is not longer in this list, TerraIndex can remove this customercode from the customer database.|(% element-id="1777" %)
90 +(% element-id="1775" %)|(% element-id="1774" %)5|(% element-id="1773" %)Sends a request to the function: GetProductList() if it has changed.|=(% element-id="1772" %)>|(% element-id="1771" %) |(% element-id="1769" %)(% element-id="1768" %)**WebserviceUsername (string), **(%%)
91 +(% element-id="1766" %)**WebservicePassword (string),**(%%)
92 +(% element-id="1764" %)**CustomerUsername (string),**(%%)
65 65  LabID (int),
66 66  CustomerCode (string),
67 67  LanguageCode (string, default 'nld' volgens ISO 639-3-codes),
68 68  SIKBVersion (string, default: '13.4.0'),
69 -UseZipStream/UseZip (bool, default: 'false')|(((
97 +UseZipStream/UseZip (bool, default: 'false')|(% element-id="1758" %)(% element-id="1757" %)
98 +(((
99 +(% element-id="1756" %)
70 70  We start with dutch, then extend with multiple languages, TerraIndex is in the lead to request multiple languages.
71 71  TerraIndex uses: 'fra', 'nld', 'eng', 'spa', 'deu', 'ita', 'por', 'dan'
72 72  
73 73  
104 +(% element-id="1752" %)
74 74  Besides SIKB 13.4.0, TerraIndex also supports 9.0.0/8.0.0 etc.
75 -)))|
76 -|6| | |Reveives a request to create a labdelivery file in a certain version of SIKB. It will generate the file.| | |
77 -|7| |<=|Sends back the SIKB file, as a Base64 encoded string, with or without using a zipstream.|ResultCode (),
106 +
107 +(% element-id="1752" %)
108 +~==> nle Do you want to mention these old versions?
109 +)))|(% element-id="1751" %)
110 +(% element-id="1749" %)|(% element-id="1748" %)6|(% element-id="1747" %) |(% element-id="1745" %) |(% element-id="1743" %)Reveives a request to create a labdelivery file in a certain version of SIKB. It will generate the file.|(% element-id="1742" %) |(% element-id="1740" %) |(% element-id="1738" %)
111 +(% element-id="1736" %)|(% element-id="1735" %)7|(% element-id="1734" %) |(% element-id="1732" %)<=|(% element-id="1731" %)Sends back the SIKB file, as a Base64 encoded string, with or without using a zipstream.|(% element-id="1730" %)ResultCode (),
78 78  ErrorMessage (string),
79 79  FileContent_Base64 (string),
80 -UseZipStream/UseZip (bool, default: 'false')| |1 = Success,
114 +UseZipStream/UseZip (bool, default: 'false')|(% element-id="1726" %) |(% element-id="1724" %)1 = Success,
81 81  2 = GeneralError,
82 82  3 = WrongSIKBVersion,
83 83  4 = InvalidCredentials,
... ... @@ -87,15 +87,19 @@
87 87  8 = InvalidOrderId,
88 88  9 = OrderIdAlreadyApproved
89 89  10 = PDFNotAvailable
90 -|8|Receives the DeliveryFile and saves the file for import into customer database.| | | | |
91 -|9|Go back to step 5, for every Customer code, every language.| | | | |
92 -|10|Process the LabDeliveryFiles| | | | |
124 +(% element-id="1714" %)|(% element-id="1713" %)8|(% element-id="1712" %)Receives the DeliveryFile and saves the file for import into customer database.|(% element-id="1711" %) |(% element-id="1709" %) |(% element-id="1707" %) |(% element-id="1705" %) |(% element-id="1703" %)
125 +(% element-id="1701" %)|(% element-id="1700" %)9|(% element-id="1699" %)Go back to step 5, for every Customer code, every language.|(% element-id="1698" %) |(% element-id="1696" %) |(% element-id="1694" %) |(% element-id="1692" %) |(% element-id="1690" %)
126 +(% element-id="1688" %)|(% element-id="1687" %)10|(% element-id="1686" %)Process the LabDeliveryFiles|(% element-id="1685" %) |(% element-id="1683" %) |(% element-id="1681" %) |(% element-id="1679" %) |(% element-id="1677" %)
93 93  
94 -== Get Customers (POST) ==
128 +(% element-id="1675" %)
129 +== (% element-id="1674" %)Get Customers (POST)(%%) ==
95 95  
96 -=== Request example ===
131 +(% element-id="1673" %)
132 +=== (% element-id="1672" %)Request example(%%) ===
97 97  
98 -|(((
134 +(% element-id="1671" %)
135 +(% element-id="1669" %)|(% element-id="1668" %)(% element-id="1667" %)
136 +(((
99 99  {{code language="C#"}}
100 100  public GetCustomersCall.Response GetCustomers(string WebserviceUsername, string WebservicePassword, string CustomerUsername)
101 101          {
... ... @@ -140,32 +140,44 @@
140 140          }
141 141  {{/code}}
142 142  
181 +(% element-id="1566" %)
143 143  
144 144  )))
145 145  
146 -|(((
185 +(% element-id="1564" %)
186 +(% element-id="1562" %)|(% element-id="1561" %)(% element-id="1560" %)
187 +(((
188 +(% element-id="1559" %)
147 147  POST https:~/~/<URL>/GetCustomers HTTP/1.1
148 148  
191 +(% element-id="1558" %)
149 149  Content-Type: application/x-www-form-urlencoded
150 150  
194 +(% element-id="1557" %)
151 151  Host: 81.175.89.24
152 152  
197 +(% element-id="1556" %)
153 153  Content-Length: 115
154 154  
200 +(% element-id="1555" %)
155 155  Expect: 100-continue
156 156  
157 157  
204 +(% element-id="1552" %)
158 158  userName=<webservice_username>&password=<Webservice_password>&customerUsername=<customer_username or token>
159 159  )))
160 160  
161 -=== Response example ===
208 +(% element-id="1551" %)
209 +=== (% element-id="1550" %)Response example(%%) ===
162 162  
163 -|(((
211 +(% element-id="1549" %)
212 +(% element-id="1547" %)|(% element-id="1546" %)(% element-id="1545" %)
213 +(((
164 164  {{code language="XML"}}
165 165  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
166 166  <Response><Customers>
167 -  <Customer LabId="1" LabName="Example Laboratorium" CustomerId="300" CustomerName="Adviesbureau De bodemkoning - Rotterdam" LastModifiedOnClient="2019-05-08T11:05:14.17+02:00" />
168 -  <Customer LabId="1" LabName="Example Laboratorium" CustomerId="656" CustomerName="Adviesbureau De bodemkoning - Delft" LastModifiedOnClient="2019-04-19T13:20:10.123+02:00" />
217 +  <Customer LabId="1" LabName="Example Laboratorium" CustomerId="300" CustomerName="Adviesbureau De bodemkoning - Rotterdam" LastModifiedOnClient="2019-05-08T11:05:14.17+02:00" ></Customer>
218 +  <Customer LabId="1" LabName="Example Laboratorium" CustomerId="656" CustomerName="Adviesbureau De bodemkoning - Delft" LastModifiedOnClient="2019-04-19T13:20:10.123+02:00" ></Customer>
169 169  </Customers>
170 170  <Status>
171 171      <StatusCode>1</StatusCode>
... ... @@ -175,193 +175,276 @@
175 175  </Response>
176 176  {{/code}}
177 177  
228 +(% element-id="1492" %)
178 178  
179 179  )))
180 180  
181 -== Get Products (POST) ==
232 +(% element-id="1490" %)
233 +== (% element-id="1489" %)Get Products (POST)(%%) ==
182 182  
183 -=== Request example ===
235 +(% element-id="1488" %)
236 +=== (% element-id="1487" %)Request example(%%) ===
184 184  
185 -|(((
238 +(% element-id="1486" %)
239 +(% element-id="1484" %)|(% element-id="1483" %)(% element-id="1482" %)
240 +(((
241 +(% element-id="1481" %)
186 186  public GetProductsCall.Response GetProductList(string WebserviceUsername, string WebservicePassword, string CustomerUsername, string customerid, int labid, string sikbVersion, string languageCode)
187 187  
244 +(% element-id="1480" %)
188 188   {
189 189  
190 190  
248 +(% element-id="1477" %)
191 191   GetProductsCall.Response set = new GetProductsCall.Response();
192 192  
193 193  
252 +(% element-id="1474" %)
194 194   try
195 195  
255 +(% element-id="1473" %)
196 196   {
197 197  
258 +(% element-id="1472" %)
198 198   bool useZipstream = true;
199 199  
261 +(% element-id="1471" %)
200 200   var content = new FormUrlEncodedContent(new[]
201 201  
264 +(% element-id="1470" %)
202 202   {
203 203  
267 +(% element-id="1469" %)
204 204   new KeyValuePair<string, string>("userName", WebserviceUsername),
205 205  
270 +(% element-id="1468" %)
206 206   new KeyValuePair<string, string>("password", WebservicePassword),
207 207  
273 +(% element-id="1467" %)
208 208   new KeyValuePair<string, string>("customerUsername", CustomerUsername),
209 209  
276 +(% element-id="1466" %)
210 210   new KeyValuePair<string, string>("languageCode", languageCode),
211 211  
279 +(% element-id="1465" %)
212 212   new KeyValuePair<string, string>("clientId", customerid),
213 213  
282 +(% element-id="1464" %)
214 214   new KeyValuePair<string, string>("sikbVersion", sikbVersion),
215 215  
285 +(% element-id="1463" %)
216 216   new KeyValuePair<string, string>("useZip", useZipstream.ToString() ),
217 217  
288 +(% element-id="1462" %)
218 218   });
219 219  
220 220  
292 +(% element-id="1459" %)
221 221   HttpResponseMessage response = _HttpClient.PostAsync(_HttpClient.BaseAddress + "/GetProducts", content).Result;
222 222  
295 +(% element-id="1458" %)
223 223   response.EnsureSuccessStatusCode();
224 224  
298 +(% element-id="1457" %)
225 225   string responseMessage = response.Content.ReadAsStringAsync().Result;
226 226  
227 227  
302 +(% element-id="1454" %)
228 228   if (string.IsNullOrEmpty(responseMessage))
229 229  
305 +(% element-id="1453" %)
230 230   {
231 231  
308 +(% element-id="1452" %)
232 232   throw new Exception("Empty response from: [" + _HttpClient.BaseAddress + " /GetProducts" + "]");
233 233  
311 +(% element-id="1451" %)
234 234   }
235 235  
314 +(% element-id="1450" %)
236 236   using (var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseMessage~)~)~)
237 237  
317 +(% element-id="1449" %)
238 238   {
239 239  
320 +(% element-id="1448" %)
240 240   XmlSerializer serializer = new XmlSerializer(typeof(GetProductsCall.Response));
241 241  
323 +(% element-id="1447" %)
242 242   set = (GetProductsCall.Response)serializer.Deserialize(ms);
243 243  
326 +(% element-id="1446" %)
244 244   }
245 245  
246 246  
330 +(% element-id="1443" %)
247 247   if (useZipstream && !string.IsNullOrEmpty(set.FileContent))
248 248  
333 +(% element-id="1442" %)
249 249   {
250 250  
336 +(% element-id="1441" %)
251 251   ~/~/convert from base64 string back to normal
252 252  
339 +(% element-id="1440" %)
253 253   ~/~/first check for real Base64, by checking there is no 'xml'  in it
254 254  
342 +(% element-id="1439" %)
255 255   if (!set.FileContent.Contains("<labaanlevering"))
256 256  
345 +(% element-id="1438" %)
257 257   {
258 258  
348 +(% element-id="1437" %)
259 259   set.FileContent = ZipStreamHelper.DecompressBase64StringToString(set.FileContent);
260 260  
351 +(% element-id="1436" %)
261 261   }
262 262  
354 +(% element-id="1435" %)
263 263   }
264 264  
265 265  
358 +(% element-id="1432" %)
266 266   }
267 267  
361 +(% element-id="1431" %)
268 268   catch (Exception ex)
269 269  
364 +(% element-id="1430" %)
270 270   {
271 271  
367 +(% element-id="1429" %)
272 272   #region handle exception
273 273  
274 274  
371 +(% element-id="1426" %)
275 275   set.Status = new BusinessEntities.LabRestService.GetProductsCall.ResponseStatus();
276 276  
374 +(% element-id="1425" %)
277 277   set.Status.StatusCode = ((int)ResultCodes.GeneralError).ToString();
278 278  
377 +(% element-id="1424" %)
279 279   set.Status.ErrorMessage = "Exception occurred in GetProducts (username: " + WebserviceUsername + ", password: " + WebservicePassword + ") with message: " + ex.Message;
280 280  
281 281  
381 +(% element-id="1421" %)
282 282   ex.Data.Add("WebserviceUsername", WebserviceUsername);
283 283  
384 +(% element-id="1420" %)
284 284   ex.Data.Add("WebservicePassword", WebservicePassword);
285 285  
387 +(% element-id="1419" %)
286 286   ex.Data.Add("CustomerUsername", CustomerUsername);
287 287  
390 +(% element-id="1418" %)
288 288   ex.Data.Add("sikbVersion", sikbVersion);
289 289  
393 +(% element-id="1417" %)
290 290   ex.Data.Add("customerid", customerid);
291 291  
396 +(% element-id="1416" %)
292 292   ex.Data.Add("languageCode", languageCode);
293 293  
294 294  
400 +(% element-id="1413" %)
295 295   ExceptionHandler.HandleException(ex);
296 296  
403 +(% element-id="1412" %)
297 297   #endregion
298 298  
406 +(% element-id="1411" %)
299 299   }
300 300  
301 301  
410 +(% element-id="1408" %)
302 302   return set;
303 303  
413 +(% element-id="1407" %)
304 304   }
305 305  )))
306 306  
307 -|(((
417 +(% element-id="1406" %)
418 +(% element-id="1404" %)|(% element-id="1403" %)(% element-id="1402" %)
419 +(((
420 +(% element-id="1401" %)
308 308  POST https:~/~/<URL>/GetProducts HTTP/1.1
309 309  
423 +(% element-id="1400" %)
310 310  Content-Type: application/x-www-form-urlencoded
311 311  
426 +(% element-id="1399" %)
312 312  Host: 81.175.89.24
313 313  
429 +(% element-id="1398" %)
314 314  Content-Length: 179
315 315  
432 +(% element-id="1397" %)
316 316  Expect: 100-continue
317 317  
318 318  
436 +(% element-id="1394" %)
319 319  userName=<webservice_username>&password=<Webservice_password>&customerUsername=<customer_username or token>&languageCode=nld&clientId=300&sikbVersion=13.5.0&useZip=True
320 320  )))
321 321  
322 -=== Response example ===
440 +(% element-id="1393" %)
441 +=== (% element-id="1392" %)Response example(%%) ===
323 323  
324 -|(((
443 +(% element-id="1391" %)
444 +(% element-id="1389" %)|(% element-id="1388" %)(% element-id="1387" %)
445 +(((
446 +(% element-id="1386" %)
325 325  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
326 326  
449 +(% element-id="1385" %)
327 327  <Response>
328 328  
452 +(% element-id="1384" %)
329 329  <FileContent> {SIKB FILE in ZIPSTREAM BASE64 format}</FileContent>
330 330  
455 +(% element-id="1383" %)
331 331  <Status>
332 332  
458 +(% element-id="1382" %)
333 333  <StatusCode>1</StatusCode>
334 334  
461 +(% element-id="1381" %)
335 335  <StatusCodeDescription>OK</StatusCodeDescription>
336 336  
464 +(% element-id="1380" %)
337 337  <ErrorMessage></ErrorMessage>
338 338  
467 +(% element-id="1379" %)
339 339  </Status></Response>
340 340  )))
341 341  
342 -= Gebruikersaccount controleren. =
471 +(% element-id="1378" %)
472 += (% element-id="1377" %)Useraccount Checkup.(%%) =
343 343  
474 +(% element-id="1374" %)
475 +== (% element-id="1373" %)Solution/Design(%%) ==
344 344  
345 -== Oplossing/Design ==
477 +(% element-id="1372" %)
478 +With every call we will no longer send customer usernames and customer passwords. We want to use a fixed Machine 2 Machine username and password for TerraIndex. So we need to be able to quickly check whether the Customer username we want to use exists, and is bound to our TerraIndex fixed Machine 2 machine account.
346 346  
347 -Bij iedere call gaan we geen username van de klanten meer sturen met een vast webservice username en password voor TerraIndex. Hier willen we ook snel op kunnen controleren of deze wel bestaat.
348 -
480 +(% element-id="1371" %)
349 349  WebserviceUsername (string),
350 350  WebservicePassword (string),
351 351  CustomerUsername (string)
352 352  
353 353  
354 -Hiervoor maken we een Webserice voor ValidCredentials Check:
486 +(% element-id="1366" %)
487 +Therefore we call a Webserice for ValidCredentials Check:
355 355  
356 356  
357 -(% class="table-hover" %)
358 -|**Action**|**TerraIndex**| |**Laboratorium**|**Parameters/Message**|**Remarks**|**ResultCodes**
359 -|1|Sends a request to the function: ValidCredentials().|=>| |WebserviceUsername (string),
490 +(% class="table-hover" element-id="1363" %)
491 +(% element-id="1361" %)|(% element-id="1360" %)(% element-id="1359" %)**Action**|(% element-id="1358" %)(% element-id="1357" %)**TerraIndex**|(% element-id="1356" %) |(% element-id="1354" %)(% element-id="1353" %)**Laboratorium**|(% element-id="1352" %)(% element-id="1351" %)**Parameters/Message**|(% element-id="1350" %)(% element-id="1349" %)**Remarks**|(% element-id="1348" %)(% element-id="1347" %)**ResultCodes**
492 +(% element-id="1346" %)|(% element-id="1345" %)1|(% element-id="1344" %)Sends a request to the function: ValidCredentials().|=(% element-id="1343" %)>|(% element-id="1342" %) |(% element-id="1340" %)WebserviceUsername (string),
360 360  WebservicePassword (string),
361 -CustomerUsername (string)|We want to skip the Password of the customer, and we use the WebserviceUsername + WebservicePassword for real authentication.|
362 -|2| | |Receives the request and checks the combination of WebserviceUsername and WebservicePassword is Ok. Then checks the CustomerUsername is valid.| | |
363 -|3| |<=|Sends back a Success of InvalidCredentials|ResultCode (),
364 -ErrorMessage (string),| |1 = Success,
494 +CustomerUsername (string)|(% element-id="1337" %)We want to skip the Password of the customer, and we use the WebserviceUsername + WebservicePassword for real authentication.|(% element-id="1336" %)
495 +(% element-id="1334" %)|(% element-id="1333" %)2|(% element-id="1332" %) |(% element-id="1330" %) |(% element-id="1328" %)Receives the request and checks the combination of WebserviceUsername and WebservicePassword is Ok. Then checks the CustomerUsername is valid.|(% element-id="1327" %) |(% element-id="1325" %) |(% element-id="1323" %)
496 +(% element-id="1321" %)|(% element-id="1320" %)3|(% element-id="1319" %) |(% element-id="1317" %)<=|(% element-id="1316" %)Sends back a Success of InvalidCredentials|(% element-id="1315" %)ResultCode (),
497 +ErrorMessage (string),|(% element-id="1313" %) |(% element-id="1311" %)1 = Success,
365 365  2 = GeneralError,
366 366  3 = WrongSIKBVersion,
367 367  4 = InvalidCredentials,
... ... @@ -372,149 +372,215 @@
372 372  9 = OrderIdAlreadyApproved
373 373  10 = PDFNotAvailable
374 374  
375 -== Check ValidCredentials (POST) ==
508 +(% element-id="1301" %)
509 +== (% element-id="1300" %)Check ValidCredentials (POST)(%%) ==
376 376  
377 -=== Request example ===
511 +(% element-id="1299" %)
512 +=== (% element-id="1298" %)Request example(%%) ===
378 378  
379 -|(((
514 +(% element-id="1297" %)
515 +(% element-id="1295" %)|(% element-id="1294" %)(% element-id="1293" %)
516 +(((
517 +(% element-id="1292" %)
380 380  public ValidCredentialsCall.Response ValidCredentials(string WebserviceUsername, string WebservicePassword, string CustomerUsername, string customerid)
381 381  
520 +(% element-id="1291" %)
382 382   {
383 383  
523 +(% element-id="1290" %)
384 384   ValidCredentialsCall.Response set = new ValidCredentialsCall.Response();
385 385  
386 386  
527 +(% element-id="1287" %)
387 387   try
388 388  
530 +(% element-id="1286" %)
389 389   {
390 390  
391 391  
534 +(% element-id="1283" %)
392 392   var content = new FormUrlEncodedContent(new[]
393 393  
537 +(% element-id="1282" %)
394 394   {
395 395  
540 +(% element-id="1281" %)
396 396   new KeyValuePair<string, string>("userName", WebserviceUsername),
397 397  
543 +(% element-id="1280" %)
398 398   new KeyValuePair<string, string>("password", WebservicePassword),
399 399  
546 +(% element-id="1279" %)
400 400   ~/~/new KeyValuePair<string, string>("clientId", customerid),   ~/~/ Optional
401 401  
549 +(% element-id="1278" %)
402 402   new KeyValuePair<string, string>("customerUsername", CustomerUsername),
403 403  
552 +(% element-id="1277" %)
404 404   });
405 405  
406 406  
556 +(% element-id="1274" %)
407 407   HttpResponseMessage response = _HttpClient.PostAsync(_HttpClient.BaseAddress + "/ValidCredentials", content).Result;
408 408  
559 +(% element-id="1273" %)
409 409   response.EnsureSuccessStatusCode();
410 410  
562 +(% element-id="1272" %)
411 411   string responseMessage = response.Content.ReadAsStringAsync().Result;
412 412  
413 413  
566 +(% element-id="1269" %)
414 414   if (string.IsNullOrEmpty(responseMessage))
415 415  
569 +(% element-id="1268" %)
416 416   {
417 417  
572 +(% element-id="1267" %)
418 418   throw new Exception("Empty response from: [" + _HttpClient.BaseAddress + " / ValidCredentials" + "]");
419 419  
575 +(% element-id="1266" %)
420 420   }
421 421  
578 +(% element-id="1265" %)
422 422   using (var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseMessage~)~)~)
423 423  
581 +(% element-id="1264" %)
424 424   {
425 425  
584 +(% element-id="1263" %)
426 426   XmlSerializer serializer = new XmlSerializer(typeof(ValidCredentialsCall.Response));
427 427  
587 +(% element-id="1262" %)
428 428   set = (ValidCredentialsCall.Response)serializer.Deserialize(ms);
429 429  
430 430  
591 +(% element-id="1259" %)
431 431   return set;
432 432  
594 +(% element-id="1258" %)
433 433   }
434 434  
435 435  
598 +(% element-id="1255" %)
436 436   }
437 437  
601 +(% element-id="1254" %)
438 438   catch (Exception ex)
439 439  
604 +(% element-id="1253" %)
440 440   {
441 441  
607 +(% element-id="1252" %)
442 442   #region handle exception
443 443  
444 444  
611 +(% element-id="1249" %)
445 445   set.Status = new BusinessEntities.LabRestService.ValidCredentialsCall.ResponseStatus();
446 446  
614 +(% element-id="1248" %)
447 447   set.Status.StatusCode = ((int)ResultCodes.GeneralError).ToString();
448 448  
617 +(% element-id="1247" %)
449 449   set.Status.ErrorMessage = "Exception occurred in GetValidCredentials (username: " + WebserviceUsername + ", with message: " + ex.Message;
450 450  
451 451  
621 +(% element-id="1244" %)
452 452   ex.Data.Add("WebserviceUsername", WebserviceUsername);
453 453  
624 +(% element-id="1243" %)
454 454   ex.Data.Add("WebservicePassword", WebservicePassword);
455 455  
627 +(% element-id="1242" %)
456 456   ex.Data.Add("CustomerUsername", CustomerUsername);
457 457  
458 458  
631 +(% element-id="1239" %)
459 459   ExceptionHandler.HandleException(ex);
460 460  
634 +(% element-id="1238" %)
461 461   #endregion
462 462  
637 +(% element-id="1237" %)
463 463   }
464 464  
465 465  
641 +(% element-id="1234" %)
466 466   return set;
467 467  
644 +(% element-id="1233" %)
468 468   }
469 469  )))
470 470  
471 -|(((
648 +(% element-id="1232" %)
649 +(% element-id="1230" %)|(% element-id="1229" %)(% element-id="1228" %)
650 +(((
651 +(% element-id="1227" %)
472 472  POST https:~/~/<URL>/ValidCredentials HTTP/1.1
473 473  
654 +(% element-id="1226" %)
474 474  Content-Type: application/x-www-form-urlencoded
475 475  
657 +(% element-id="1225" %)
476 476  Host: 81.175.89.24
477 477  
660 +(% element-id="1224" %)
478 478  Content-Length: 125
479 479  
663 +(% element-id="1223" %)
480 480  Expect: 100-continue
481 481  
482 482  
667 +(% element-id="1220" %)
483 483  userName=<webservice_username>&password=<Webservice_password>&clientId=<optional otherwise empty>&customerUsername=<customer_username or token>
484 484  )))
485 485  
486 -=== Response example ===
671 +(% element-id="1219" %)
672 +=== (% element-id="1218" %)Response example(%%) ===
487 487  
488 -|(((
674 +(% element-id="1217" %)
675 +(% element-id="1215" %)|(% element-id="1214" %)(% element-id="1213" %)
676 +(((
677 +(% element-id="1212" %)
489 489  <?xml version="1.0" encoding="UTF-8" standalone="no"?><Response>
490 490  
680 +(% element-id="1211" %)
491 491  <Status>
492 492  
683 +(% element-id="1210" %)
493 493  <StatusCode>1</StatusCode>
494 494  
686 +(% element-id="1209" %)
495 495  <StatusCodeDescription>OK</StatusCodeDescription>
496 496  
689 +(% element-id="1208" %)
497 497  <ErrorMessage></ErrorMessage>
498 498  
692 +(% element-id="1207" %)
499 499  </Status>
500 500  
695 +(% element-id="1206" %)
501 501  </Response>
502 502  )))
503 503  
504 -= Opdrachten versturen (POST) =
699 +(% element-id="1205" %)
700 += (% element-id="1204" %)Labassignment request delivery(POST)(%%) =
505 505  
506 -== Oplossing/Design ==
702 +(% element-id="1203" %)
703 +== (% element-id="1202" %)Solution/Design(%%) ==
507 507  
508 -Hiervoor maken we een Webserice voor CreateOrder om de opdracht aan te maken.
509 -Na de create willen we in de toekomst een overzicht van het laboratorium in bijv. PDF tonen, waarbij de gebruiker de prijzen ziet en kan bevestigen of annuleren.
510 -Afhankelijk van de keuze van de gebruiker bij het laboratorium, roept TerraIndex de ApproveOrder of de CancelOrder aan.
705 +(% element-id="1201" %)
706 +For this we create a Webserice for CreateOrder to create the order in the lab system.
707 +After the creation, we would like to show an order overview of the laboratory in the future in PDF. The user can see the prices and can confirm or cancel.
708 +Depending on the user's choice at the laboratory, to support this or not, TerraIndex calls the ApproveOrder or the CancelOrder.
511 511  
512 -Voor nu gaan we er vanuit dat wij dit niet kunnen, en stuurt TerraIndex needsApprovalIsSupported = false mee. Mocht dit True worden in de toekomst, dan kan het Lab bij het result aangeven of het wel of niet nodig is, in het NeedsApprove veld.
710 +(% element-id="0" %)
711 +For default we assume that we cannot do this yet, and TerraIndex sends needsApprovalIsSupported = false. If this becomes true in the future, the Lab can indicate whether or not it is necessary in the NeedsApprove field.
513 513  
514 514  
515 -(% class="table-hover" %)
516 -|**Action**|**TerraIndex**| |**Laboratorium**|**Parameters/Message**|**Remarks**|**ResultCodes**
517 -|1|Sends a request to the function: CreateOrder().|=>| |WebserviceUsername (string),
714 +(% class="table-hover" element-id="1195" %)
715 +(% element-id="1193" %)|(% element-id="1192" %)(% element-id="1191" %)**Action**|(% element-id="1190" %)(% element-id="1189" %)**TerraIndex**|(% element-id="1188" %) |(% element-id="1186" %)(% element-id="1185" %)**Laboratorium**|(% element-id="1184" %)(% element-id="1183" %)**Parameters/Message**|(% element-id="1182" %)(% element-id="1181" %)**Remarks**|(% element-id="1180" %)(% element-id="1179" %)**ResultCodes**
716 +(% element-id="1178" %)|(% element-id="1177" %)1|(% element-id="1176" %)Sends a request to the function: CreateOrder().|=(% element-id="1175" %)>|(% element-id="1174" %) |(% element-id="1172" %)WebserviceUsername (string),
518 518  WebservicePassword (string),
519 519  CustomerUsername (string),
520 520  FileContent_Base64 (string),
... ... @@ -521,22 +521,22 @@
521 521  UseZipStream/UseZip (bool, default: 'false'),
522 522  CustomerCode (string),
523 523  SIKBVersion (string, default: '13.4.0'),
524 -needsApprovalIsSupported (bool)|SIKB Version included, so labs can quickly check the version.
723 +needsApprovalIsSupported (bool)|(% element-id="1164" %)SIKB Version included, so labs can quickly check the version.
525 525  Besides SIKB 13.4.0, TerraIndex also supports 9.0.0.
526 526  \\Before sending the SIKB, validate to the XSD!
527 527  And to the XSLT?
528 528  \\needsApprovalIsSupported = false; means we dont get PDF with offerte. This will make is faster.
529 -needsApprovalIsSupported = true; means lab will check the user setting to send a PDF Offerte back or not. (If the lab can support this.)|
530 -|2| | |Receives the request and checks the credentials.| | |
531 -|(% colspan="1" %)3|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)Credentials are valid, the Filecontent is checked on a valid Labassignment. When valid it will be processed and a OrderId is given.|(% colspan="1" %) |(% colspan="1" %)Laboratorium saves the Sample GUIDs if it's SIKB 13 or higher.
532 -Otherwise we use the idanlmons unique ID.|(% colspan="1" %)
533 -|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)Based on what customer, the order will be approved or the approve needs to be done in laboratorium system.|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
534 -|4| |<=|Sends back a Success with the new OrderId|ResultCode (),
728 +needsApprovalIsSupported = true; means lab will check the user setting to send a PDF Offerte back or not. (If the lab can support this.)|(% element-id="1156" %)
729 +(% element-id="1154" %)|(% element-id="1153" %)2|(% element-id="1152" %) |(% element-id="1150" %) |(% element-id="1148" %)Receives the request and checks the credentials.|(% element-id="1147" %) |(% element-id="1145" %) |(% element-id="1143" %)
730 +(% element-id="1141" %)|(% colspan="1" element-id="1140" %)3|(% colspan="1" element-id="1139" %) |(% colspan="1" element-id="1137" %) |(% colspan="1" element-id="1135" %)Credentials are valid, the Filecontent is checked on a valid Labassignment. When valid it will be processed and a OrderId is given.|(% colspan="1" element-id="1134" %) |(% colspan="1" element-id="1132" %)Laboratorium saves the Sample GUIDs if it's SIKB 13 or higher.
731 +Otherwise we use the idanlmons unique ID.|(% colspan="1" element-id="1130" %)
732 +(% element-id="1128" %)|(% colspan="1" element-id="1127" %) |(% colspan="1" element-id="1125" %) |(% colspan="1" element-id="1123" %) |(% colspan="1" element-id="1121" %)Based on what customer, the order will be approved or the approve needs to be done in laboratorium system.|(% colspan="1" element-id="1120" %) |(% colspan="1" element-id="1118" %) |(% colspan="1" element-id="1116" %)
733 +(% element-id="1114" %)|(% element-id="1113" %)4|(% element-id="1112" %) |(% element-id="1110" %)<=|(% element-id="1109" %)Sends back a Success with the new OrderId|(% element-id="1108" %)ResultCode (),
535 535  ErrorMessage (string),
536 536  OrderId (string),
537 537  NeedsApprove (bool),
538 538  FileContent_Base64 (string),
539 -UseZipStream/UseZip (bool, default: 'false'),|In the future labs will send back the PDF with the prices and some checks. To approve or cancel. For the first version this is not required yet and the fileContent remains empty.|1 = Success,
738 +UseZipStream/UseZip (bool, default: 'false'),|(% element-id="1102" %)In the future labs will send back the PDF with the prices and some checks. To approve or cancel. For the first version this is not required yet and the fileContent remains empty.|(% element-id="1101" %)1 = Success,
540 540  2 = GeneralError,
541 541  3 = WrongSIKBVersion,
542 542  4 = InvalidCredentials,
... ... @@ -546,8 +546,10 @@
546 546  8 = InvalidOrderId,
547 547  9 = OrderIdAlreadyApproved
548 548  10 = PDFNotAvailable
549 -|(% colspan="1" %)6|(% colspan="1" %)Receives the OrderId, and saves it.
550 - |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)(((
748 +(% element-id="1091" %)|(% colspan="1" element-id="1090" %)6|(% colspan="1" element-id="1089" %)Receives the OrderId, and saves it.
749 + |(% colspan="1" element-id="1086" %) |(% colspan="1" element-id="1084" %) |(% colspan="1" element-id="1082" %) |(% colspan="1" element-id="1080" %)(% element-id="1079" %)
750 +(((
751 +(% element-id="1078" %)
551 551  Default for now laboratorium will send:
552 552  NeedsApprove = False,
553 553  PDF = Empty,
... ... @@ -554,23 +554,25 @@
554 554  Zipstream = False,
555 555  
556 556  
758 +(% element-id="1072" %)
557 557  In the future, do something with the PDF and show the PDF to users to Approve or Cancel.
558 558  This will be done by; NeedsApprove = true.
559 559  \\If NeedsApprove is False, the order is Processed and can't be changed in TI. Like it is now.
560 560  
763 +(% element-id="1068" %)
561 561  
562 -)))|(% colspan="1" %)
563 -|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
564 -|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
565 -|(% colspan="1" %) |(% colspan="1" %)**IN THE FUTURE: APPROVEORDER**|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
566 -|(% colspan="1" %)7|(% colspan="1" %)Sends a request to the function: ApproveOrder().|(% colspan="1" %)=>|(% colspan="1" %) |(% colspan="1" %)WebserviceUsername (string),
765 +)))|(% colspan="1" element-id="1066" %)
766 +(% element-id="1064" %)|(% colspan="1" element-id="1063" %) |(% colspan="1" element-id="1061" %) |(% colspan="1" element-id="1059" %) |(% colspan="1" element-id="1057" %) |(% colspan="1" element-id="1055" %) |(% colspan="1" element-id="1053" %) |(% colspan="1" element-id="1051" %)
767 +(% element-id="1049" %)|(% colspan="1" element-id="1048" %) |(% colspan="1" element-id="1046" %) |(% colspan="1" element-id="1044" %) |(% colspan="1" element-id="1042" %) |(% colspan="1" element-id="1040" %) |(% colspan="1" element-id="1038" %) |(% colspan="1" element-id="1036" %)
768 +(% element-id="1034" %)|(% colspan="1" element-id="1033" %) |(% colspan="1" element-id="1031" %)(% element-id="1030" %)**IN THE FUTURE: APPROVEORDER**|(% colspan="1" element-id="1029" %) |(% colspan="1" element-id="1027" %) |(% colspan="1" element-id="1025" %) |(% colspan="1" element-id="1023" %) |(% colspan="1" element-id="1021" %)
769 +(% element-id="1019" %)|(% colspan="1" element-id="1018" %)7|(% colspan="1" element-id="1017" %)Sends a request to the function: ApproveOrder().|(% colspan="1" element-id="1016" %)=>|(% colspan="1" element-id="1015" %) |(% colspan="1" element-id="1013" %)WebserviceUsername (string),
567 567  WebservicePassword (string),
568 568  CustomerUsername (string),
569 -OrderId (string)|(% colspan="1" %) |(% colspan="1" %)
570 -|(% colspan="1" %)8|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)Receives the approve and checks the credentials and the OrderId.|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
571 -|(% colspan="1" %)9|(% colspan="1" %) |(% colspan="1" %)<=|(% colspan="1" %)Sends back a Success with the new CertificateNr|(% colspan="1" %)ResultCode (),
772 +OrderId (string)|(% colspan="1" element-id="1009" %) |(% colspan="1" element-id="1007" %)
773 +(% element-id="1005" %)|(% colspan="1" element-id="1004" %)8|(% colspan="1" element-id="1003" %) |(% colspan="1" element-id="1001" %) |(% colspan="1" element-id="999" %)Receives the approve and checks the credentials and the OrderId.|(% colspan="1" element-id="998" %) |(% colspan="1" element-id="996" %) |(% colspan="1" element-id="994" %)
774 +(% element-id="992" %)|(% colspan="1" element-id="991" %)9|(% colspan="1" element-id="990" %) |(% colspan="1" element-id="988" %)<=|(% colspan="1" element-id="987" %)Sends back a Success with the new CertificateNr|(% colspan="1" element-id="986" %)ResultCode (),
572 572  ErrorMessage (string),
573 -CertificateNr (string)|(% colspan="1" %)This process takes too long at some labs. Maybe this won't be workable...so maybe the CertificateNr return won't be possible. In this case, leave the CertificateNr empty. TerraIndex will read it from GetOrderStatus calls.|(% colspan="1" %)1 = Success,
776 +CertificateNr (string)|(% colspan="1" element-id="983" %)This process takes too long at some labs. Maybe this won't be workable...so maybe the CertificateNr return won't be possible. In this case, leave the CertificateNr empty. TerraIndex will read it from GetOrderStatus calls.|(% colspan="1" element-id="982" %)1 = Success,
574 574  2 = GeneralError,
575 575  3 = WrongSIKBVersion,
576 576  4 = InvalidCredentials,
... ... @@ -580,16 +580,16 @@
580 580  8 = InvalidOrderId,
581 581  9 = OrderIdAlreadyApproved
582 582  10 = PDFNotAvailable
583 -|(% colspan="1" %)10|(% colspan="1" %)Receives the CerificateNr and saves it.|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
584 -|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
585 -|(% colspan="1" %) |(% colspan="1" %)**IN THE FUTURE: CANCELORDER**|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
586 -|7|Sends a request to the function: CancelOrder().|=>| |WebserviceUsername (string),
786 +(% element-id="972" %)|(% colspan="1" element-id="971" %)10|(% colspan="1" element-id="970" %)Receives the CerificateNr and saves it.|(% colspan="1" element-id="969" %) |(% colspan="1" element-id="967" %) |(% colspan="1" element-id="965" %) |(% colspan="1" element-id="963" %) |(% colspan="1" element-id="961" %)
787 +(% element-id="959" %)|(% colspan="1" element-id="958" %) |(% colspan="1" element-id="956" %) |(% colspan="1" element-id="954" %) |(% colspan="1" element-id="952" %) |(% colspan="1" element-id="950" %) |(% colspan="1" element-id="948" %) |(% colspan="1" element-id="946" %)
788 +(% element-id="944" %)|(% colspan="1" element-id="943" %) |(% colspan="1" element-id="941" %)(% element-id="940" %)**IN THE FUTURE: CANCELORDER**|(% colspan="1" element-id="939" %) |(% colspan="1" element-id="937" %) |(% colspan="1" element-id="935" %) |(% colspan="1" element-id="933" %) |(% colspan="1" element-id="931" %)
789 +(% element-id="929" %)|(% element-id="928" %)7|(% element-id="927" %)Sends a request to the function: CancelOrder().|=(% element-id="926" %)>|(% element-id="925" %) |(% element-id="923" %)WebserviceUsername (string),
587 587  WebservicePassword (string),
588 588  CustomerUsername (string),
589 -OrderId (string)| |
590 -|8| | |Receives the cancel and checks the credentials and the OrderId.| | |
591 -|9| |<=|Sends back a Success |ResultCode (),
592 -ErrorMessage (string)| |1 = Success,
792 +OrderId (string)|(% element-id="919" %) |(% element-id="917" %)
793 +(% element-id="915" %)|(% element-id="914" %)8|(% element-id="913" %) |(% element-id="911" %) |(% element-id="909" %)Receives the cancel and checks the credentials and the OrderId.|(% element-id="908" %) |(% element-id="906" %) |(% element-id="904" %)
794 +(% element-id="902" %)|(% element-id="901" %)9|(% element-id="900" %) |(% element-id="898" %)<=|(% element-id="897" %)Sends back a Success |(% element-id="896" %)ResultCode (),
795 +ErrorMessage (string)|(% element-id="894" %) |(% element-id="892" %)1 = Success,
593 593  2 = GeneralError,
594 594  3 = WrongSIKBVersion,
595 595  4 = InvalidCredentials,
... ... @@ -599,323 +599,466 @@
599 599  8 = InvalidOrderId,
600 600  9 = OrderIdAlreadyApproved
601 601  10 = PDFNotAvailable
602 -|10|Removes the OrderId and the IsSend to False| | | |If OrderIsAleadyApproved, set the values to Approved and keep the OrderId and IsSend.|
603 -|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
805 +(% element-id="882" %)|(% element-id="881" %)10|(% element-id="880" %)Removes the OrderId and the IsSend to False|(% element-id="879" %) |(% element-id="877" %) |(% element-id="875" %) |(% element-id="873" %)If OrderIsAleadyApproved, set the values to Approved and keep the OrderId and IsSend.|(% element-id="872" %)
806 +(% element-id="870" %)|(% colspan="1" element-id="869" %) |(% colspan="1" element-id="867" %) |(% colspan="1" element-id="865" %) |(% colspan="1" element-id="863" %) |(% colspan="1" element-id="861" %) |(% colspan="1" element-id="859" %) |(% colspan="1" element-id="857" %)
604 604  
605 -== Create Order ==
808 +(% element-id="855" %)
809 +== (% element-id="854" %)Create Order(%%) ==
606 606  
607 -=== Request example ===
811 +(% element-id="853" %)
812 +=== (% element-id="852" %)Request example(%%) ===
608 608  
609 -|(((
814 +(% element-id="851" %)
815 +(% element-id="849" %)|(% element-id="848" %)(% element-id="847" %)
816 +(((
817 +(% element-id="846" %)
610 610  public CreateOrderResponse.Response SendLabAssignment(string WebserviceUsername, string WebservicePassword, string CustomerUsername, string customerid, string sikbVersion, string assignmentXML, string languageCode, bool needsApprovalIsSupported = false)
611 611  
820 +(% element-id="845" %)
612 612   {
613 613  
823 +(% element-id="844" %)
614 614   CreateOrderResponse.Response set = new CreateOrderResponse.Response();
615 615  
616 616  
827 +(% element-id="841" %)
617 617   try
618 618  
830 +(% element-id="840" %)
619 619   {
620 620  
833 +(% element-id="839" %)
621 621   bool useZipstream = true;
622 622  
623 623  
837 +(% element-id="836" %)
624 624   MultipartFormDataContent content = new MultipartFormDataContent();
625 625  
626 626  
841 +(% element-id="833" %)
627 627   ~/~/Add Formdata
628 628  
844 +(% element-id="832" %)
629 629   var formDataDictionary = new[]
630 630  
847 +(% element-id="831" %)
631 631   {
632 632  
850 +(% element-id="830" %)
633 633   new KeyValuePair<string, string>("userName", WebserviceUsername),
634 634  
853 +(% element-id="829" %)
635 635   new KeyValuePair<string, string>("password", WebservicePassword),
636 636  
856 +(% element-id="828" %)
637 637   new KeyValuePair<string, string>("customerUserName", CustomerUsername),
638 638  
859 +(% element-id="827" %)
639 639   new KeyValuePair<string, string>("clientId", customerid),
640 640  
862 +(% element-id="826" %)
641 641   new KeyValuePair<string, string>("sikbVersion", sikbVersion),
642 642  
865 +(% element-id="825" %)
643 643   new KeyValuePair<string, string>("languageCode", languageCode),
644 644  
868 +(% element-id="824" %)
645 645   new KeyValuePair<string, string>("useZip", useZipstream.ToString() ),
646 646  
871 +(% element-id="823" %)
647 647   new KeyValuePair<string, string>("needsApprovalIsSupported", needsApprovalIsSupported.ToString() ),
648 648  
874 +(% element-id="822" %)
649 649   ~/~/new KeyValuePair<string, string>("orderXml", ZipStreamHelper.CompressToBase64String(assignmentXML)),
650 650  
877 +(% element-id="821" %)
651 651   ~/~/new KeyValuePair<string, string>("orderXml", assignmentXML),
652 652  
880 +(% element-id="820" %)
653 653   };              
654 654  
883 +(% element-id="819" %)
655 655   foreach (var item in formDataDictionary)
656 656  
886 +(% element-id="818" %)
657 657   {
658 658  
889 +(% element-id="817" %)
659 659   content.Add(new StringContent(item.Value), $"\"{item.Key}\"");
660 660  
892 +(% element-id="816" %)
661 661   }
662 662  
663 663  
896 +(% element-id="813" %)
664 664   string filexml = string.Empty;
665 665  
899 +(% element-id="812" %)
666 666   if (useZipstream)
667 667  
902 +(% element-id="811" %)
668 668   {
669 669  
905 +(% element-id="810" %)
670 670   filexml = ZipStreamHelper.CompressToBase64String(assignmentXML);
671 671  
908 +(% element-id="809" %)
672 672   }
673 673  
911 +(% element-id="808" %)
674 674   else
675 675  
914 +(% element-id="807" %)
676 676   {
677 677  
917 +(% element-id="806" %)
678 678   filexml = assignmentXML;
679 679  
920 +(% element-id="805" %)
680 680   }
681 681  
682 682  
924 +(% element-id="802" %)
683 683   ~/~/Add filecontent
684 684  
927 +(% element-id="801" %)
685 685   var fileContent = new ByteArrayContent(ZipStreamHelper.stringToByteArray(filexml));
686 686  
930 +(% element-id="800" %)
687 687   fileContent.Headers.ContentDisposition =
688 688  
933 +(% element-id="799" %)
689 689   new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data") ~/~/<- 'form-data' instead of 'attachment'
690 690  
936 +(% element-id="798" %)
691 691   {
692 692  
939 +(% element-id="797" %)
693 693   Name = "\"orderXml\"", ~/~/ \" is needed so the message contains the quotes, wihtout it will fail
694 694  
942 +(% element-id="796" %)
695 695   FileName = "\"VivaTerraIndexAssignment.xml\""
696 696  
945 +(% element-id="795" %)
697 697   };
698 698  
948 +(% element-id="794" %)
699 699   fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/xml");              
700 700  
951 +(% element-id="793" %)
701 701   content.Add(fileContent);
702 702  
703 703  
955 +(% element-id="790" %)
704 704   ~/~/Start sending
705 705  
706 706  
959 +(% element-id="787" %)
707 707   HttpResponseMessage response = _HttpClient.PostAsync(_HttpClient.BaseAddress + "/CreateOrder", content).Result;
708 708  
962 +(% element-id="786" %)
709 709   response.EnsureSuccessStatusCode();
710 710  
965 +(% element-id="785" %)
711 711   string responseMessage = response.Content.ReadAsStringAsync().Result;
712 712  
713 713  
969 +(% element-id="782" %)
714 714   if (string.IsNullOrEmpty(responseMessage))
715 715  
972 +(% element-id="781" %)
716 716   {
717 717  
975 +(% element-id="780" %)
718 718   throw new Exception("Empty response from: [" + _HttpClient.BaseAddress + " /CreateOrder" + "]");
719 719  
978 +(% element-id="779" %)
720 720   }
721 721  
981 +(% element-id="778" %)
722 722   using (var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseMessage~)~)~)
723 723  
984 +(% element-id="777" %)
724 724   {
725 725  
987 +(% element-id="776" %)
726 726   XmlSerializer serializer = new XmlSerializer(typeof(CreateOrderResponse.Response));
727 727  
990 +(% element-id="775" %)
728 728   set = (CreateOrderResponse.Response)serializer.Deserialize(ms);
729 729  
993 +(% element-id="774" %)
730 730   }
731 731  
732 732  
997 +(% element-id="771" %)
733 733   ~/~/Can contain a PDf with price information
734 734  
1000 +(% element-id="770" %)
735 735   if (set.UseZip && !string.IsNullOrEmpty(set.FileContent))
736 736  
1003 +(% element-id="769" %)
737 737   {
738 738  
1006 +(% element-id="768" %)
739 739   ~/~/convert from base64 string back to normal
740 740  
1009 +(% element-id="767" %)
741 741   set.FileContent = ZipStreamHelper.DecompressBase64StringToString(set.FileContent);                  
742 742  
1012 +(% element-id="766" %)
743 743   }
744 744  
745 745  
1016 +(% element-id="763" %)
746 746   }
747 747  
1019 +(% element-id="762" %)
748 748   catch (Exception ex)
749 749  
1022 +(% element-id="761" %)
750 750   {
751 751  
1025 +(% element-id="760" %)
752 752   #region handle exception
753 753  
754 754  
1029 +(% element-id="757" %)
755 755   set.Status = new BusinessEntities.LabRestService.CreateOrderResponse.ResponseStatus();
756 756  
1032 +(% element-id="756" %)
757 757   set.Status.StatusCode = ((int)ResultCodes.GeneralError).ToString();
758 758  
1035 +(% element-id="755" %)
759 759   set.Status.ErrorMessage = "Exception occurred in CreateOrder (username: " + WebserviceUsername + ") with message: " + ex.Message;
760 760  
761 761  
1039 +(% element-id="752" %)
762 762   ex.Data.Add("WebserviceUsername", WebserviceUsername);
763 763  
1042 +(% element-id="751" %)
764 764   ex.Data.Add("WebservicePassword", WebservicePassword);
765 765  
1045 +(% element-id="750" %)
766 766   ex.Data.Add("CustomerUsername", CustomerUsername);
767 767  
1048 +(% element-id="749" %)
768 768   ex.Data.Add("sikbVersion", sikbVersion);
769 769  
1051 +(% element-id="748" %)
770 770   ex.Data.Add("customerid", customerid);
771 771  
772 772  
1055 +(% element-id="745" %)
773 773   ExceptionHandler.HandleException(ex);
774 774  
1058 +(% element-id="744" %)
775 775   #endregion
776 776  
1061 +(% element-id="743" %)
777 777   }
778 778  
779 779  
1065 +(% element-id="740" %)
780 780   return set;
781 781  
1068 +(% element-id="739" %)
782 782   }
783 783  )))
784 784  
785 -|(((
1072 +(% element-id="738" %)
1073 +(% element-id="736" %)|(% element-id="735" %)(% element-id="734" %)
1074 +(((
1075 +(% element-id="733" %)
786 786  POST https:~/~/<URL>/CreateOrder HTTP/1.1
787 787  
1078 +(% element-id="732" %)
788 788  Content-Type: multipart/form-data; boundary="28a3e130-70c9-4a1a-b544-a802a1ade6ca"
789 789  
1081 +(% element-id="731" %)
790 790  Host: 81.175.89.24
791 791  
1084 +(% element-id="730" %)
792 792  Content-Length: 5010
793 793  
1087 +(% element-id="729" %)
794 794  Expect: 100-continue
795 795  
796 796  
1091 +(% element-id="726" %)
797 797  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
798 798  
1094 +(% element-id="725" %)
799 799  Content-Type: text/plain; charset=utf-8
800 800  
1097 +(% element-id="724" %)
801 801  Content-Disposition: form-data; name="userName"
802 802  
803 803  
1101 +(% element-id="721" %)
804 804  <Webservice_Username>
805 805  
1104 +(% element-id="720" %)
806 806  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
807 807  
1107 +(% element-id="719" %)
808 808  Content-Type: text/plain; charset=utf-8
809 809  
1110 +(% element-id="718" %)
810 810  Content-Disposition: form-data; name="password"
811 811  
812 812  
1114 +(% element-id="715" %)
813 813  <Webservice_Password>
814 814  
1117 +(% element-id="714" %)
815 815  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
816 816  
1120 +(% element-id="713" %)
817 817  Content-Type: text/plain; charset=utf-8
818 818  
1123 +(% element-id="712" %)
819 819  Content-Disposition: form-data; name="customerUserName"
820 820  
821 821  
1127 +(% element-id="709" %)
822 822  <Customer_Username or token>
823 823  
1130 +(% element-id="708" %)
824 824  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
825 825  
1133 +(% element-id="707" %)
826 826  Content-Type: text/plain; charset=utf-8
827 827  
1136 +(% element-id="706" %)
828 828  Content-Disposition: form-data; name="clientId"
829 829  
830 830  
1140 +(% element-id="703" %)
831 831  300
832 832  
1143 +(% element-id="702" %)
833 833  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
834 834  
1146 +(% element-id="701" %)
835 835  Content-Type: text/plain; charset=utf-8
836 836  
1149 +(% element-id="700" %)
837 837  Content-Disposition: form-data; name="sikbVersion"
838 838  
839 839  
1153 +(% element-id="697" %)
840 840  13.4.0
841 841  
1156 +(% element-id="696" %)
842 842  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
843 843  
1159 +(% element-id="695" %)
844 844  Content-Type: text/plain; charset=utf-8
845 845  
1162 +(% element-id="694" %)
846 846  Content-Disposition: form-data; name="languageCode"
847 847  
848 848  
1166 +(% element-id="691" %)
849 849  nld
850 850  
1169 +(% element-id="690" %)
851 851  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
852 852  
1172 +(% element-id="689" %)
853 853  Content-Type: text/plain; charset=utf-8
854 854  
1175 +(% element-id="688" %)
855 855  Content-Disposition: form-data; name="useZip"
856 856  
857 857  
1179 +(% element-id="685" %)
858 858  True
859 859  
1182 +(% element-id="684" %)
860 860  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
861 861  
1185 +(% element-id="683" %)
862 862  Content-Type: text/plain; charset=utf-8
863 863  
1188 +(% element-id="682" %)
864 864  Content-Disposition: form-data; name="needsApprovalIsSupported"
865 865  
866 866  
1192 +(% element-id="679" %)
867 867  False
868 868  
1195 +(% element-id="678" %)
869 869  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
870 870  
1198 +(% element-id="677" %)
871 871  Content-Disposition: form-data; name="orderXml"; filename="VivaTerraIndexAssignment.xml"
872 872  
1201 +(% element-id="676" %)
873 873  Content-Type: application/xml
874 874  
875 875  
1205 +(% element-id="673" %)
876 876  <SIKB File in Zip stream Base64  encoding>
877 877  
1208 +(% element-id="672" %)
878 878  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca~-~-
879 879  )))
880 880  
881 -=== Response example ===
1212 +(% element-id="671" %)
1213 +=== (% element-id="670" %)Response example(%%) ===
882 882  
883 -|(((
1215 +(% element-id="669" %)
1216 +(% element-id="667" %)|(% element-id="666" %)(% element-id="665" %)
1217 +(((
1218 +(% element-id="664" %)
884 884  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
885 885  
1221 +(% element-id="663" %)
886 886  <Response>
887 887  
1224 +(% element-id="662" %)
888 888  <OrderId>7113828</OrderId>
889 889  
1227 +(% element-id="661" %)
890 890  <NeedsApproval>True</NeedsApproval>
891 891  
1230 +(% element-id="660" %)
892 892  <FileContent></FileContent>
893 893  
1233 +(% element-id="659" %)
894 894  <Status>
895 895  
1236 +(% element-id="658" %)
896 896   <StatusCode>1</StatusCode>
897 897  
1239 +(% element-id="657" %)
898 898   <StatusCodeDescription>OK</StatusCodeDescription>
899 899  
1242 +(% element-id="656" %)
900 900   <ErrorMessage></ErrorMessage>
901 901  
1245 +(% element-id="655" %)
902 902  </Status></Response>
903 903  )))
904 904  
905 -= Get Order status and Results =
1249 +(% element-id="654" %)
1250 += (% element-id="653" %)Get Order status and Results(%%) =
906 906  
907 -== Oplossing/Design ==
1252 +(% element-id="652" %)
1253 +== (% element-id="651" %)Solution/Design(%%) ==
908 908  
909 -TerraIndex gaat opvragen per licentie, welke resultaten en klaar staan. Deze worden opgevraagd als de nieuwste wijzigingen nieuwer zijn dan de laatste keer checken. Zo downloaden we nooit onnodig teveel en is het altijd nogmaals op te vragen.
910 -
1255 +(% element-id="650" %)
1256 +TerraIndex will request per license/customer which results are ready. These are queried if the latest changes are newer than the last check. This way we never download too much unnecessarily and it can always be requested again.
911 911  
912 -(% class="table-hover" %)
913 -|Action|TerraIndex| |Laboratorium|Parameters/Message|Remarks|ResultCodes
914 -|1|Sends a request to the function: GetCustomers().|=>| |WebserviceUsername (string), 
1258 +(% class="table-hover" element-id="647" %)
1259 +(% element-id="645" %)|(% element-id="644" %)Action|(% element-id="643" %)TerraIndex|(% element-id="642" %) |(% element-id="640" %)Laboratorium|(% element-id="639" %)Parameters/Message|(% element-id="638" %)Remarks|(% element-id="637" %)ResultCodes
1260 +(% element-id="636" %)|(% element-id="635" %)1|(% element-id="634" %)Sends a request to the function: GetCustomers().|=(% element-id="633" %)>|(% element-id="632" %) |(% element-id="630" %)WebserviceUsername (string), 
915 915  WebservicePassword (string),
916 -CustomerUsername (string)|We want to skip the Password of the customer, and we introduce the WebserviceUsername + WebservicePassword.|
917 -|2| | |Receives the request and check the customers this username and searches the dateLastChanged for this Customer.| | |
918 -|3| |<=|Sends back the list of customers with the lastChangedTimestamp|ResultCode (),
1262 +CustomerUsername (string)|(% element-id="627" %)We want to skip the Password of the customer, and we introduce the WebserviceUsername + WebservicePassword.|(% element-id="626" %)
1263 +(% element-id="624" %)|(% element-id="623" %)2|(% element-id="622" %) |(% element-id="620" %) |(% element-id="618" %)Receives the request and check the customers this username and searches the dateLastChanged for this Customer.|(% element-id="617" %) |(% element-id="615" %) |(% element-id="613" %)
1264 +(% element-id="611" %)|(% element-id="610" %)3|(% element-id="609" %) |(% element-id="607" %)<=|(% element-id="606" %)Sends back the list of customers with the lastChangedTimestamp|(% element-id="605" %)ResultCode (),
919 919  ErrorMessage (string),
920 920  List<customer> , Customer:
921 921  CustomerCode (string),
... ... @@ -922,7 +922,7 @@
922 922  CustomerName (string),
923 923  LabID (int),
924 924  LabName (string),
925 -ChangedTimeStamp (DateTime)|We receive the dateTimestamp instead of sending it, so we always get the full list and we are also able to delete customercodes.|1 = Success,
1271 +ChangedTimeStamp (DateTime)|(% element-id="597" %)We receive the dateTimestamp instead of sending it, so we always get the full list and we are also able to delete customercodes.|(% element-id="596" %)1 = Success,
926 926  2 = GeneralError,
927 927  3 = WrongSIKBVersion,
928 928  4 = InvalidCredentials,
... ... @@ -932,15 +932,15 @@
932 932  8 = InvalidOrderId,
933 933  9 = OrderIdAlreadyApproved
934 934  10 = PDFNotAvailable
935 -|4|Receives the list of Customers. Read the Timestamp this Customer is last checked for Results/Statuses.| | | | |
936 -|5|Send for each Customer a  call to retreive all orders statuses changes since a certain timestamp.
937 -Function: GetOrderStatuses()|=>| |WebserviceUsername (string), 
1281 +(% element-id="586" %)|(% element-id="585" %)4|(% element-id="584" %)Receives the list of Customers. Read the Timestamp this Customer is last checked for Results/Statuses.|(% element-id="583" %) |(% element-id="581" %) |(% element-id="579" %) |(% element-id="577" %) |(% element-id="575" %)
1282 +(% element-id="573" %)|(% element-id="572" %)5|(% element-id="571" %)Send for each Customer a  call to retreive all orders statuses changes since a certain timestamp.
1283 +Function: GetOrderStatuses()|=(% element-id="569" %)>|(% element-id="568" %) |(% element-id="566" %)WebserviceUsername (string), 
938 938  WebservicePassword (string),
939 939  CustomerUsername (string),
940 940  CustomerCode (string),
941 -LastCheckedTimestamp (DateTime)|TerraIndex keeps track of the last check timestamp for each license.|
942 -|6| | |Receives the request and check the orders that are changed since the timestamp for this Customer.| | |
943 -|7| |<=|Sends back the list of orders with the status and lastChangedTimestamp|ResultCode (),
1287 +LastCheckedTimestamp (DateTime)|(% element-id="561" %)TerraIndex keeps track of the last check timestamp for each license.|(% element-id="560" %)
1288 +(% element-id="558" %)|(% element-id="557" %)6|(% element-id="556" %) |(% element-id="554" %) |(% element-id="552" %)Receives the request and check the orders that are changed since the timestamp for this Customer.|(% element-id="551" %) |(% element-id="549" %) |(% element-id="547" %)
1289 +(% element-id="545" %)|(% element-id="544" %)7|(% element-id="543" %) |(% element-id="541" %)<=|(% element-id="540" %)Sends back the list of orders with the status and lastChangedTimestamp|(% element-id="539" %)ResultCode (),
944 944  ErrorMessage (string),
945 945  OrderID (string),
946 946  LabassignmentGUID (GUID),
... ... @@ -947,10 +947,10 @@
947 947  CertificateNumber (string)
948 948  OrderStatusSIKB (int),
949 949  Delayed (boolean),
950 -ExpectedTimeStamp (DateTime),|OrderStatusSIKB is the SIKB Labassignment status.
1296 +ExpectedTimeStamp (DateTime),|(% element-id="531" %)OrderStatusSIKB is the SIKB Labassignment status.
951 951  \\Delayed is a boolean to tell the customer a order will be later ready then expected. The ExpectedTimestamp.
952 952  If Delayed for the firsttime, TerraIndex can send a notification to the users and show a different layout.
953 -\\LabassignmentGUID is filled to support also Labassignments that are not from TerraIndex Ordered.|1 = Success,
1299 +\\LabassignmentGUID is filled to support also Labassignments that are not from TerraIndex Ordered.|(% element-id="525" %)1 = Success,
954 954  2 = GeneralError,
955 955  3 = WrongSIKBVersion,
956 956  4 = InvalidCredentials,
... ... @@ -960,22 +960,22 @@
960 960  8 = InvalidOrderId,
961 961  9 = OrderIdAlreadyApproved
962 962  10 = PDFNotAvailable
963 -|8|Receives the list of Orders with status.
964 -Update the CertificateNr if this is not already present in the labassignment. | | | |CertifcateNumber could be new here, if the lab wasn't able to fill it directly at the ApproveOrder.|
965 -|9|Send for each Order a call to retreive all results.
966 -Function: GetOrderResults()|=>| |WebserviceUsername (string), 
1309 +(% element-id="515" %)|(% element-id="514" %)8|(% element-id="513" %)Receives the list of Orders with status.
1310 +Update the CertificateNr if this is not already present in the labassignment. |(% element-id="511" %) |(% element-id="509" %) |(% element-id="507" %) |(% element-id="505" %)CertifcateNumber could be new here, if the lab wasn't able to fill it directly at the ApproveOrder.|(% element-id="504" %)
1311 +(% element-id="502" %)|(% element-id="501" %)9|(% element-id="500" %)Send for each Order a call to retreive all results.
1312 +Function: GetOrderResults()|=(% element-id="498" %)>|(% element-id="497" %) |(% element-id="495" %)WebserviceUsername (string), 
967 967  WebservicePassword (string),
968 968  CustomerUsername (string),
969 969  CustomerCode (string),
970 970  OrderID (string),
971 -SIKBVersion (string, default: '13.4.0')|Besides SIKB 13.4.0, TerraIndex also supports 9.0.0/8.0.0 etc.|
972 -|10| | |Receives the request and creates a SIKB results file based on the version that is requested.| | |
973 -|11| |<=|Sends back the results of the orders.|ResultCode (),
1317 +SIKBVersion (string, default: '13.4.0')|(% element-id="489" %)Besides SIKB 13.4.0, TerraIndex also supports 9.0.0/8.0.0 etc.|(% element-id="488" %)
1318 +(% element-id="486" %)|(% element-id="485" %)10|(% element-id="484" %) |(% element-id="482" %) |(% element-id="480" %)Receives the request and creates a SIKB results file based on the version that is requested.|(% element-id="479" %) |(% element-id="477" %) |(% element-id="475" %)
1319 +(% element-id="473" %)|(% element-id="472" %)11|(% element-id="471" %) |(% element-id="469" %)<=|(% element-id="468" %)Sends back the results of the orders.|(% element-id="467" %)ResultCode (),
974 974  ErrorMessage (string),
975 975  OrderId (string),
976 976  LabassignmentGUID (GUID),
977 977  FileContent_Base64 (string),
978 -UseZipStream/UseZip (bool, default: 'false'),| |1 = Success,
1324 +UseZipStream/UseZip (bool, default: 'false'),|(% element-id="461" %) |(% element-id="459" %)1 = Success,
979 979  2 = GeneralError,
980 980  3 = WrongSIKBVersion,
981 981  4 = InvalidCredentials,
... ... @@ -985,9 +985,12 @@
985 985  8 = InvalidOrderId,
986 986  9 = OrderIdAlreadyApproved
987 987  10 = PDFNotAvailable
988 -|12|Receives the results and imports all results.| | | |(((
1334 +(% element-id="449" %)|(% element-id="448" %)12|(% element-id="447" %)Receives the results and imports all results.|(% element-id="446" %) |(% element-id="444" %) |(% element-id="442" %) |(% element-id="440" %)(% element-id="439" %)
1335 +(((
1336 +(% element-id="438" %)
989 989  Import will be done to corresponding samples based on:
990 990  
1339 +(% element-id="437" %)
991 991  * Find Project by ProjectGUID (as provided in the labassignment)
992 992  * Find Project by ProjectCode (as provided in the Labassignment)
993 993  * Find Project and Labassignment by LabassignmentGUID (as provided in the Labassignment)
... ... @@ -996,25 +996,27 @@
996 996  For lower version Labassignments the lab should return the 'old' idanlmons as SampleGUID in the XML.
997 997  * Find Samples (only if Project is already found ) by SampleName
998 998  
1348 +(% element-id="429" %)
999 999  What is imported?
1000 1000  
1351 +(% element-id="428" %)
1001 1001  * If Sample is found, the results in the XML are always all updated and/or inserted.
1002 1002  * If Project is found, but the sample is not; The Sample and the results are inserted as new Sample. (If watersample; fake filtertube and fake measurementpoints are created)
1003 -)))|
1004 -|13|If OrderStatus is 'Completed/Reported' (SIKBID: 5)
1354 +)))|(% element-id="425" %)
1355 +(% element-id="423" %)|(% element-id="422" %)13|(% element-id="421" %)If OrderStatus is 'Completed/Reported' (SIKBID: 5)
1005 1005  Request the PDF certificate.
1006 -Function: GetOrderPDF()|=>| |WebserviceUsername (string), 
1357 +Function: GetOrderPDF()|=(% element-id="418" %)>|(% element-id="417" %) |(% element-id="415" %)WebserviceUsername (string), 
1007 1007  WebservicePassword (string),
1008 1008  CustomerUsername (string),
1009 1009  CustomerCode (string),
1010 -OrderID (string),| |
1011 -|14| | |Receives the request and creates the PDF for the Order.| | |
1012 -|15| |<=|Sends back the PDF of the order.|ResultCode (),
1361 +OrderID (string),|(% element-id="410" %) |(% element-id="408" %)
1362 +(% element-id="406" %)|(% element-id="405" %)14|(% element-id="404" %) |(% element-id="402" %) |(% element-id="400" %)Receives the request and creates the PDF for the Order.|(% element-id="399" %) |(% element-id="397" %) |(% element-id="395" %)
1363 +(% element-id="393" %)|(% element-id="392" %)15|(% element-id="391" %) |(% element-id="389" %)<=|(% element-id="388" %)Sends back the PDF of the order.|(% element-id="387" %)ResultCode (),
1013 1013  ErrorMessage (string),
1014 1014  OrderId (string),
1015 1015  LabassignmentGUID (GUID),
1016 1016  FileContent_Base64 (string),
1017 -UseZipStream/UseZip (bool, default: 'false'),|If the PDF is not available yet, please give the resultcode: PDFNotAvailable.|1 = Success,
1368 +UseZipStream/UseZip (bool, default: 'false'),|(% element-id="381" %)If the PDF is not available yet, please give the resultcode: PDFNotAvailable.|(% element-id="380" %)1 = Success,
1018 1018  2 = GeneralError,
1019 1019  3 = WrongSIKBVersion,
1020 1020  4 = InvalidCredentials,
... ... @@ -1024,27 +1024,30 @@
1024 1024  8 = InvalidOrderId,
1025 1025  9 = OrderIdAlreadyApproved
1026 1026  10 = PDFNotAvailable
1027 -|12|Receives the PDF and stores it for reporting and downloading.| | | | |
1378 +(% element-id="370" %)|(% element-id="369" %)12|(% element-id="368" %)Receives the PDF and stores it for reporting and downloading.|(% element-id="367" %) |(% element-id="365" %) |(% element-id="363" %) |(% element-id="361" %) |(% element-id="359" %)
1028 1028  
1029 -=
1030 -Customer wants to see real time information about the status in the interface =
1380 +(% element-id="357" %)
1381 += (% element-id="356" %)Customer wants to see real time information about the status in the interface(%%) =
1031 1031  
1032 -== Oplossing/Design ==
1383 +(% element-id="354" %)
1384 +== (% element-id="353" %)Solution/Design(%%) ==
1033 1033  
1034 -Om in de interface van TerraIndex altijd up to date informatie te tonen als een gebruiker een labopdracht opent om de status te zien, hergebruiken we een deel van de GetOrderStatus, maar dan met specifiek een OrderID.
1386 +(% element-id="352" %)
1387 +To always show up-to-date information in the TerraIndex interface when a user opens a lab assignment to see the status, we reuse part of the GetOrderStatus, but with a specific OrderID.
1035 1035  
1389 +(% element-id="351" %)
1036 1036  ..NOT SUPPORTED YET...
1037 1037  
1038 -(% class="table-hover" %)
1039 -|(% colspan="1" %)Action|(% colspan="1" %)TerraIndex|(% colspan="1" %) |(% colspan="1" %)Laboratorium|(% colspan="1" %)Parameters/Message|(% colspan="1" %)Remarks|(% colspan="1" %)ResultCodes
1040 -|1|Request the Order status for a single Order/Labassignment.
1041 -Function: GetOrderStatus()|=>| |WebserviceUsername (string), 
1392 +(% class="table-hover" element-id="350" %)
1393 +(% element-id="348" %)|(% colspan="1" element-id="347" %)Action|(% colspan="1" element-id="346" %)TerraIndex|(% colspan="1" element-id="345" %) |(% colspan="1" element-id="343" %)Laboratorium|(% colspan="1" element-id="342" %)Parameters/Message|(% colspan="1" element-id="341" %)Remarks|(% colspan="1" element-id="340" %)ResultCodes
1394 +(% element-id="339" %)|(% element-id="338" %)1|(% element-id="337" %)Request the Order status for a single Order/Labassignment.
1395 +Function: GetOrderStatus()|=(% element-id="335" %)>|(% element-id="334" %) |(% element-id="332" %)WebserviceUsername (string), 
1042 1042  WebservicePassword (string),
1043 1043  CustomerUsername (string),
1044 1044  CustomerCode (string),
1045 -OrderID (string),| |
1046 -|2| | |Receives the request and gets the status for the Order.| | |
1047 -|3| |<=|Sends back the status of the order.|ResultCode (),
1399 +OrderID (string),|(% element-id="327" %) |(% element-id="325" %)
1400 +(% element-id="323" %)|(% element-id="322" %)2|(% element-id="321" %) |(% element-id="319" %) |(% element-id="317" %)Receives the request and gets the status for the Order.|(% element-id="316" %) |(% element-id="314" %) |(% element-id="312" %)
1401 +(% element-id="310" %)|(% element-id="309" %)3|(% element-id="308" %) |(% element-id="306" %)<=|(% element-id="305" %)Sends back the status of the order.|(% element-id="304" %)ResultCode (),
1048 1048  ErrorMessage (string),
1049 1049  OrderID (string),
1050 1050  LabassignmentGUID (GUID),
... ... @@ -1051,10 +1051,10 @@
1051 1051  CertificateNumber (string)
1052 1052  OrderStatusSIKB (int),
1053 1053  Delayed (boolean),
1054 -ExpectedTimeStamp (DateTime),|OrderStatusSIKB is the SIKB Labassignment status.
1408 +ExpectedTimeStamp (DateTime),|(% element-id="296" %)OrderStatusSIKB is the SIKB Labassignment status.
1055 1055  \\Delayed is a boolean to tell the customer a order will be later ready then expected. The ExpectedTimestamp.
1056 1056  If Delayed for the firsttime, TerraIndex can send a notification to the users and show a different layout.
1057 -\\LabassignmentGUID is filled to support also Labassignments that are not from TerraIndex Ordered.|1 = Success,
1411 +\\LabassignmentGUID is filled to support also Labassignments that are not from TerraIndex Ordered.|(% element-id="290" %)1 = Success,
1058 1058  2 = GeneralError,
1059 1059  3 = WrongSIKBVersion,
1060 1060  4 = InvalidCredentials,
... ... @@ -1064,9 +1064,8 @@
1064 1064  8 = InvalidOrderId,
1065 1065  9 = OrderIdAlreadyApproved
1066 1066  10 = PDFNotAvailable
1067 -|4|Receives the status and shows in the interface the updated info.
1068 -Update the CertificateNr if this is not already present in the labassignment. | | | |CertifcateNumber could be new here, if the lab wasn't able to fill it directly at the ApproveOrder.|
1421 +(% element-id="280" %)|(% element-id="279" %)4|(% element-id="278" %)Receives the status and shows in the interface the updated info.
1422 +Update the CertificateNr if this is not already present in the labassignment. |(% element-id="276" %) |(% element-id="274" %) |(% element-id="272" %) |(% element-id="270" %)CertifcateNumber could be new here, if the lab wasn't able to fill it directly at the ApproveOrder.|(% element-id="269" %)
1069 1069  
1070 -
1071 -
1072 -
1424 +(% element-id="265" %)
1425 +
1712326445096-102.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.RobinHuisman
Size
... ... @@ -1,0 +1,1 @@
1 +20.5 KB
Content
1712326465681-980.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.RobinHuisman
Size
... ... @@ -1,0 +1,1 @@
1 +20.5 KB
Content
1712326492306-381.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.RobinHuisman
Size
... ... @@ -1,0 +1,1 @@
1 +38.6 KB
Content
1712326520488-924.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.RobinHuisman
Size
... ... @@ -1,0 +1,1 @@
1 +16.8 KB
Content
Lab exchange.svg
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.RobinHuisman
Size
... ... @@ -1,0 +1,1 @@
1 +44.4 KB
Content
... ... @@ -1,0 +1,1 @@
1 +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="998" height="2266"><desc>title%20Digital%20Lab%20exchange%20Process%0A%0Aparticipant%20Lab%0Aparticipant%20TerraIndex%0Aparticipant%20TerraIndex_User%0A%0A%0A%3D%3D**Labdelivery%20data**%3D%3D%0Anote%20over%20Lab%2CTerraIndex_User%3ATerraIndex%20retrieves%20the%20'menu-card'%20so%20the%20user%20can%20order%20analysis.%0ATerraIndex-%3ELab%3ARequest%20the%20Client%20codes%20for%20a%20Customer%0ALab-%3ETerraIndex%3Areturn%20the%20active%20Client%20codes%0ATerraIndex-%3ELab%3ALabDelivery%20Data%2FFile%20for%20a%20Customer%20Client%20Code%0ALab-%3ETerraIndex%3Areturn%20the%20Labdelivery%20SIKB0101%20File.%0ATerraIndex-%3ETerraIndex%3AStore%20and%20import%20into%20User%20database.%0A%0A%3D%3D**Labassignment**%3D%3D%0Anote%20over%20Lab%2CTerraIndex_User%3ATerraIndex%20sends%20the%20'order'%20so%20the%20lab%20can%20process%20the%20samples.%0ATerraIndex-%3ETerraIndex_User%3AShow%20available%20Lab%20and%20Client%20codes%0ATerraIndex_User-%3ETerraIndex_User%3ASelect%20Lab%20and%20Client%20code%0ATerraIndex-%3ETerraIndex_User%3AShow%20available%20Analysis%20Sets%20and%20Urgencies%0ATerraIndex_User-%3ETerraIndex_User%3ASelect%20the%20samples%20%0ATerraIndex_User-%3ETerraIndex_User%3ASelect%20the%20needed%20analysis%20sets%0ATerraIndex_User-%3ETerraIndex%3AStore%2FSave%20the%20labassignment%20%0ATerraIndex_User-%3ETerraIndex%3ASend%20to%20the%20lab%0ATerraIndex-%3ETerraIndex%3AGenerate%20SIKB0101%20Labassignment%20file%0ATerraIndex-%3ELab%3ASend%20file%20to%20the%20Lab%0Anote%20over%20Lab%2CTerraIndex%3AOption%20A%0ALab-%3ETerraIndex%3AAcknowledge%20a%20success%20received%0ATerraIndex-%3ETerraIndex%3ASave%20status%0ATerraIndex-%3ETerraIndex_User%3AShow%20status%20and%20prevent%20further%20editing%0Anote%20over%20Lab%2CTerraIndex%3AOption%20B%0ALab-%3ETerraIndex%3AReturn%20Order%20price%20PDF%0ATerraIndex-%3ETerraIndex_User%3AShow%20Price%20and%20PDF%0ATerraIndex_User-%3ETerraIndex%3AApprove%20Order%0ATerraIndex-%3ELab%3AApprove%20Order%0ALab-%3ETerraIndex%3AAcknowledge%20a%20success%20received%0ATerraIndex-%3ETerraIndex%3ASave%20status%0ATerraIndex-%3ETerraIndex_User%3AShow%20status%20and%20prevent%20further%20editing%0A%0A%3D%3D**Labresults**%3D%3D%0Anote%20over%20Lab%2CTerraIndex_User%3ATerraIndex%20retrieves%20the%20'results'%20so%20the%20user%20can%20order%20report.%0ATerraIndex-%3ELab%3ARequests%20the%20Changed%20assignments%20since%20last%20asking%0ALab-%3ETerraIndex%3Areturn%20the%20changed%20orders%20with%20status%0ATerraIndex-%3ELab%3ARequest%20the%20results%20of%20a%20Ready%20order%0ALab-%3ETerraIndex%3Areturn%20the%20Analysisresults%20SIKB0101%20File.%0ATerraIndex-%3ETerraIndex%3AStore%20and%20import%20into%20User%20database.%0ATerraIndex-%3ETerraIndex_User%3A%0ATerraIndex_User-%3ETerraIndex_User%3AAsessments%20and%20Report%20results%0A%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="998" height="2266"/></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 95.73914152281817 L 38.12107170559766 2266.687660092818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray="12.565541,5.445067766666667"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 95.73914152281817 L 429.6485480430326 2266.687660092818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray="12.565541,5.445067766666667"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 95.73914152281817 L 762.4931325347643 2266.687660092818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray="12.565541,5.445067766666667"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 8.167601650000002 51.63409261281818 L 68.07454176119532 51.63409261281818 L 68.07454176119532 95.73914152281817 L 8.167601650000002 95.73914152281817 L 8.167601650000002 51.63409261281818 Z" stroke-miterlimit="10" stroke-width="2.613632528" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="25.8912972305" y="79.40393822281817" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Lab</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 377.2935124356771 51.63409261281818 L 482.003583650388 51.63409261281818 L 482.003583650388 95.73914152281817 L 377.2935124356771 95.73914152281817 L 377.2935124356771 51.63409261281818 Z" stroke-miterlimit="10" stroke-width="2.613632528" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="395.0172080161771" y="79.40393822281817" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">TerraIndex</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 690.5854922521158 51.63409261281818 L 834.4007728174128 51.63409261281818 L 834.4007728174128 95.73914152281817 L 690.5854922521158 95.73914152281817 L 690.5854922521158 51.63409261281818 Z" stroke-miterlimit="10" stroke-width="2.613632528" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="708.3091878326159" y="79.40393822281817" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">TerraIndex_User</text></g></g><g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="16pt" font-style="normal" font-weight="normal" text-decoration="normal" x="357.9024124145508" y="24.651306798181814" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Digital Lab exchange Process</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 8.16760165 141.74996415115152 L 989.83239835 141.74996415115152 M 8.16760165 147.19503191781817 L 989.83239835 147.19503191781817 M 8.16760165 152.64009968448482 L 989.83239835 152.64009968448482" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 418.2817545035352 128.4095481228182 L 579.7182454964649 128.4095481228182 L 579.7182454964649 165.9805157128182 L 418.2817545035352 165.9805157128182 Z" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="bold" text-decoration="normal" x="441.15103912353516" y="151.27883274281814" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Labdelivery data</text></g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 23.419388735597657 190.4833206628182 L 762.4931325347643 190.4833206628182 L 777.1948155047643 205.1850036328182 L 777.1948155047643 228.05428825281817 L 23.419388735597657 228.05428825281817 L 23.419388735597657 190.4833206628182 M 762.4931325347643 190.4833206628182 L 762.4931325347643 205.1850036328182 L 777.1948155047643 205.1850036328182" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="181.57780066754424" y="213.35260528281813" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">TerraIndex retrieves the 'menu-card' so the user can order analysis.</text></g><g><g><rect fill="white" stroke="none" x="99.02225978702997" y="252.55709320281815" width="269.7251001745703" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="101.47254028202997" y="267.25877617281816" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Request the Client codes for a Customer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 273.79285749281814 L 51.570389089264324 273.79285749281814" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(38.12107170559766,273.79285749281814) translate(-38.12107170559766,-273.79285749281814)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 51.73374112226433 266.9865227844848 L 38.12107170559766 273.79285749281814 L 51.73374112226433 280.5991922011515 Z"/></g></g><g><g><rect fill="white" stroke="none" x="136.50257594913936" y="298.2956624428181" width="194.76446785035156" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="138.95285644413934" y="312.9973454128181" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">return the active Client codes</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 319.53142673281815 L 416.1992306593659 319.53142673281815" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,319.53142673281815) translate(-429.6485480430326,-319.53142673281815)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 416.0358786263659 312.7250920244848 L 429.6485480430326 319.53142673281815 L 416.0358786263659 326.3377614411515 Z"/></g></g><g><g><rect fill="white" stroke="none" x="70.51475246281122" y="344.03423168281813" width="326.7401148230078" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="72.96503295781122" y="358.7359146528181" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">LabDelivery Data/File for a Customer Client Code</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 365.26999597281815 L 51.570389089264324 365.26999597281815" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(38.12107170559766,365.26999597281815) translate(-38.12107170559766,-365.26999597281815)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 51.73374112226433 358.4636612644848 L 38.12107170559766 365.26999597281815 L 51.73374112226433 372.0763306811515 Z"/></g></g><g><g><rect fill="white" stroke="none" x="109.60566432804559" y="389.77280092281813" width="248.55829109253906" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="112.05594482304559" y="404.4744838928181" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">return the Labdelivery SIKB0101 File.</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 411.00856521281816 L 416.1992306593659 411.00856521281816" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,411.00856521281816) translate(-429.6485480430326,-411.00856521281816)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 416.0358786263659 404.2022305044848 L 429.6485480430326 411.00856521281816 L 416.0358786263659 417.8148999211515 Z"/></g></g><g><g><rect fill="white" stroke="none" x="448.97853861469923" y="435.5113701628182" width="244.47813667359375" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="451.42881910969925" y="450.2130531328182" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Store and import into User database.</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 456.74713445281816 L 494.9893612430326 456.74713445281816 L 494.9893612430326 477.9828987428182 L 443.09786542669923 477.9828987428182" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,477.9828987428182) translate(-429.6485480430326,-477.9828987428182)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 471.17656403448484 L 429.6485480430326 477.9828987428182 L 443.26121745969925 484.7892334511515 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 8.16760165 515.8261197211515 L 989.83239835 515.8261197211515 M 8.16760165 521.2711874878181 L 989.83239835 521.2711874878181 M 8.16760165 526.7162552544847 L 989.83239835 526.7162552544847" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 422.3654947379102 502.4857036928181 L 575.6345052620899 502.4857036928181 L 575.6345052620899 540.0566712828181 L 422.3654947379102 540.0566712828181 Z" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="bold" text-decoration="normal" x="445.23477935791016" y="525.3549883128181" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Labassignment</text></g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 23.419388735597657 564.559476232818 L 762.4931325347643 564.559476232818 L 777.1948155047643 579.261159202818 L 777.1948155047643 602.130443822818 L 23.419388735597657 602.130443822818 L 23.419388735597657 564.559476232818 M 762.4931325347643 564.559476232818 L 762.4931325347643 579.261159202818 L 777.1948155047643 579.261159202818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="190.93354407574736" y="587.4287608528181" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">TerraIndex sends the 'order' so the lab can process the samples.</text></g><g><g><rect fill="white" stroke="none" x="473.4094391884297" y="626.633248772818" width="245.3228022009375" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="475.8597196834297" y="641.334931742818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Show available Lab and Client codes</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 647.869013062818 L 749.0438151510976 647.869013062818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,647.869013062818) translate(-762.4931325347643,-647.869013062818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 748.8804631180976 641.0626783544847 L 762.4931325347643 647.869013062818 L 748.8804631180976 654.6753477711513 Z"/></g></g><g><g><rect fill="white" stroke="none" x="781.823123106431" y="672.3718180128179" width="180.12597908082031" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="784.273403601431" y="687.0735009828179" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Select Lab and Client code</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 693.607582302818 L 827.8339457347643 693.607582302818 L 827.8339457347643 714.843346592818 L 775.942449918431 714.843346592818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,714.843346592818) translate(-762.4931325347643,-714.843346592818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 776.105801951431 708.0370118844846 L 762.4931325347643 714.843346592818 L 776.105801951431 721.6496813011513 Z"/></g></g><g><g><rect fill="white" stroke="none" x="448.97853861469923" y="739.3461515428179" width="294.1846033483984" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="451.42881910969925" y="754.0478345128179" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Show available Analysis Sets and Urgencies</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 760.5819158328179 L 749.0438151510976 760.5819158328179" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,760.5819158328179) translate(-762.4931325347643,-760.5819158328179)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 748.8804631180976 753.7755811244846 L 762.4931325347643 760.5819158328179 L 748.8804631180976 767.3882505411513 Z"/></g></g><g><g><rect fill="white" stroke="none" x="781.823123106431" y="785.0847207828178" width="132.83178962769531" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="784.273403601431" y="799.7864037528178" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Select the samples </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 806.3204850728179 L 827.8339457347643 806.3204850728179 L 827.8339457347643 827.5562493628179 L 775.942449918431 827.5562493628179" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,827.5562493628179) translate(-762.4931325347643,-827.5562493628179)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 776.105801951431 820.7499146544845 L 762.4931325347643 827.5562493628179 L 776.105801951431 834.3625840711512 Z"/></g></g><g><g><rect fill="white" stroke="none" x="781.823123106431" y="852.0590543128178" width="211.08514656128906" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="784.273403601431" y="866.7607372828178" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Select the needed analysis sets</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 873.2948186028178 L 827.8339457347643 873.2948186028178 L 827.8339457347643 894.5305828928178 L 775.942449918431 894.5305828928178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,894.5305828928178) translate(-762.4931325347643,-894.5305828928178)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 776.105801951431 887.7242481844845 L 762.4931325347643 894.5305828928178 L 776.105801951431 901.3369176011512 Z"/></g></g><g><g><rect fill="white" stroke="none" x="493.7923966469258" y="919.0333878428178" width="204.55688728394531" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="496.2426771419258" y="933.7350708128178" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Store/Save the labassignment </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 940.2691521328178 L 443.09786542669923 940.2691521328178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,940.2691521328178) translate(-429.6485480430326,-940.2691521328178)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 933.4628174244845 L 429.6485480430326 940.2691521328178 L 443.26121745969925 947.0754868411511 Z"/></g></g><g><g><rect fill="white" stroke="none" x="544.3077622475117" y="964.7719570828177" width="103.52615608277344" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="546.7580427425117" y="979.4736400528177" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Send to the lab</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 986.0077213728177 L 443.09786542669923 986.0077213728177" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,986.0077213728177) translate(-429.6485480430326,-986.0077213728177)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 979.2013866644844 L 429.6485480430326 986.0077213728177 L 443.26121745969925 992.8140560811511 Z"/></g></g><g><g><rect fill="white" stroke="none" x="448.97853861469923" y="1010.5105263228177" width="262.4308954626562" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="451.42881910969925" y="1025.2122092928178" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Generate SIKB0101 Labassignment file</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1031.7462906128178 L 494.9893612430326 1031.7462906128178 L 494.9893612430326 1052.9820549028177 L 443.09786542669923 1052.9820549028177" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1052.9820549028177) translate(-429.6485480430326,-1052.9820549028177)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 1046.1757201944845 L 429.6485480430326 1052.9820549028177 L 443.26121745969925 1059.788389611151 Z"/></g></g><g><g><rect fill="white" stroke="none" x="168.26704891056514" y="1077.4848598528179" width="131.2355219275" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="170.71732940556512" y="1092.186542822818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Send file to the Lab</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1098.7206241428178 L 51.570389089264324 1098.7206241428178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(38.12107170559766,1098.7206241428178) translate(-38.12107170559766,-1098.7206241428178)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 51.73374112226433 1091.9142894344845 L 38.12107170559766 1098.7206241428178 L 51.73374112226433 1105.526958851151 Z"/></g></g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 23.419388735597657 1123.2234290928177 L 429.6485480430326 1123.2234290928177 L 444.35023101303256 1137.9251120628178 L 444.35023101303256 1160.7943966828177 L 23.419388735597657 1160.7943966828177 L 23.419388735597657 1123.2234290928177 M 429.6485480430326 1123.2234290928177 L 429.6485480430326 1137.9251120628178 L 444.35023101303256 1137.9251120628178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="205.36298217656122" y="1146.0927137128178" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Option A</text></g><g><g><rect fill="white" stroke="none" x="123.46393306583856" y="1185.2972016328179" width="220.84175361695313" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="125.91421356083856" y="1199.998884602818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Acknowledge a success received</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 1206.5329659228178 L 416.1992306593659 1206.5329659228178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1206.5329659228178) translate(-429.6485480430326,-1206.5329659228178)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 416.0358786263659 1199.7266312144845 L 429.6485480430326 1206.5329659228178 L 416.0358786263659 1213.339300631151 Z"/></g></g><g><g><rect fill="white" stroke="none" x="448.97853861469923" y="1231.0357708728177" width="81.50038398804688" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="451.42881910969925" y="1245.7374538428178" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Save status</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1252.2715351628178 L 494.9893612430326 1252.2715351628178 L 494.9893612430326 1273.5072994528177 L 443.09786542669923 1273.5072994528177" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1273.5072994528177) translate(-429.6485480430326,-1273.5072994528177)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 1266.7009647444845 L 429.6485480430326 1273.5072994528177 L 443.26121745969925 1280.313634161151 Z"/></g></g><g><g><rect fill="white" stroke="none" x="466.08303080219923" y="1298.010104402818" width="259.9756189733984" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="468.53331129719925" y="1312.711787372818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Show status and prevent further editing</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1319.2458686928178 L 749.0438151510976 1319.2458686928178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,1319.2458686928178) translate(-762.4931325347643,-1319.2458686928178)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 748.8804631180976 1312.4395339844846 L 762.4931325347643 1319.2458686928178 L 748.8804631180976 1326.052203401151 Z"/></g></g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 23.419388735597657 1343.7486736428177 L 429.6485480430326 1343.7486736428177 L 444.35023101303256 1358.4503566128178 L 444.35023101303256 1381.3196412328177 L 23.419388735597657 1381.3196412328177 L 23.419388735597657 1343.7486736428177 M 429.6485480430326 1343.7486736428177 L 429.6485480430326 1358.4503566128178 L 444.35023101303256 1358.4503566128178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="205.36298217656122" y="1366.6179582628179" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Option B</text></g><g><g><rect fill="white" stroke="none" x="154.0401354584167" y="1405.8224461828179" width="159.68934883179688" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="156.4904159534167" y="1420.524129152818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Return Order price PDF</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 1427.0582104728178 L 416.1992306593659 1427.0582104728178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1427.0582104728178) translate(-429.6485480430326,-1427.0582104728178)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 416.0358786263659 1420.2518757644846 L 429.6485480430326 1427.0582104728178 L 416.0358786263659 1433.864545181151 Z"/></g></g><g><g><rect fill="white" stroke="none" x="525.5855027260274" y="1451.561015422818" width="140.9706751257422" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="528.0357832210274" y="1466.262698392818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Show Price and PDF</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1472.7967797128179 L 749.0438151510976 1472.7967797128179" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,1472.7967797128179) translate(-762.4931325347643,-1472.7967797128179)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 748.8804631180976 1465.9904450044846 L 762.4931325347643 1472.7967797128179 L 748.8804631180976 1479.603114421151 Z"/></g></g><g><g><rect fill="white" stroke="none" x="545.5461350502461" y="1497.299584662818" width="101.04941047730469" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="547.9964155452461" y="1512.001267632818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Approve Order</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 1518.535348952818 L 443.09786542669923 1518.535348952818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1518.535348952818) translate(-429.6485480430326,-1518.535348952818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 1511.7290142444847 L 429.6485480430326 1518.535348952818 L 443.26121745969925 1525.3416836611511 Z"/></g></g><g><g><rect fill="white" stroke="none" x="183.3601046356628" y="1543.038153902818" width="101.04941047730469" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="185.81038513066278" y="1557.7398368728182" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Approve Order</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1564.273918192818 L 51.570389089264324 1564.273918192818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(38.12107170559766,1564.273918192818) translate(-38.12107170559766,-1564.273918192818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 51.73374112226433 1557.4675834844847 L 38.12107170559766 1564.273918192818 L 51.73374112226433 1571.0802529011512 Z"/></g></g><g><g><rect fill="white" stroke="none" x="123.46393306583856" y="1588.7767231428181" width="220.84175361695313" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="125.91421356083856" y="1603.4784061128182" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Acknowledge a success received</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 1610.012487432818 L 416.1992306593659 1610.012487432818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1610.012487432818) translate(-429.6485480430326,-1610.012487432818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 416.0358786263659 1603.2061527244848 L 429.6485480430326 1610.012487432818 L 416.0358786263659 1616.8188221411513 Z"/></g></g><g><g><rect fill="white" stroke="none" x="448.97853861469923" y="1634.515292382818" width="81.50038398804688" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="451.42881910969925" y="1649.216975352818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Save status</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1655.751056672818 L 494.9893612430326 1655.751056672818 L 494.9893612430326 1676.986820962818 L 443.09786542669923 1676.986820962818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1676.986820962818) translate(-429.6485480430326,-1676.986820962818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 1670.1804862544848 L 429.6485480430326 1676.986820962818 L 443.26121745969925 1683.7931556711512 Z"/></g></g><g><g><rect fill="white" stroke="none" x="466.08303080219923" y="1701.4896259128182" width="259.9756189733984" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="468.53331129719925" y="1716.1913088828182" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Show status and prevent further editing</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1722.725390202818 L 749.0438151510976 1722.725390202818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,1722.725390202818) translate(-762.4931325347643,-1722.725390202818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 748.8804631180976 1715.9190554944848 L 762.4931325347643 1722.725390202818 L 748.8804631180976 1729.5317249111513 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 8.16760165 1760.5686111811515 L 989.83239835 1760.5686111811515 M 8.16760165 1766.013678947818 L 989.83239835 1766.013678947818 M 8.16760165 1771.4587467144847 L 989.83239835 1771.4587467144847" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 439.06199742345706 1747.228195152818 L 558.938002576543 1747.228195152818 L 558.938002576543 1784.799162742818 L 439.06199742345706 1784.799162742818 Z" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="bold" text-decoration="normal" x="461.93128204345703" y="1770.0974797728181" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Labresults</text></g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 23.419388735597657 1809.301967692818 L 762.4931325347643 1809.301967692818 L 777.1948155047643 1824.003650662818 L 777.1948155047643 1846.872935282818 L 23.419388735597657 1846.872935282818 L 23.419388735597657 1809.301967692818 M 762.4931325347643 1809.301967692818 L 762.4931325347643 1824.003650662818 L 777.1948155047643 1824.003650662818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="202.35803595807158" y="1832.171252312818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">TerraIndex retrieves the 'results' so the user can order report.</text></g><g><g><rect fill="white" stroke="none" x="57.45106227726434" y="1871.375740232818" width="352.86749519410154" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="59.90134277226434" y="1886.0774232028182" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Requests the Changed assignments since last asking</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1892.611504522818 L 51.570389089264324 1892.611504522818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(38.12107170559766,1892.611504522818) translate(-38.12107170559766,-1892.611504522818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 51.73374112226433 1885.8051698144848 L 38.12107170559766 1892.611504522818 L 51.73374112226433 1899.4178392311512 Z"/></g></g><g><g><rect fill="white" stroke="none" x="110.42169673771356" y="1917.1143094728181" width="246.92622627320313" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="112.87197723271356" y="1931.8159924428182" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">return the changed orders with status</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 1938.350073762818 L 416.1992306593659 1938.350073762818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1938.350073762818) translate(-429.6485480430326,-1938.350073762818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 416.0358786263659 1931.5437390544848 L 429.6485480430326 1938.350073762818 L 416.0358786263659 1945.1564084711513 Z"/></g></g><g><g><rect fill="white" stroke="none" x="111.64574153751825" y="1962.8528787128182" width="244.47813667359375" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="114.09602203251825" y="1977.5545616828183" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Request the results of a Ready order</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1984.0886430028181 L 51.570389089264324 1984.0886430028181" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(38.12107170559766,1984.0886430028181) translate(-38.12107170559766,-1984.0886430028181)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 51.73374112226433 1977.282308294485 L 38.12107170559766 1984.0886430028181 L 51.73374112226433 1990.8949777111513 Z"/></g></g><g><g><rect fill="white" stroke="none" x="98.20982845158075" y="2008.5914479528183" width="271.3499628454687" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="100.66010894658075" y="2023.2931309228184" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">return the Analysisresults SIKB0101 File.</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 2029.8272122428182 L 416.1992306593659 2029.8272122428182" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,2029.8272122428182) translate(-429.6485480430326,-2029.8272122428182)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 416.0358786263659 2023.020877534485 L 429.6485480430326 2029.8272122428182 L 416.0358786263659 2036.6335469511514 Z"/></g></g><g><g><rect fill="white" stroke="none" x="448.97853861469923" y="2054.3300171928186" width="244.47813667359375" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="451.42881910969925" y="2069.0317001628187" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Store and import into User database.</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 2075.5657814828182 L 494.9893612430326 2075.5657814828182 L 494.9893612430326 2096.8015457728184 L 443.09786542669923 2096.8015457728184" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,2096.8015457728184) translate(-429.6485480430326,-2096.8015457728184)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 2089.995211064485 L 429.6485480430326 2096.8015457728184 L 443.26121745969925 2103.607880481152 Z"/></g></g><g><g><rect fill="white" stroke="none" x="593.6205597938985" y="2121.304350722818" width="4.90056099" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="596.0708402888985" y="2136.006033692818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve"></text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 2142.540115012818 L 749.0438151510976 2142.540115012818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,2142.540115012818) translate(-762.4931325347643,-2142.540115012818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 748.8804631180976 2135.7337803044848 L 762.4931325347643 2142.540115012818 L 748.8804631180976 2149.3464497211517 Z"/></g></g><g><g><rect fill="white" stroke="none" x="781.823123106431" y="2167.0429199628184" width="208.60125984253906" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="784.273403601431" y="2181.7446029328185" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Asessments and Report results</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 2188.278684252818 L 827.8339457347643 2188.278684252818 L 827.8339457347643 2209.514448542818 L 775.942449918431 2209.514448542818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,2209.514448542818) translate(-762.4931325347643,-2209.514448542818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 776.105801951431 2202.7081138344847 L 762.4931325347643 2209.514448542818 L 776.105801951431 2216.3207832511516 Z"/></g></g></g><g/><g/><g/></g></svg>
Lab exchange.txt
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.RobinHuisman
Size
... ... @@ -1,0 +1,1 @@
1 +2.2 KB
Content
... ... @@ -1,0 +1,50 @@
1 +title Digital Lab exchange Process
2 +
3 +participant Lab
4 +participant TerraIndex
5 +participant TerraIndex_User
6 +
7 +
8 +==**Labdelivery data**==
9 +note over Lab,TerraIndex_User:TerraIndex retrieves the 'menu-card' so the user can order analysis.
10 +TerraIndex->Lab:Request the Client codes for a Customer
11 +Lab->TerraIndex:return the active Client codes
12 +TerraIndex->Lab:LabDelivery Data/File for a Customer Client Code
13 +Lab->TerraIndex:return the Labdelivery SIKB0101 File.
14 +TerraIndex->TerraIndex:Store and import into User database.
15 +
16 +==**Labassignment**==
17 +note over Lab,TerraIndex_User:TerraIndex sends the 'order' so the lab can process the samples.
18 +TerraIndex->TerraIndex_User:Show available Lab and Client codes
19 +TerraIndex_User->TerraIndex_User:Select Lab and Client code
20 +TerraIndex->TerraIndex_User:Show available Analysis Sets and Urgencies
21 +TerraIndex_User->TerraIndex_User:Select the samples
22 +TerraIndex_User->TerraIndex_User:Select the needed analysis sets
23 +TerraIndex_User->TerraIndex:Store/Save the labassignment
24 +TerraIndex_User->TerraIndex:Send to the lab
25 +TerraIndex->TerraIndex:Generate SIKB0101 Labassignment file
26 +TerraIndex->Lab:Send file to the Lab
27 +note over Lab,TerraIndex:Option A
28 +Lab->TerraIndex:Acknowledge a success received
29 +TerraIndex->TerraIndex:Save status
30 +TerraIndex->TerraIndex_User:Show status and prevent further editing
31 +note over Lab,TerraIndex:Option B
32 +Lab->TerraIndex:Return Order price PDF
33 +TerraIndex->TerraIndex_User:Show Price and PDF
34 +TerraIndex_User->TerraIndex:Approve Order
35 +TerraIndex->Lab:Approve Order
36 +Lab->TerraIndex:Acknowledge a success received
37 +TerraIndex->TerraIndex:Save status
38 +TerraIndex->TerraIndex_User:Show status and prevent further editing
39 +
40 +==**Labresults**==
41 +note over Lab,TerraIndex_User:TerraIndex retrieves the 'results' so the user can order report.
42 +TerraIndex->Lab:Requests the Changed assignments since last asking
43 +Lab->TerraIndex:return the changed orders with status
44 +TerraIndex->Lab:Request the results of a Ready order
45 +Lab->TerraIndex:return the Analysisresults SIKB0101 File.
46 +TerraIndex->TerraIndex:Store and import into User database.
47 +TerraIndex->TerraIndex_User:
48 +TerraIndex_User->TerraIndex_User:Asessments and Report results
49 +
50 +