Last modified by Nico Lemaire on 2025/05/06 15:49
From version 16.1
edited by Robin Huisman
on 2024/04/05 16:20
on 2024/04/05 16:20
Change comment:
Uploaded new attachment "Lab exchange.txt", version {1}
To version 2.1
edited by Robin Huisman
on 2022/02/08 11:48
on 2022/02/08 11:48
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 6 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,67 +1,47 @@ 1 1 {{toc/}} 2 2 3 3 4 -= DigitalLabExchangeprocess=4 += Firewall IP-Adresssen van TerraIndex = 5 5 6 - Theflow diagram gives a small overview of what thedata flow of a lab assignment is. Every green blockshowsa step of the lab assignment process. From top to bottom these steps are:6 +Onze IP-adressen: 7 7 8 -1. Showing the laboratory and all the analyses that can be requested as an option to the user. 9 -1. The user creating a lab assignment and sending it to the lab trough TerraIndex. 10 -1. The lab sending the analysis results back to the TerraIndex. 11 - 12 -[[attach:Lab exchange.svg||rel=" noopener noreferrer" target="_blank"]] 13 - 14 -[[image:1712326465681-980.png||height="315" width="630"]] 15 - 16 -[[image:1712326492306-381.png||height="781" width="635"]] 17 - 18 -[[image:1712326520488-924.png||height="312" width="632"]] 19 - 20 -(% element-id="1884" %) 21 -= (% element-id="1883" %)Firewall IP-Addresses of TerraIndex(%%) = 22 - 23 -(% element-id="1882" %) 24 -Our IP-addresses: 25 - 26 -(% element-id="1881" %) 27 -inbound [[Web.terraindex.com>>url:http://Web.terraindex.com||element-id="1880"]] 8 +ingaand [[Web.terraindex.com>>url:http://Web.terraindex.com]] 28 28 137.116.199.164 29 29 30 -(% element-id="1878" %) 31 -outbound [[Test.terraindex.com>>url:http://Test.terraindex.com||element-id="1877"]] 11 +ingaand [[Test.terraindex.com>>url:http://Test.terraindex.com]] 32 32 104.45.9.128 33 33 34 -(% element-id="1875" %) 35 -Production outbound 14 +Productie uitgaand 36 36 40.115.34.64 37 37 38 -(% element-id="1873" %) 39 -Test outbound 17 +Test uitgaand 40 40 13.73.138.173 41 41 42 -(% element-id="1871" %) 43 -CD/CI outbound 20 +CD/CI uitgaand 44 44 40.114.238.16 45 45 46 -(% element-id="1869" %) 47 -Office outbound 23 +--Kantoor VPN uitgaand (niet meer in gebruik, was de oude OpenVPN) 24 +10.33.66.215-- 25 + 26 +Kantoor uitgaand 48 48 213.124.115.132 49 49 29 +--Oude Citrix uitgaand (citrix is ook verhuisd, dit is niet meer in gebruik) 30 +83.96.194.140-- 50 50 51 -(% element-id="1864" %) 52 -= (% element-id="1863" %)Labdelivery (menu-card) files Exchange(%%) = 53 53 54 -(% element-id="1862" %) 55 -== (% element-id="1861" %)Solution/Design(%%) == 33 += Labaanlever bestanden uitwisseling = 56 56 35 +== Oplossing/Design == 57 57 58 -(% class="table-hover" element-id="1858" %) 59 -(% 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** 60 -(% 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), **(%%) 61 -(% element-id="1832" %)**WebservicePassword (string),**(%%) 62 -(% element-id="1830" %)**CustomerUsername (string)**|(% element-id="1829" %) |(% element-id="1827" %) 63 -(% 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" %) 64 -(% 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 (), 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 (), 65 65 ErrorMessage (string), 66 66 List<customer> , Customer: 67 67 CustomerCode (string), ... ... @@ -68,7 +68,7 @@ 68 68 CustomerName (string), 69 69 LabID (int), 70 70 LabName (string), 71 -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,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, 72 72 2 = GeneralError, 73 73 3 = WrongSIKBVersion, 74 74 4 = InvalidCredentials, ... ... @@ -78,29 +78,26 @@ 78 78 8 = InvalidOrderId, 79 79 9 = OrderIdAlreadyApproved 80 80 10 = PDFNotAvailable 81 - (% 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" %)82 - (% 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), **(%%)83 - (% element-id="1766" %)**WebservicePassword (string),**(%%)84 - (% element-id="1764" %)**CustomerUsername (string),**(%%)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),** 85 85 LabID (int), 86 86 CustomerCode (string), 87 87 LanguageCode (string, default 'nld' volgens ISO 639-3-codes), 88 88 SIKBVersion (string, default: '13.4.0'), 89 -UseZipStream/UseZip (bool, default: 'false')|(% element-id="1758" %)(% element-id="1757" %) 90 -((( 91 -(% element-id="1756" %) 69 +UseZipStream/UseZip (bool, default: 'false')|((( 92 92 We start with dutch, then extend with multiple languages, TerraIndex is in the lead to request multiple languages. 93 93 TerraIndex uses: 'fra', 'nld', 'eng', 'spa', 'deu', 'ita', 'por', 'dan' 94 94 95 95 96 -(% element-id="1752" %) 97 97 Besides SIKB 13.4.0, TerraIndex also supports 9.0.0/8.0.0 etc. 98 -)))| (%element-id="1751" %)99 - (% 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" %)100 - (% 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 (),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 (), 101 101 ErrorMessage (string), 102 102 FileContent_Base64 (string), 103 -UseZipStream/UseZip (bool, default: 'false')| (%element-id="1726" %)|(% element-id="1724"%)1= Success,80 +UseZipStream/UseZip (bool, default: 'false')| |1 = Success, 104 104 2 = GeneralError, 105 105 3 = WrongSIKBVersion, 106 106 4 = InvalidCredentials, ... ... @@ -110,19 +110,15 @@ 110 110 8 = InvalidOrderId, 111 111 9 = OrderIdAlreadyApproved 112 112 10 = PDFNotAvailable 113 - (% 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" %)114 - (% 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" %)115 - (% 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" %)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| | | | | 116 116 117 -(% element-id="1675" %) 118 -== (% element-id="1674" %)Get Customers (POST)(%%) == 94 +== Get Customers (POST) == 119 119 120 -(% element-id="1673" %) 121 -=== (% element-id="1672" %)Request example(%%) === 96 +=== Request example === 122 122 123 -(% element-id="1671" %) 124 -(% element-id="1669" %)|(% element-id="1668" %)(% element-id="1667" %) 125 -((( 98 +|((( 126 126 {{code language="C#"}} 127 127 public GetCustomersCall.Response GetCustomers(string WebserviceUsername, string WebservicePassword, string CustomerUsername) 128 128 { ... ... @@ -167,323 +167,235 @@ 167 167 } 168 168 {{/code}} 169 169 170 -(% element-id="1566" %) 171 171 172 172 ))) 173 173 174 -(% element-id="1564" %) 175 -(% element-id="1562" %)|(% element-id="1561" %)(% element-id="1560" %) 176 -((( 177 -(% element-id="1559" %) 146 +|((( 178 178 POST https:~/~/<URL>/GetCustomers HTTP/1.1 179 179 180 -(% element-id="1558" %) 181 181 Content-Type: application/x-www-form-urlencoded 182 182 183 -(% element-id="1557" %) 184 184 Host: 81.175.89.24 185 185 186 -(% element-id="1556" %) 187 187 Content-Length: 115 188 188 189 -(% element-id="1555" %) 190 190 Expect: 100-continue 191 191 192 192 193 -(% element-id="1552" %) 194 194 userName=<webservice_username>&password=<Webservice_password>&customerUsername=<customer_username or token> 195 195 ))) 196 196 197 -(% element-id="1551" %) 198 -=== (% element-id="1550" %)Response example(%%) === 161 +=== Response example === 199 199 200 -(% element-id="1549" %) 201 -(% element-id="1547" %)|(% element-id="1546" %)(% element-id="1545" %) 202 -((( 203 -{{code language="XML"}} 163 +|((( 204 204 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 165 + 205 205 <Response><Customers> 206 - <Customer LabId="1" LabName="Example Laboratorium" CustomerId="300" CustomerName="Adviesbureau De bodemkoning - Rotterdam" LastModifiedOnClient="2019-05-08T11:05:14.17+02:00" ></Customer> 207 - <Customer LabId="1" LabName="Example Laboratorium" CustomerId="656" CustomerName="Adviesbureau De bodemkoning - Delft" LastModifiedOnClient="2019-04-19T13:20:10.123+02:00" ></Customer> 167 + 168 + <Customer LabId="1" LabName="Example Laboratorium" CustomerId="300" CustomerName="Adviesbureau De bodemkoning - Rotterdam" LastModifiedOnClient="2019-05-08T11:05:14.17+02:00" /> 169 + 170 + <Customer LabId="1" LabName="Example Laboratorium" CustomerId="656" CustomerName="Adviesbureau De bodemkoning - Delft" LastModifiedOnClient="2019-04-19T13:20:10.123+02:00" /> 171 + 208 208 </Customers> 173 + 209 209 <Status> 210 - <StatusCode>1</StatusCode> 211 - <StatusCodeDescription>OK</StatusCodeDescription> 212 - <ErrorMessage></ErrorMessage> 175 + 176 + <StatusCode>1</StatusCode> 177 + 178 + <StatusCodeDescription>OK</StatusCodeDescription> 179 + 180 + <ErrorMessage></ErrorMessage> 181 + 213 213 </Status> 214 -</Response> 215 -{{/code}} 216 216 217 -(% element-id="1492" %) 218 - 184 +</Response> 219 219 ))) 220 220 221 -(% element-id="1490" %) 222 -== (% element-id="1489" %)Get Products (POST)(%%) == 187 +== Get Products (POST) == 223 223 224 -(% element-id="1488" %) 225 -=== (% element-id="1487" %)Request example(%%) === 189 +=== Request example === 226 226 227 -(% element-id="1486" %) 228 -(% element-id="1484" %)|(% element-id="1483" %)(% element-id="1482" %) 229 -((( 230 -(% element-id="1481" %) 191 +|((( 231 231 public GetProductsCall.Response GetProductList(string WebserviceUsername, string WebservicePassword, string CustomerUsername, string customerid, int labid, string sikbVersion, string languageCode) 232 232 233 -(% element-id="1480" %) 234 234 { 235 235 236 236 237 -(% element-id="1477" %) 238 238 GetProductsCall.Response set = new GetProductsCall.Response(); 239 239 240 240 241 -(% element-id="1474" %) 242 242 try 243 243 244 -(% element-id="1473" %) 245 245 { 246 246 247 -(% element-id="1472" %) 248 248 bool useZipstream = true; 249 249 250 -(% element-id="1471" %) 251 251 var content = new FormUrlEncodedContent(new[] 252 252 253 -(% element-id="1470" %) 254 254 { 255 255 256 -(% element-id="1469" %) 257 257 new KeyValuePair<string, string>("userName", WebserviceUsername), 258 258 259 -(% element-id="1468" %) 260 260 new KeyValuePair<string, string>("password", WebservicePassword), 261 261 262 -(% element-id="1467" %) 263 263 new KeyValuePair<string, string>("customerUsername", CustomerUsername), 264 264 265 -(% element-id="1466" %) 266 266 new KeyValuePair<string, string>("languageCode", languageCode), 267 267 268 -(% element-id="1465" %) 269 269 new KeyValuePair<string, string>("clientId", customerid), 270 270 271 -(% element-id="1464" %) 272 272 new KeyValuePair<string, string>("sikbVersion", sikbVersion), 273 273 274 -(% element-id="1463" %) 275 275 new KeyValuePair<string, string>("useZip", useZipstream.ToString() ), 276 276 277 -(% element-id="1462" %) 278 278 }); 279 279 280 280 281 -(% element-id="1459" %) 282 282 HttpResponseMessage response = _HttpClient.PostAsync(_HttpClient.BaseAddress + "/GetProducts", content).Result; 283 283 284 -(% element-id="1458" %) 285 285 response.EnsureSuccessStatusCode(); 286 286 287 -(% element-id="1457" %) 288 288 string responseMessage = response.Content.ReadAsStringAsync().Result; 289 289 290 290 291 -(% element-id="1454" %) 292 292 if (string.IsNullOrEmpty(responseMessage)) 293 293 294 -(% element-id="1453" %) 295 295 { 296 296 297 -(% element-id="1452" %) 298 298 throw new Exception("Empty response from: [" + _HttpClient.BaseAddress + " /GetProducts" + "]"); 299 299 300 -(% element-id="1451" %) 301 301 } 302 302 303 -(% element-id="1450" %) 304 304 using (var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseMessage~)~)~) 305 305 306 -(% element-id="1449" %) 307 307 { 308 308 309 -(% element-id="1448" %) 310 310 XmlSerializer serializer = new XmlSerializer(typeof(GetProductsCall.Response)); 311 311 312 -(% element-id="1447" %) 313 313 set = (GetProductsCall.Response)serializer.Deserialize(ms); 314 314 315 -(% element-id="1446" %) 316 316 } 317 317 318 318 319 -(% element-id="1443" %) 320 320 if (useZipstream && !string.IsNullOrEmpty(set.FileContent)) 321 321 322 -(% element-id="1442" %) 323 323 { 324 324 325 -(% element-id="1441" %) 326 326 ~/~/convert from base64 string back to normal 327 327 328 -(% element-id="1440" %) 329 329 ~/~/first check for real Base64, by checking there is no 'xml' in it 330 330 331 -(% element-id="1439" %) 332 332 if (!set.FileContent.Contains("<labaanlevering")) 333 333 334 -(% element-id="1438" %) 335 335 { 336 336 337 -(% element-id="1437" %) 338 338 set.FileContent = ZipStreamHelper.DecompressBase64StringToString(set.FileContent); 339 339 340 -(% element-id="1436" %) 341 341 } 342 342 343 -(% element-id="1435" %) 344 344 } 345 345 346 346 347 -(% element-id="1432" %) 348 348 } 349 349 350 -(% element-id="1431" %) 351 351 catch (Exception ex) 352 352 353 -(% element-id="1430" %) 354 354 { 355 355 356 -(% element-id="1429" %) 357 357 #region handle exception 358 358 359 359 360 -(% element-id="1426" %) 361 361 set.Status = new BusinessEntities.LabRestService.GetProductsCall.ResponseStatus(); 362 362 363 -(% element-id="1425" %) 364 364 set.Status.StatusCode = ((int)ResultCodes.GeneralError).ToString(); 365 365 366 -(% element-id="1424" %) 367 367 set.Status.ErrorMessage = "Exception occurred in GetProducts (username: " + WebserviceUsername + ", password: " + WebservicePassword + ") with message: " + ex.Message; 368 368 369 369 370 -(% element-id="1421" %) 371 371 ex.Data.Add("WebserviceUsername", WebserviceUsername); 372 372 373 -(% element-id="1420" %) 374 374 ex.Data.Add("WebservicePassword", WebservicePassword); 375 375 376 -(% element-id="1419" %) 377 377 ex.Data.Add("CustomerUsername", CustomerUsername); 378 378 379 -(% element-id="1418" %) 380 380 ex.Data.Add("sikbVersion", sikbVersion); 381 381 382 -(% element-id="1417" %) 383 383 ex.Data.Add("customerid", customerid); 384 384 385 -(% element-id="1416" %) 386 386 ex.Data.Add("languageCode", languageCode); 387 387 388 388 389 -(% element-id="1413" %) 390 390 ExceptionHandler.HandleException(ex); 391 391 392 -(% element-id="1412" %) 393 393 #endregion 394 394 395 -(% element-id="1411" %) 396 396 } 397 397 398 398 399 -(% element-id="1408" %) 400 400 return set; 401 401 402 -(% element-id="1407" %) 403 403 } 404 404 ))) 405 405 406 -(% element-id="1406" %) 407 -(% element-id="1404" %)|(% element-id="1403" %)(% element-id="1402" %) 408 -((( 409 -(% element-id="1401" %) 313 +|((( 410 410 POST https:~/~/<URL>/GetProducts HTTP/1.1 411 411 412 -(% element-id="1400" %) 413 413 Content-Type: application/x-www-form-urlencoded 414 414 415 -(% element-id="1399" %) 416 416 Host: 81.175.89.24 417 417 418 -(% element-id="1398" %) 419 419 Content-Length: 179 420 420 421 -(% element-id="1397" %) 422 422 Expect: 100-continue 423 423 424 424 425 -(% element-id="1394" %) 426 426 userName=<webservice_username>&password=<Webservice_password>&customerUsername=<customer_username or token>&languageCode=nld&clientId=300&sikbVersion=13.5.0&useZip=True 427 427 ))) 428 428 429 -(% element-id="1393" %) 430 -=== (% element-id="1392" %)Response example(%%) === 328 +=== Response example === 431 431 432 -(% element-id="1391" %) 433 -(% element-id="1389" %)|(% element-id="1388" %)(% element-id="1387" %) 434 -((( 435 -(% element-id="1386" %) 330 +|((( 436 436 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 437 437 438 -(% element-id="1385" %) 439 439 <Response> 440 440 441 -(% element-id="1384" %) 442 442 <FileContent> {SIKB FILE in ZIPSTREAM BASE64 format}</FileContent> 443 443 444 -(% element-id="1383" %) 445 445 <Status> 446 446 447 -(% element-id="1382" %) 448 448 <StatusCode>1</StatusCode> 449 449 450 -(% element-id="1381" %) 451 451 <StatusCodeDescription>OK</StatusCodeDescription> 452 452 453 -(% element-id="1380" %) 454 454 <ErrorMessage></ErrorMessage> 455 455 456 -(% element-id="1379" %) 457 457 </Status></Response> 458 458 ))) 459 459 460 -(% element-id="1378" %) 461 -= (% element-id="1377" %)Useraccount Checkup.(%%) = 462 462 463 -(% element-id="1374" %) 464 -== (% element-id="1373" %)Solution/Design(%%) == 349 += Gebruikersaccount controleren. = 465 465 466 -(% element-id="1372" %) 467 -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. 468 468 469 -(% element-id="1371" %) 352 +== Oplossing/Design == 353 + 354 +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. 355 + 470 470 WebserviceUsername (string), 471 471 WebservicePassword (string), 472 472 CustomerUsername (string) 473 473 474 474 475 -(% element-id="1366" %) 476 -Therefor we call a Webserice for ValidCredentials Check: 361 +Hiervoor maken we een Webserice voor ValidCredentials Check: 477 477 478 478 479 -(% class="table-hover" element-id="1363"%)480 - (% 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**481 - (% 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),364 +(% class="table-hover" %) 365 +|**Action**|**TerraIndex**| |**Laboratorium**|**Parameters/Message**|**Remarks**|**ResultCodes** 366 +|1|Sends a request to the function: ValidCredentials().|=>| |WebserviceUsername (string), 482 482 WebservicePassword (string), 483 -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" %)484 - (% 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" %)485 - (% 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 (),486 -ErrorMessage (string),| (%element-id="1313" %)|(% element-id="1311"%)1= Success,368 +CustomerUsername (string)|We want to skip the Password of the customer, and we use the WebserviceUsername + WebservicePassword for real authentication.| 369 +|2| | |Receives the request and checks the combination of WebserviceUsername and WebservicePassword is Ok. Then checks the CustomerUsername is valid.| | | 370 +|3| |<=|Sends back a Success of InvalidCredentials|ResultCode (), 371 +ErrorMessage (string),| |1 = Success, 487 487 2 = GeneralError, 488 488 3 = WrongSIKBVersion, 489 489 4 = InvalidCredentials, ... ... @@ -494,215 +494,149 @@ 494 494 9 = OrderIdAlreadyApproved 495 495 10 = PDFNotAvailable 496 496 497 -(% element-id="1301" %) 498 -== (% element-id="1300" %)Check ValidCredentials (POST)(%%) == 382 +== Check ValidCredentials (POST) == 499 499 500 -(% element-id="1299" %) 501 -=== (% element-id="1298" %)Request example(%%) === 384 +=== Request example === 502 502 503 -(% element-id="1297" %) 504 -(% element-id="1295" %)|(% element-id="1294" %)(% element-id="1293" %) 505 -((( 506 -(% element-id="1292" %) 386 +|((( 507 507 public ValidCredentialsCall.Response ValidCredentials(string WebserviceUsername, string WebservicePassword, string CustomerUsername, string customerid) 508 508 509 -(% element-id="1291" %) 510 510 { 511 511 512 -(% element-id="1290" %) 513 513 ValidCredentialsCall.Response set = new ValidCredentialsCall.Response(); 514 514 515 515 516 -(% element-id="1287" %) 517 517 try 518 518 519 -(% element-id="1286" %) 520 520 { 521 521 522 522 523 -(% element-id="1283" %) 524 524 var content = new FormUrlEncodedContent(new[] 525 525 526 -(% element-id="1282" %) 527 527 { 528 528 529 -(% element-id="1281" %) 530 530 new KeyValuePair<string, string>("userName", WebserviceUsername), 531 531 532 -(% element-id="1280" %) 533 533 new KeyValuePair<string, string>("password", WebservicePassword), 534 534 535 -(% element-id="1279" %) 536 536 ~/~/new KeyValuePair<string, string>("clientId", customerid), ~/~/ Optional 537 537 538 -(% element-id="1278" %) 539 539 new KeyValuePair<string, string>("customerUsername", CustomerUsername), 540 540 541 -(% element-id="1277" %) 542 542 }); 543 543 544 544 545 -(% element-id="1274" %) 546 546 HttpResponseMessage response = _HttpClient.PostAsync(_HttpClient.BaseAddress + "/ValidCredentials", content).Result; 547 547 548 -(% element-id="1273" %) 549 549 response.EnsureSuccessStatusCode(); 550 550 551 -(% element-id="1272" %) 552 552 string responseMessage = response.Content.ReadAsStringAsync().Result; 553 553 554 554 555 -(% element-id="1269" %) 556 556 if (string.IsNullOrEmpty(responseMessage)) 557 557 558 -(% element-id="1268" %) 559 559 { 560 560 561 -(% element-id="1267" %) 562 562 throw new Exception("Empty response from: [" + _HttpClient.BaseAddress + " / ValidCredentials" + "]"); 563 563 564 -(% element-id="1266" %) 565 565 } 566 566 567 -(% element-id="1265" %) 568 568 using (var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseMessage~)~)~) 569 569 570 -(% element-id="1264" %) 571 571 { 572 572 573 -(% element-id="1263" %) 574 574 XmlSerializer serializer = new XmlSerializer(typeof(ValidCredentialsCall.Response)); 575 575 576 -(% element-id="1262" %) 577 577 set = (ValidCredentialsCall.Response)serializer.Deserialize(ms); 578 578 579 579 580 -(% element-id="1259" %) 581 581 return set; 582 582 583 -(% element-id="1258" %) 584 584 } 585 585 586 586 587 -(% element-id="1255" %) 588 588 } 589 589 590 -(% element-id="1254" %) 591 591 catch (Exception ex) 592 592 593 -(% element-id="1253" %) 594 594 { 595 595 596 -(% element-id="1252" %) 597 597 #region handle exception 598 598 599 599 600 -(% element-id="1249" %) 601 601 set.Status = new BusinessEntities.LabRestService.ValidCredentialsCall.ResponseStatus(); 602 602 603 -(% element-id="1248" %) 604 604 set.Status.StatusCode = ((int)ResultCodes.GeneralError).ToString(); 605 605 606 -(% element-id="1247" %) 607 607 set.Status.ErrorMessage = "Exception occurred in GetValidCredentials (username: " + WebserviceUsername + ", with message: " + ex.Message; 608 608 609 609 610 -(% element-id="1244" %) 611 611 ex.Data.Add("WebserviceUsername", WebserviceUsername); 612 612 613 -(% element-id="1243" %) 614 614 ex.Data.Add("WebservicePassword", WebservicePassword); 615 615 616 -(% element-id="1242" %) 617 617 ex.Data.Add("CustomerUsername", CustomerUsername); 618 618 619 619 620 -(% element-id="1239" %) 621 621 ExceptionHandler.HandleException(ex); 622 622 623 -(% element-id="1238" %) 624 624 #endregion 625 625 626 -(% element-id="1237" %) 627 627 } 628 628 629 629 630 -(% element-id="1234" %) 631 631 return set; 632 632 633 -(% element-id="1233" %) 634 634 } 635 635 ))) 636 636 637 -(% element-id="1232" %) 638 -(% element-id="1230" %)|(% element-id="1229" %)(% element-id="1228" %) 639 -((( 640 -(% element-id="1227" %) 478 +|((( 641 641 POST https:~/~/<URL>/ValidCredentials HTTP/1.1 642 642 643 -(% element-id="1226" %) 644 644 Content-Type: application/x-www-form-urlencoded 645 645 646 -(% element-id="1225" %) 647 647 Host: 81.175.89.24 648 648 649 -(% element-id="1224" %) 650 650 Content-Length: 125 651 651 652 -(% element-id="1223" %) 653 653 Expect: 100-continue 654 654 655 655 656 -(% element-id="1220" %) 657 657 userName=<webservice_username>&password=<Webservice_password>&clientId=<optional otherwise empty>&customerUsername=<customer_username or token> 658 658 ))) 659 659 660 -(% element-id="1219" %) 661 -=== (% element-id="1218" %)Response example(%%) === 493 +=== Response example === 662 662 663 -(% element-id="1217" %) 664 -(% element-id="1215" %)|(% element-id="1214" %)(% element-id="1213" %) 665 -((( 666 -(% element-id="1212" %) 495 +|((( 667 667 <?xml version="1.0" encoding="UTF-8" standalone="no"?><Response> 668 668 669 -(% element-id="1211" %) 670 670 <Status> 671 671 672 -(% element-id="1210" %) 673 673 <StatusCode>1</StatusCode> 674 674 675 -(% element-id="1209" %) 676 676 <StatusCodeDescription>OK</StatusCodeDescription> 677 677 678 -(% element-id="1208" %) 679 679 <ErrorMessage></ErrorMessage> 680 680 681 -(% element-id="1207" %) 682 682 </Status> 683 683 684 -(% element-id="1206" %) 685 685 </Response> 686 686 ))) 687 687 688 -(% element-id="1205" %) 689 -= (% element-id="1204" %)Labassignment request delivery(POST)(%%) = 511 += Opdrachten versturen (POST) = 690 690 691 -(% element-id="1203" %) 692 -== (% element-id="1202" %)Solution/Design(%%) == 513 +== Oplossing/Design == 693 693 694 -(% element-id="1201" %) 695 -For this we create a Webserice for CreateOrder to create the order in the lab system. 696 -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. 697 -Depending on the user's choice at the laboratory, to support this or not, TerraIndex calls the ApproveOrder or the CancelOrder. 515 +Hiervoor maken we een Webserice voor CreateOrder om de opdracht aan te maken. 516 +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. 517 +Afhankelijk van de keuze van de gebruiker bij het laboratorium, roept TerraIndex de ApproveOrder of de CancelOrder aan. 698 698 699 -(% element-id="0" %) 700 -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. 519 +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. 701 701 702 702 703 -(% class="table-hover" element-id="1195"%)704 - (% 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**705 - (% 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),522 +(% class="table-hover" %) 523 +|**Action**|**TerraIndex**| |**Laboratorium**|**Parameters/Message**|**Remarks**|**ResultCodes** 524 +|1|Sends a request to the function: CreateOrder().|=>| |WebserviceUsername (string), 706 706 WebservicePassword (string), 707 707 CustomerUsername (string), 708 708 FileContent_Base64 (string), ... ... @@ -709,22 +709,22 @@ 709 709 UseZipStream/UseZip (bool, default: 'false'), 710 710 CustomerCode (string), 711 711 SIKBVersion (string, default: '13.4.0'), 712 -needsApprovalIsSupported (bool)| (% element-id="1164" %)SIKB Version included, so labs can quickly check the version.531 +needsApprovalIsSupported (bool)|SIKB Version included, so labs can quickly check the version. 713 713 Besides SIKB 13.4.0, TerraIndex also supports 9.0.0. 714 714 \\Before sending the SIKB, validate to the XSD! 715 715 And to the XSLT? 716 716 \\needsApprovalIsSupported = false; means we dont get PDF with offerte. This will make is faster. 717 -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" %)718 - (% 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" %)719 - (% 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.720 -Otherwise we use the idanlmons unique ID.|(% colspan="1" element-id="1130"%)721 - (% 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"%)722 - (% 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 (),536 +needsApprovalIsSupported = true; means lab will check the user setting to send a PDF Offerte back or not. (If the lab can support this.)| 537 +|2| | |Receives the request and checks the credentials.| | | 538 +|(% 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. 539 +Otherwise we use the idanlmons unique ID.|(% colspan="1" %) 540 +|(% 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" %) 541 +|4| |<=|Sends back a Success with the new OrderId|ResultCode (), 723 723 ErrorMessage (string), 724 724 OrderId (string), 725 725 NeedsApprove (bool), 726 726 FileContent_Base64 (string), 727 -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,546 +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, 728 728 2 = GeneralError, 729 729 3 = WrongSIKBVersion, 730 730 4 = InvalidCredentials, ... ... @@ -734,10 +734,8 @@ 734 734 8 = InvalidOrderId, 735 735 9 = OrderIdAlreadyApproved 736 736 10 = PDFNotAvailable 737 -(% element-id="1091" %)|(% colspan="1" element-id="1090" %)6|(% colspan="1" element-id="1089" %)Receives the OrderId, and saves it. 738 - |(% colspan="1" element-id="1086" %) |(% colspan="1" element-id="1084" %) |(% colspan="1" element-id="1082" %) |(% colspan="1" element-id="1080" %)(% element-id="1079" %) 739 -((( 740 -(% element-id="1078" %) 556 +|(% colspan="1" %)6|(% colspan="1" %)Receives the OrderId, and saves it. 557 + |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)((( 741 741 Default for now laboratorium will send: 742 742 NeedsApprove = False, 743 743 PDF = Empty, ... ... @@ -744,25 +744,23 @@ 744 744 Zipstream = False, 745 745 746 746 747 -(% element-id="1072" %) 748 748 In the future, do something with the PDF and show the PDF to users to Approve or Cancel. 749 749 This will be done by; NeedsApprove = true. 750 750 \\If NeedsApprove is False, the order is Processed and can't be changed in TI. Like it is now. 751 751 752 -(% element-id="1068" %) 753 753 754 -)))|(% colspan="1" element-id="1066"%)755 - (% 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"%)756 - (% 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"%)757 - (% 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"%)758 - (% 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),569 +)))|(% colspan="1" %) 570 +|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) 571 +|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) 572 +|(% colspan="1" %) |(% colspan="1" %)**IN THE FUTURE: APPROVEORDER**|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) 573 +|(% colspan="1" %)7|(% colspan="1" %)Sends a request to the function: ApproveOrder().|(% colspan="1" %)=>|(% colspan="1" %) |(% colspan="1" %)WebserviceUsername (string), 759 759 WebservicePassword (string), 760 760 CustomerUsername (string), 761 -OrderId (string)|(% colspan="1" element-id="1009"%) |(% colspan="1"element-id="1007"%)762 - (% 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"%)763 - (% 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 (),576 +OrderId (string)|(% colspan="1" %) |(% colspan="1" %) 577 +|(% 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" %) 578 +|(% colspan="1" %)9|(% colspan="1" %) |(% colspan="1" %)<=|(% colspan="1" %)Sends back a Success with the new CertificateNr|(% colspan="1" %)ResultCode (), 764 764 ErrorMessage (string), 765 -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,580 +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, 766 766 2 = GeneralError, 767 767 3 = WrongSIKBVersion, 768 768 4 = InvalidCredentials, ... ... @@ -772,16 +772,16 @@ 772 772 8 = InvalidOrderId, 773 773 9 = OrderIdAlreadyApproved 774 774 10 = PDFNotAvailable 775 - (% 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"%)776 - (% 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"%)777 - (% 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"%)778 - (% 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),590 +|(% colspan="1" %)10|(% colspan="1" %)Receives the CerificateNr and saves it.|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) 591 +|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) 592 +|(% colspan="1" %) |(% colspan="1" %)**IN THE FUTURE: CANCELORDER**|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) 593 +|7|Sends a request to the function: CancelOrder().|=>| |WebserviceUsername (string), 779 779 WebservicePassword (string), 780 780 CustomerUsername (string), 781 -OrderId (string)| (%element-id="919" %)|(%element-id="917" %)782 - (% 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" %)783 - (% element-id="902" %)|(% element-id="901" %)9|(%element-id="900" %)|(% element-id="898" %)<=|(% element-id="897" %)Sends back a Success |(% element-id="896" %)ResultCode (),784 -ErrorMessage (string)| (%element-id="894" %)|(% element-id="892" %)1 = Success,596 +OrderId (string)| | 597 +|8| | |Receives the cancel and checks the credentials and the OrderId.| | | 598 +|9| |<=|Sends back a Success |ResultCode (), 599 +ErrorMessage (string)| |1 = Success, 785 785 2 = GeneralError, 786 786 3 = WrongSIKBVersion, 787 787 4 = InvalidCredentials, ... ... @@ -791,466 +791,324 @@ 791 791 8 = InvalidOrderId, 792 792 9 = OrderIdAlreadyApproved 793 793 10 = PDFNotAvailable 794 - (% 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" %)795 - (% 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"%)609 +|10|Removes the OrderId and the IsSend to False| | | |If OrderIsAleadyApproved, set the values to Approved and keep the OrderId and IsSend.| 610 +|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) 796 796 797 -(% element-id="855" %) 798 -== (% element-id="854" %)Create Order(%%) == 612 +== Create Order == 799 799 800 -(% element-id="853" %) 801 -=== (% element-id="852" %)Request example(%%) === 614 +=== Request example === 802 802 803 -(% element-id="851" %) 804 -(% element-id="849" %)|(% element-id="848" %)(% element-id="847" %) 805 -((( 806 -(% element-id="846" %) 616 +|((( 807 807 public CreateOrderResponse.Response SendLabAssignment(string WebserviceUsername, string WebservicePassword, string CustomerUsername, string customerid, string sikbVersion, string assignmentXML, string languageCode, bool needsApprovalIsSupported = false) 808 808 809 -(% element-id="845" %) 810 810 { 811 811 812 -(% element-id="844" %) 813 813 CreateOrderResponse.Response set = new CreateOrderResponse.Response(); 814 814 815 815 816 -(% element-id="841" %) 817 817 try 818 818 819 -(% element-id="840" %) 820 820 { 821 821 822 -(% element-id="839" %) 823 823 bool useZipstream = true; 824 824 825 825 826 -(% element-id="836" %) 827 827 MultipartFormDataContent content = new MultipartFormDataContent(); 828 828 829 829 830 -(% element-id="833" %) 831 831 ~/~/Add Formdata 832 832 833 -(% element-id="832" %) 834 834 var formDataDictionary = new[] 835 835 836 -(% element-id="831" %) 837 837 { 838 838 839 -(% element-id="830" %) 840 840 new KeyValuePair<string, string>("userName", WebserviceUsername), 841 841 842 -(% element-id="829" %) 843 843 new KeyValuePair<string, string>("password", WebservicePassword), 844 844 845 -(% element-id="828" %) 846 846 new KeyValuePair<string, string>("customerUserName", CustomerUsername), 847 847 848 -(% element-id="827" %) 849 849 new KeyValuePair<string, string>("clientId", customerid), 850 850 851 -(% element-id="826" %) 852 852 new KeyValuePair<string, string>("sikbVersion", sikbVersion), 853 853 854 -(% element-id="825" %) 855 855 new KeyValuePair<string, string>("languageCode", languageCode), 856 856 857 -(% element-id="824" %) 858 858 new KeyValuePair<string, string>("useZip", useZipstream.ToString() ), 859 859 860 -(% element-id="823" %) 861 861 new KeyValuePair<string, string>("needsApprovalIsSupported", needsApprovalIsSupported.ToString() ), 862 862 863 -(% element-id="822" %) 864 864 ~/~/new KeyValuePair<string, string>("orderXml", ZipStreamHelper.CompressToBase64String(assignmentXML)), 865 865 866 -(% element-id="821" %) 867 867 ~/~/new KeyValuePair<string, string>("orderXml", assignmentXML), 868 868 869 -(% element-id="820" %) 870 870 }; 871 871 872 -(% element-id="819" %) 873 873 foreach (var item in formDataDictionary) 874 874 875 -(% element-id="818" %) 876 876 { 877 877 878 -(% element-id="817" %) 879 879 content.Add(new StringContent(item.Value), $"\"{item.Key}\""); 880 880 881 -(% element-id="816" %) 882 882 } 883 883 884 884 885 -(% element-id="813" %) 886 886 string filexml = string.Empty; 887 887 888 -(% element-id="812" %) 889 889 if (useZipstream) 890 890 891 -(% element-id="811" %) 892 892 { 893 893 894 -(% element-id="810" %) 895 895 filexml = ZipStreamHelper.CompressToBase64String(assignmentXML); 896 896 897 -(% element-id="809" %) 898 898 } 899 899 900 -(% element-id="808" %) 901 901 else 902 902 903 -(% element-id="807" %) 904 904 { 905 905 906 -(% element-id="806" %) 907 907 filexml = assignmentXML; 908 908 909 -(% element-id="805" %) 910 910 } 911 911 912 912 913 -(% element-id="802" %) 914 914 ~/~/Add filecontent 915 915 916 -(% element-id="801" %) 917 917 var fileContent = new ByteArrayContent(ZipStreamHelper.stringToByteArray(filexml)); 918 918 919 -(% element-id="800" %) 920 920 fileContent.Headers.ContentDisposition = 921 921 922 -(% element-id="799" %) 923 923 new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data") ~/~/<- 'form-data' instead of 'attachment' 924 924 925 -(% element-id="798" %) 926 926 { 927 927 928 -(% element-id="797" %) 929 929 Name = "\"orderXml\"", ~/~/ \" is needed so the message contains the quotes, wihtout it will fail 930 930 931 -(% element-id="796" %) 932 932 FileName = "\"VivaTerraIndexAssignment.xml\"" 933 933 934 -(% element-id="795" %) 935 935 }; 936 936 937 -(% element-id="794" %) 938 938 fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/xml"); 939 939 940 -(% element-id="793" %) 941 941 content.Add(fileContent); 942 942 943 943 944 -(% element-id="790" %) 945 945 ~/~/Start sending 946 946 947 947 948 -(% element-id="787" %) 949 949 HttpResponseMessage response = _HttpClient.PostAsync(_HttpClient.BaseAddress + "/CreateOrder", content).Result; 950 950 951 -(% element-id="786" %) 952 952 response.EnsureSuccessStatusCode(); 953 953 954 -(% element-id="785" %) 955 955 string responseMessage = response.Content.ReadAsStringAsync().Result; 956 956 957 957 958 -(% element-id="782" %) 959 959 if (string.IsNullOrEmpty(responseMessage)) 960 960 961 -(% element-id="781" %) 962 962 { 963 963 964 -(% element-id="780" %) 965 965 throw new Exception("Empty response from: [" + _HttpClient.BaseAddress + " /CreateOrder" + "]"); 966 966 967 -(% element-id="779" %) 968 968 } 969 969 970 -(% element-id="778" %) 971 971 using (var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseMessage~)~)~) 972 972 973 -(% element-id="777" %) 974 974 { 975 975 976 -(% element-id="776" %) 977 977 XmlSerializer serializer = new XmlSerializer(typeof(CreateOrderResponse.Response)); 978 978 979 -(% element-id="775" %) 980 980 set = (CreateOrderResponse.Response)serializer.Deserialize(ms); 981 981 982 -(% element-id="774" %) 983 983 } 984 984 985 985 986 -(% element-id="771" %) 987 987 ~/~/Can contain a PDf with price information 988 988 989 -(% element-id="770" %) 990 990 if (set.UseZip && !string.IsNullOrEmpty(set.FileContent)) 991 991 992 -(% element-id="769" %) 993 993 { 994 994 995 -(% element-id="768" %) 996 996 ~/~/convert from base64 string back to normal 997 997 998 -(% element-id="767" %) 999 999 set.FileContent = ZipStreamHelper.DecompressBase64StringToString(set.FileContent); 1000 1000 1001 -(% element-id="766" %) 1002 1002 } 1003 1003 1004 1004 1005 -(% element-id="763" %) 1006 1006 } 1007 1007 1008 -(% element-id="762" %) 1009 1009 catch (Exception ex) 1010 1010 1011 -(% element-id="761" %) 1012 1012 { 1013 1013 1014 -(% element-id="760" %) 1015 1015 #region handle exception 1016 1016 1017 1017 1018 -(% element-id="757" %) 1019 1019 set.Status = new BusinessEntities.LabRestService.CreateOrderResponse.ResponseStatus(); 1020 1020 1021 -(% element-id="756" %) 1022 1022 set.Status.StatusCode = ((int)ResultCodes.GeneralError).ToString(); 1023 1023 1024 -(% element-id="755" %) 1025 1025 set.Status.ErrorMessage = "Exception occurred in CreateOrder (username: " + WebserviceUsername + ") with message: " + ex.Message; 1026 1026 1027 1027 1028 -(% element-id="752" %) 1029 1029 ex.Data.Add("WebserviceUsername", WebserviceUsername); 1030 1030 1031 -(% element-id="751" %) 1032 1032 ex.Data.Add("WebservicePassword", WebservicePassword); 1033 1033 1034 -(% element-id="750" %) 1035 1035 ex.Data.Add("CustomerUsername", CustomerUsername); 1036 1036 1037 -(% element-id="749" %) 1038 1038 ex.Data.Add("sikbVersion", sikbVersion); 1039 1039 1040 -(% element-id="748" %) 1041 1041 ex.Data.Add("customerid", customerid); 1042 1042 1043 1043 1044 -(% element-id="745" %) 1045 1045 ExceptionHandler.HandleException(ex); 1046 1046 1047 -(% element-id="744" %) 1048 1048 #endregion 1049 1049 1050 -(% element-id="743" %) 1051 1051 } 1052 1052 1053 1053 1054 -(% element-id="740" %) 1055 1055 return set; 1056 1056 1057 -(% element-id="739" %) 1058 1058 } 1059 1059 ))) 1060 1060 1061 -(% element-id="738" %) 1062 -(% element-id="736" %)|(% element-id="735" %)(% element-id="734" %) 1063 -((( 1064 -(% element-id="733" %) 792 +|((( 1065 1065 POST https:~/~/<URL>/CreateOrder HTTP/1.1 1066 1066 1067 -(% element-id="732" %) 1068 1068 Content-Type: multipart/form-data; boundary="28a3e130-70c9-4a1a-b544-a802a1ade6ca" 1069 1069 1070 -(% element-id="731" %) 1071 1071 Host: 81.175.89.24 1072 1072 1073 -(% element-id="730" %) 1074 1074 Content-Length: 5010 1075 1075 1076 -(% element-id="729" %) 1077 1077 Expect: 100-continue 1078 1078 1079 1079 1080 -(% element-id="726" %) 1081 1081 ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca 1082 1082 1083 -(% element-id="725" %) 1084 1084 Content-Type: text/plain; charset=utf-8 1085 1085 1086 -(% element-id="724" %) 1087 1087 Content-Disposition: form-data; name="userName" 1088 1088 1089 1089 1090 -(% element-id="721" %) 1091 1091 <Webservice_Username> 1092 1092 1093 -(% element-id="720" %) 1094 1094 ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca 1095 1095 1096 -(% element-id="719" %) 1097 1097 Content-Type: text/plain; charset=utf-8 1098 1098 1099 -(% element-id="718" %) 1100 1100 Content-Disposition: form-data; name="password" 1101 1101 1102 1102 1103 -(% element-id="715" %) 1104 1104 <Webservice_Password> 1105 1105 1106 -(% element-id="714" %) 1107 1107 ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca 1108 1108 1109 -(% element-id="713" %) 1110 1110 Content-Type: text/plain; charset=utf-8 1111 1111 1112 -(% element-id="712" %) 1113 1113 Content-Disposition: form-data; name="customerUserName" 1114 1114 1115 1115 1116 -(% element-id="709" %) 1117 1117 <Customer_Username or token> 1118 1118 1119 -(% element-id="708" %) 1120 1120 ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca 1121 1121 1122 -(% element-id="707" %) 1123 1123 Content-Type: text/plain; charset=utf-8 1124 1124 1125 -(% element-id="706" %) 1126 1126 Content-Disposition: form-data; name="clientId" 1127 1127 1128 1128 1129 -(% element-id="703" %) 1130 1130 300 1131 1131 1132 -(% element-id="702" %) 1133 1133 ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca 1134 1134 1135 -(% element-id="701" %) 1136 1136 Content-Type: text/plain; charset=utf-8 1137 1137 1138 -(% element-id="700" %) 1139 1139 Content-Disposition: form-data; name="sikbVersion" 1140 1140 1141 1141 1142 -(% element-id="697" %) 1143 1143 13.4.0 1144 1144 1145 -(% element-id="696" %) 1146 1146 ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca 1147 1147 1148 -(% element-id="695" %) 1149 1149 Content-Type: text/plain; charset=utf-8 1150 1150 1151 -(% element-id="694" %) 1152 1152 Content-Disposition: form-data; name="languageCode" 1153 1153 1154 1154 1155 -(% element-id="691" %) 1156 1156 nld 1157 1157 1158 -(% element-id="690" %) 1159 1159 ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca 1160 1160 1161 -(% element-id="689" %) 1162 1162 Content-Type: text/plain; charset=utf-8 1163 1163 1164 -(% element-id="688" %) 1165 1165 Content-Disposition: form-data; name="useZip" 1166 1166 1167 1167 1168 -(% element-id="685" %) 1169 1169 True 1170 1170 1171 -(% element-id="684" %) 1172 1172 ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca 1173 1173 1174 -(% element-id="683" %) 1175 1175 Content-Type: text/plain; charset=utf-8 1176 1176 1177 -(% element-id="682" %) 1178 1178 Content-Disposition: form-data; name="needsApprovalIsSupported" 1179 1179 1180 1180 1181 -(% element-id="679" %) 1182 1182 False 1183 1183 1184 -(% element-id="678" %) 1185 1185 ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca 1186 1186 1187 -(% element-id="677" %) 1188 1188 Content-Disposition: form-data; name="orderXml"; filename="VivaTerraIndexAssignment.xml" 1189 1189 1190 -(% element-id="676" %) 1191 1191 Content-Type: application/xml 1192 1192 1193 1193 1194 -(% element-id="673" %) 1195 1195 <SIKB File in Zip stream Base64 encoding> 1196 1196 1197 -(% element-id="672" %) 1198 1198 ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca~-~- 1199 1199 ))) 1200 1200 1201 -(% element-id="671" %) 1202 -=== (% element-id="670" %)Response example(%%) === 888 +=== Response example === 1203 1203 1204 -(% element-id="669" %) 1205 -(% element-id="667" %)|(% element-id="666" %)(% element-id="665" %) 1206 -((( 1207 -(% element-id="664" %) 890 +|((( 1208 1208 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 1209 1209 1210 -(% element-id="663" %) 1211 1211 <Response> 1212 1212 1213 -(% element-id="662" %) 1214 1214 <OrderId>7113828</OrderId> 1215 1215 1216 -(% element-id="661" %) 1217 1217 <NeedsApproval>True</NeedsApproval> 1218 1218 1219 -(% element-id="660" %) 1220 1220 <FileContent></FileContent> 1221 1221 1222 -(% element-id="659" %) 1223 1223 <Status> 1224 1224 1225 -(% element-id="658" %) 1226 1226 <StatusCode>1</StatusCode> 1227 1227 1228 -(% element-id="657" %) 1229 1229 <StatusCodeDescription>OK</StatusCodeDescription> 1230 1230 1231 -(% element-id="656" %) 1232 1232 <ErrorMessage></ErrorMessage> 1233 1233 1234 -(% element-id="655" %) 1235 1235 </Status></Response> 1236 1236 ))) 1237 1237 1238 -(% element-id="654" %) 1239 -= (% element-id="653" %)Get Order status and Results(%%) = 1240 1240 1241 -(% element-id="652" %) 1242 -== (% element-id="651" %)Soluion/Design(%%) == 913 += Get Order status and Results = 1243 1243 1244 -(% element-id="650" %) 1245 -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. 915 +== Oplossing/Design == 1246 1246 1247 -(% class="table-hover" element-id="647" %) 1248 -(% 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 1249 -(% 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), 917 +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. 918 + 919 + 920 +(% class="table-hover" %) 921 +|Action|TerraIndex| |Laboratorium|Parameters/Message|Remarks|ResultCodes 922 +|1|Sends a request to the function: GetCustomers().|=>| |WebserviceUsername (string), 1250 1250 WebservicePassword (string), 1251 -CustomerUsername (string)| (% element-id="627" %)We want to skip the Password of the customer, and we introduce the WebserviceUsername + WebservicePassword.|(%element-id="626" %)1252 - (% 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" %)1253 - (% 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 (),924 +CustomerUsername (string)|We want to skip the Password of the customer, and we introduce the WebserviceUsername + WebservicePassword.| 925 +|2| | |Receives the request and check the customers this username and searches the dateLastChanged for this Customer.| | | 926 +|3| |<=|Sends back the list of customers with the lastChangedTimestamp|ResultCode (), 1254 1254 ErrorMessage (string), 1255 1255 List<customer> , Customer: 1256 1256 CustomerCode (string), ... ... @@ -1257,7 +1257,7 @@ 1257 1257 CustomerName (string), 1258 1258 LabID (int), 1259 1259 LabName (string), 1260 -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,933 +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, 1261 1261 2 = GeneralError, 1262 1262 3 = WrongSIKBVersion, 1263 1263 4 = InvalidCredentials, ... ... @@ -1267,15 +1267,15 @@ 1267 1267 8 = InvalidOrderId, 1268 1268 9 = OrderIdAlreadyApproved 1269 1269 10 = PDFNotAvailable 1270 - (% 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" %)1271 - (% 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.1272 -Function: GetOrderStatuses()|= (% element-id="569" %)>|(%element-id="568" %)|(% element-id="566" %)WebserviceUsername (string),943 +|4|Receives the list of Customers. Read the Timestamp this Customer is last checked for Results/Statuses.| | | | | 944 +|5|Send for each Customer a call to retreive all orders statuses changes since a certain timestamp. 945 +Function: GetOrderStatuses()|=>| |WebserviceUsername (string), 1273 1273 WebservicePassword (string), 1274 1274 CustomerUsername (string), 1275 1275 CustomerCode (string), 1276 -LastCheckedTimestamp (DateTime)| (% element-id="561" %)TerraIndex keeps track of the last check timestamp for each license.|(%element-id="560" %)1277 - (% 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" %)1278 - (% 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 (),949 +LastCheckedTimestamp (DateTime)|TerraIndex keeps track of the last check timestamp for each license.| 950 +|6| | |Receives the request and check the orders that are changed since the timestamp for this Customer.| | | 951 +|7| |<=|Sends back the list of orders with the status and lastChangedTimestamp|ResultCode (), 1279 1279 ErrorMessage (string), 1280 1280 OrderID (string), 1281 1281 LabassignmentGUID (GUID), ... ... @@ -1282,10 +1282,10 @@ 1282 1282 CertificateNumber (string) 1283 1283 OrderStatusSIKB (int), 1284 1284 Delayed (boolean), 1285 -ExpectedTimeStamp (DateTime),| (% element-id="531" %)OrderStatusSIKB is the SIKB Labassignment status.958 +ExpectedTimeStamp (DateTime),|OrderStatusSIKB is the SIKB Labassignment status. 1286 1286 \\Delayed is a boolean to tell the customer a order will be later ready then expected. The ExpectedTimestamp. 1287 1287 If Delayed for the firsttime, TerraIndex can send a notification to the users and show a different layout. 1288 -\\LabassignmentGUID is filled to support also Labassignments that are not from TerraIndex Ordered.| (% element-id="525" %)1 = Success,961 +\\LabassignmentGUID is filled to support also Labassignments that are not from TerraIndex Ordered.|1 = Success, 1289 1289 2 = GeneralError, 1290 1290 3 = WrongSIKBVersion, 1291 1291 4 = InvalidCredentials, ... ... @@ -1295,22 +1295,22 @@ 1295 1295 8 = InvalidOrderId, 1296 1296 9 = OrderIdAlreadyApproved 1297 1297 10 = PDFNotAvailable 1298 - (% element-id="515" %)|(% element-id="514" %)8|(% element-id="513" %)Receives the list of Orders with status.1299 -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" %)1300 - (% element-id="502" %)|(% element-id="501" %)9|(% element-id="500" %)Send for each Order a call to retreive all results.1301 -Function: GetOrderResults()|= (% element-id="498" %)>|(%element-id="497" %)|(% element-id="495" %)WebserviceUsername (string),971 +|8|Receives the list of Orders with status. 972 +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.| 973 +|9|Send for each Order a call to retreive all results. 974 +Function: GetOrderResults()|=>| |WebserviceUsername (string), 1302 1302 WebservicePassword (string), 1303 1303 CustomerUsername (string), 1304 1304 CustomerCode (string), 1305 1305 OrderID (string), 1306 -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" %)1307 - (% 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" %)1308 - (% 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 (),979 +SIKBVersion (string, default: '13.4.0')|Besides SIKB 13.4.0, TerraIndex also supports 9.0.0/8.0.0 etc.| 980 +|10| | |Receives the request and creates a SIKB results file based on the version that is requested.| | | 981 +|11| |<=|Sends back the results of the orders.|ResultCode (), 1309 1309 ErrorMessage (string), 1310 1310 OrderId (string), 1311 1311 LabassignmentGUID (GUID), 1312 1312 FileContent_Base64 (string), 1313 -UseZipStream/UseZip (bool, default: 'false'),| (%element-id="461" %)|(% element-id="459" %)1 = Success,986 +UseZipStream/UseZip (bool, default: 'false'),| |1 = Success, 1314 1314 2 = GeneralError, 1315 1315 3 = WrongSIKBVersion, 1316 1316 4 = InvalidCredentials, ... ... @@ -1320,12 +1320,9 @@ 1320 1320 8 = InvalidOrderId, 1321 1321 9 = OrderIdAlreadyApproved 1322 1322 10 = PDFNotAvailable 1323 -(% 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" %) 1324 -((( 1325 -(% element-id="438" %) 996 +|12|Receives the results and imports all results.| | | |((( 1326 1326 Import will be done to corresponding samples based on: 1327 1327 1328 -(% element-id="437" %) 1329 1329 * Find Project by ProjectGUID (as provided in the labassignment) 1330 1330 * Find Project by ProjectCode (as provided in the Labassignment) 1331 1331 * Find Project and Labassignment by LabassignmentGUID (as provided in the Labassignment) ... ... @@ -1334,27 +1334,25 @@ 1334 1334 For lower version Labassignments the lab should return the 'old' idanlmons as SampleGUID in the XML. 1335 1335 * Find Samples (only if Project is already found ) by SampleName 1336 1336 1337 -(% element-id="429" %) 1338 1338 What is imported? 1339 1339 1340 -(% element-id="428" %) 1341 1341 * If Sample is found, the results in the XML are always all updated and/or inserted. 1342 1342 * 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) 1343 -)))| (%element-id="425" %)1344 - (% element-id="423" %)|(% element-id="422" %)13|(% element-id="421" %)If OrderStatus is 'Completed/Reported' (SIKBID: 5)1011 +)))| 1012 +|13|If OrderStatus is 'Completed/Reported' (SIKBID: 5) 1345 1345 Request the PDF certificate. 1346 -Function: GetOrderPDF()|= (% element-id="418" %)>|(%element-id="417" %)|(% element-id="415" %)WebserviceUsername (string),1014 +Function: GetOrderPDF()|=>| |WebserviceUsername (string), 1347 1347 WebservicePassword (string), 1348 1348 CustomerUsername (string), 1349 1349 CustomerCode (string), 1350 -OrderID (string),| (%element-id="410" %)|(%element-id="408" %)1351 - (% 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" %)1352 - (% 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 (),1018 +OrderID (string),| | 1019 +|14| | |Receives the request and creates the PDF for the Order.| | | 1020 +|15| |<=|Sends back the PDF of the order.|ResultCode (), 1353 1353 ErrorMessage (string), 1354 1354 OrderId (string), 1355 1355 LabassignmentGUID (GUID), 1356 1356 FileContent_Base64 (string), 1357 -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,1025 +UseZipStream/UseZip (bool, default: 'false'),|If the PDF is not available yet, please give the resultcode: PDFNotAvailable.|1 = Success, 1358 1358 2 = GeneralError, 1359 1359 3 = WrongSIKBVersion, 1360 1360 4 = InvalidCredentials, ... ... @@ -1364,30 +1364,27 @@ 1364 1364 8 = InvalidOrderId, 1365 1365 9 = OrderIdAlreadyApproved 1366 1366 10 = PDFNotAvailable 1367 - (% 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" %)1035 +|12|Receives the PDF and stores it for reporting and downloading.| | | | | 1368 1368 1369 - (% element-id="357"%)1370 - = (% element-id="356" %)Customer wants to see real time information about the status in the interface(%%)=1037 += 1038 +Customer wants to see real time information about the status in the interface = 1371 1371 1372 -(% element-id="354" %) 1373 -== (% element-id="353" %)Solution/Design(%%) == 1040 +== Oplossing/Design == 1374 1374 1375 -(% element-id="352" %) 1376 -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. 1042 +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. 1377 1377 1378 -(% element-id="351" %) 1379 1379 ..NOT SUPPORTED YET... 1380 1380 1381 -(% class="table-hover" element-id="350"%)1382 - (% 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"%)ResultCodes1383 - (% element-id="339" %)|(% element-id="338" %)1|(% element-id="337" %)Request the Order status for a single Order/Labassignment.1384 -Function: GetOrderStatus()|= (% element-id="335" %)>|(%element-id="334" %)|(% element-id="332" %)WebserviceUsername (string),1046 +(% class="table-hover" %) 1047 +|(% colspan="1" %)Action|(% colspan="1" %)TerraIndex|(% colspan="1" %) |(% colspan="1" %)Laboratorium|(% colspan="1" %)Parameters/Message|(% colspan="1" %)Remarks|(% colspan="1" %)ResultCodes 1048 +|1|Request the Order status for a single Order/Labassignment. 1049 +Function: GetOrderStatus()|=>| |WebserviceUsername (string), 1385 1385 WebservicePassword (string), 1386 1386 CustomerUsername (string), 1387 1387 CustomerCode (string), 1388 -OrderID (string),| (%element-id="327" %)|(%element-id="325" %)1389 - (% 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" %)1390 - (% 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 (),1053 +OrderID (string),| | 1054 +|2| | |Receives the request and gets the status for the Order.| | | 1055 +|3| |<=|Sends back the status of the order.|ResultCode (), 1391 1391 ErrorMessage (string), 1392 1392 OrderID (string), 1393 1393 LabassignmentGUID (GUID), ... ... @@ -1394,10 +1394,10 @@ 1394 1394 CertificateNumber (string) 1395 1395 OrderStatusSIKB (int), 1396 1396 Delayed (boolean), 1397 -ExpectedTimeStamp (DateTime),| (% element-id="296" %)OrderStatusSIKB is the SIKB Labassignment status.1062 +ExpectedTimeStamp (DateTime),|OrderStatusSIKB is the SIKB Labassignment status. 1398 1398 \\Delayed is a boolean to tell the customer a order will be later ready then expected. The ExpectedTimestamp. 1399 1399 If Delayed for the firsttime, TerraIndex can send a notification to the users and show a different layout. 1400 -\\LabassignmentGUID is filled to support also Labassignments that are not from TerraIndex Ordered.| (% element-id="290" %)1 = Success,1065 +\\LabassignmentGUID is filled to support also Labassignments that are not from TerraIndex Ordered.|1 = Success, 1401 1401 2 = GeneralError, 1402 1402 3 = WrongSIKBVersion, 1403 1403 4 = InvalidCredentials, ... ... @@ -1407,8 +1407,11 @@ 1407 1407 8 = InvalidOrderId, 1408 1408 9 = OrderIdAlreadyApproved 1409 1409 10 = PDFNotAvailable 1410 - (% element-id="280" %)|(% element-id="279" %)4|(% element-id="278" %)Receives the status and shows in the interface the updated info.1411 -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" %)1075 +|4|Receives the status and shows in the interface the updated info. 1076 +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.| 1412 1412 1413 -(% element-id="265" %) 1078 + 1079 + 1080 + 1081 + 1414 1414
- 1712326445096-102.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.RobinHuisman - Size
-
... ... @@ -1,1 +1,0 @@ 1 -20.5 KB - Content
- 1712326465681-980.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.RobinHuisman - Size
-
... ... @@ -1,1 +1,0 @@ 1 -20.5 KB - Content
- 1712326492306-381.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.RobinHuisman - Size
-
... ... @@ -1,1 +1,0 @@ 1 -38.6 KB - Content
- 1712326520488-924.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.RobinHuisman - Size
-
... ... @@ -1,1 +1,0 @@ 1 -16.8 KB - Content
- Lab exchange.svg
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.RobinHuisman - Size
-
... ... @@ -1,1 +1,0 @@ 1 -44.4 KB - Content
-
... ... @@ -1,1 +1,0 @@ 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,1 +1,0 @@ 1 -XWiki.RobinHuisman - Size
-
... ... @@ -1,1 +1,0 @@ 1 -2.2 KB - Content
-
... ... @@ -1,50 +1,0 @@ 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 -