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