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