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

From version 26.6
edited by Nico Lemaire
on 2025/05/06 15:49
Change comment: There is no comment for this version
To version 1.1
edited by Roelof Zwaan
on 2021/11/23 10:02
Change comment: There is no comment for this version

Summary

Details

Page properties
Title
... ... @@ -1,1 +1,1 @@
1 -Setting up API communication by REST services with TerraIndex for laboratories
1 +Setting up Lab communication by REST services with TerraIndex
Parent
... ... @@ -1,1 +1,1 @@
1 -Implementation documentation.WebHome
1 +Implementatie dcoumentatie.WebHome
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.NicoLemaire
1 +XWiki.RoelofZwaan
Content
... ... @@ -1,89 +1,47 @@
1 1  {{toc/}}
2 2  
3 3  
4 -= Digital Lab Exchange process =
4 += Firewall IP-Adresssen van TerraIndex =
5 5  
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:
6 +Onze IP-adressen:
8 8  
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"]]**__
8 +ingaand [[Web.terraindex.com>>url:http://Web.terraindex.com]]
38 38  137.116.199.164
39 39  
40 -(% element-id="1878" %)
41 -__**outbound [[Test.terraindex.com>>url:http://Test.terraindex.com||element-id="1877"]]**__
11 +ingaand [[Test.terraindex.com>>url:http://Test.terraindex.com]]
42 42  104.45.9.128
43 43  
44 -(% element-id="1875" %)
45 -__**Production outbound (http)**__
14 +Productie uitgaand
46 46  40.115.34.64
47 47  
48 -__**Production outbound (ftp):**__
49 -
50 -13.93.123.234
51 -
52 -(% element-id="1873" %)
53 -__**Test outbound (http, ftp)**__
17 +Test uitgaand
54 54  13.73.138.173
55 55  
56 -__**Test outbound (ftp: eurofins, eurofins spain):**__
57 -
58 -51.145.244.12
59 -
60 -(% element-id="1871" %)
61 -__**CD/CI outbound**__
20 +CD/CI uitgaand
62 62  40.114.238.16
63 63  
64 -(% element-id="1869" %)
65 -__**Office outbound**__
23 +--Kantoor VPN uitgaand  (niet meer in gebruik, was de oude OpenVPN)
24 +10.33.66.215--
25 +
26 +Kantoor uitgaand
66 66  213.124.115.132
67 67  
68 -(% element-id="1869" %)
69 -__**Deliveryservice**__
70 -Production: 13.93.123.234
71 -Test: 51.145.244.12
29 +--Oude Citrix uitgaand (citrix is ook verhuisd, dit is niet meer in gebruik)
30 +83.96.194.140--
72 72  
73 -(% element-id="1864" %)
74 -= (% element-id="1863" %)Labdelivery (menu-card) files Exchange(%%) =
75 75  
76 -(% element-id="1862" %)
77 -== (% element-id="1861" %)Solution/Design(%%) ==
33 += Labaanlever bestanden uitwisseling =
78 78  
35 +== Oplossing/Design ==
79 79  
80 -(% class="table-hover" element-id="1858" %)
81 -(% 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**
82 -(% 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), **(%%)
83 -(% element-id="1832" %)**WebservicePassword (string),**(%%)
84 -(% element-id="1830" %)**CustomerUsername (string)**|(% element-id="1829" %) |(% element-id="1827" %)
85 -(% 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" %)
86 -(% element-id="1812" %)|(% element-id="1811" %)3|(% element-id="1810" %) |(% element-id="1808" %)<=|(% element-id="1807" %)Sends back the list of customers with the lastChangedTimestamp|(% element-id="1806" %)ResultCode (),
37 +
38 +(% class="table-hover" %)
39 +|**Action**|**TerraIndex**| |**Laboratorium**|**Parameters/Message**|**Remarks**|**ResultCodes**
40 +|1|Sends a request to the function: GetCustomers().|=>| |**WebserviceUsername (string), **
41 +**WebservicePassword (string),**
42 +**CustomerUsername (string)**| |
43 +|2| | |Receives the request and check the customers this username and searches the dateLastChanged for this Customer.| | |
44 +|3| |<=|Sends back the list of customers with the lastChangedTimestamp|ResultCode (),
87 87  ErrorMessage (string),
88 88  List<customer> , Customer:
89 89  CustomerCode (string),
... ... @@ -90,7 +90,7 @@
90 90  CustomerName (string),
91 91  LabID (int),
92 92  LabName (string),
93 -ChangedTimeStamp (DateTime)|(% element-id="1798" %)We receive the dateTimestamp instead of sending it, so we always get the full list and we are also able to delete customercodes.|(% element-id="1797" %)1 = Success,
51 +ChangedTimeStamp (DateTime)|We receive the dateTimestamp instead of sending it, so we always get the full list and we are also able to delete customercodes.|1 = Success,
94 94  2 = GeneralError,
95 95  3 = WrongSIKBVersion,
96 96  4 = InvalidCredentials,
... ... @@ -100,32 +100,26 @@
100 100  8 = InvalidOrderId,
101 101  9 = OrderIdAlreadyApproved
102 102  10 = PDFNotAvailable
103 -(% 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" %)
104 -(% 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), **(%%)
105 -(% element-id="1766" %)**WebservicePassword (string),**(%%)
106 -(% element-id="1764" %)**CustomerUsername (string),**(%%)
61 +|4|Receives the list of Customers, and will check for each customer it needs to request a new/changed labdelivery file based on the ChangedTimestamp.| | | |If a customer is not longer in this list, TerraIndex can remove this customercode from the customer database.|
62 +|5|Sends a request to the function: GetProductList() if it has changed.|=>| |**WebserviceUsername (string), **
63 +**WebservicePassword (string),**
64 +**CustomerUsername (string),**
107 107  LabID (int),
108 108  CustomerCode (string),
109 109  LanguageCode (string, default 'nld' volgens ISO 639-3-codes),
110 110  SIKBVersion (string, default: '13.4.0'),
111 -UseZipStream/UseZip (bool, default: 'false')|(% element-id="1758" %)(% element-id="1757" %)
112 -(((
113 -(% element-id="1756" %)
69 +UseZipStream/UseZip (bool, default: 'false')|(((
114 114  We start with dutch, then extend with multiple languages, TerraIndex is in the lead to request multiple languages.
115 115  TerraIndex uses: 'fra', 'nld', 'eng', 'spa', 'deu', 'ita', 'por', 'dan'
116 116  
117 117  
118 -(% element-id="1752" %)
119 119  Besides SIKB 13.4.0, TerraIndex also supports 9.0.0/8.0.0 etc.
120 -
121 -(% element-id="1752" %)
122 -~==> nle Do you want to mention these old versions?
123 -)))|(% element-id="1751" %)
124 -(% 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" %)
125 -(% element-id="1736" %)|(% element-id="1735" %)7|(% element-id="1734" %) |(% element-id="1732" %)<=|(% element-id="1731" %)Sends back the SIKB file, as a Base64 encoded string, with or without using a zipstream.|(% element-id="1730" %)ResultCode (),
75 +)))|
76 +|6| | |Reveives a request to create a labdelivery file in a certain version of SIKB. It will generate the file.| | |
77 +|7| |<=|Sends back the SIKB file, as a Base64 encoded string, with or without using a zipstream.|ResultCode (),
126 126  ErrorMessage (string),
127 127  FileContent_Base64 (string),
128 -UseZipStream/UseZip (bool, default: 'false')|(% element-id="1726" %) |(% element-id="1724" %)1 = Success,
80 +UseZipStream/UseZip (bool, default: 'false')| |1 = Success,
129 129  2 = GeneralError,
130 130  3 = WrongSIKBVersion,
131 131  4 = InvalidCredentials,
... ... @@ -135,380 +135,330 @@
135 135  8 = InvalidOrderId,
136 136  9 = OrderIdAlreadyApproved
137 137  10 = PDFNotAvailable
138 -(% 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" %)
139 -(% 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" %)
140 -(% element-id="1688" %)|(% element-id="1687" %)10|(% element-id="1686" %)Process the LabDeliveryFiles|(% element-id="1685" %) |(% element-id="1683" %) |(% element-id="1681" %) |(% element-id="1679" %) |(% element-id="1677" %)
90 +|8|Receives the DeliveryFile and saves the file for import into customer database.| | | | |
91 +|9|Go back to step 5, for every Customer code, every language.| | | | |
92 +|10|Process the LabDeliveryFiles| | | | |
141 141  
142 -(% element-id="1675" %)
143 -== (% element-id="1674" %)Get Customers (POST)(%%) ==
144 144  
145 -(% element-id="1673" %)
146 -=== (% element-id="1672" %)Request example(%%) ===
95 +== Get Customers (POST) ==
147 147  
148 -(% element-id="1671" %)
149 -(% element-id="1669" %)|(% element-id="1668" %)(% element-id="1667" %)
150 -(((
151 -{{code language="C#"}}
97 +=== Request example ===
98 +
99 +|(((
152 152  public GetCustomersCall.Response GetCustomers(string WebserviceUsername, string WebservicePassword, string CustomerUsername)
153 -        {
154 -            GetCustomersCall.Response set = new GetCustomersCall.Response();
155 155  
156 -            try
157 -            {
158 -                var content = new FormUrlEncodedContent(new[]
159 -                {
160 -                    new KeyValuePair<string, string>("userName", WebserviceUsername),
161 -                    new KeyValuePair<string, string>("password", WebservicePassword),
162 -                    new KeyValuePair<string, string>("customerUsername", CustomerUsername),
163 -                });
102 + {
164 164  
165 -                HttpResponseMessage response = _HttpClient.PostAsync(_HttpClient.BaseAddress + "/GetCustomers", content).Result;
166 -                response.EnsureSuccessStatusCode();
167 -                string responseMessage = response.Content.ReadAsStringAsync().Result;
104 + GetCustomersCall.Response set = new GetCustomersCall.Response();
168 168  
169 -                if (string.IsNullOrEmpty(responseMessage))
170 -                {
171 -                    throw new Exception("Empty response from: [" + _HttpClient.BaseAddress + " / GetCustomers" + "]");
172 -                }
173 -                using (var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseMessage)))
174 -                {
175 -                    XmlSerializer serializer = new XmlSerializer(typeof(GetCustomersCall.Response));
176 -                    set = (GetCustomersCall.Response)serializer.Deserialize(ms);                 
177 -                }
178 -            }
179 -            catch (Exception ex)
180 -            {
181 -                #region handle exception
182 -                set.Status = new BusinessEntities.LabRestService.GetCustomersCall.ResponseStatus();
183 -                set.Status.StatusCode = ((int)ResultCodes.GeneralError).ToString();               
184 -                set.Status.ErrorMessage = "Exception occurred in GetCustomers (username: " + WebserviceUsername + ", password: " + WebservicePassword + ") with message: " + ex.Message;
185 -                ex.Data.Add("WebserviceUsername", WebserviceUsername);
186 -                ex.Data.Add("WebservicePassword", WebservicePassword);
187 -                ex.Data.Add("CustomerUsername", CustomerUsername);
188 -                ExceptionHandler.HandleException(ex);
189 -                #endregion
190 -            }
191 -            return set;
192 -        }
193 -{{/code}}
194 194  
195 -(% element-id="1566" %)
196 -
107 + try
108 +
109 + {
110 +
111 +
112 + var content = new FormUrlEncodedContent(new[]
113 +
114 + {
115 +
116 + new KeyValuePair<string, string>("userName", WebserviceUsername),
117 +
118 + new KeyValuePair<string, string>("password", WebservicePassword),
119 +
120 + new KeyValuePair<string, string>("customerUsername", CustomerUsername),
121 +
122 + });
123 +
124 +
125 + HttpResponseMessage response = _HttpClient.PostAsync(_HttpClient.BaseAddress + "/GetCustomers", content).Result;
126 +
127 + response.EnsureSuccessStatusCode();
128 +
129 + string responseMessage = response.Content.ReadAsStringAsync().Result;
130 +
131 +
132 + if (string.IsNullOrEmpty(responseMessage))
133 +
134 + {
135 +
136 + throw new Exception("Empty response from: [" + _HttpClient.BaseAddress + " / GetCustomers" + "]");
137 +
138 + }
139 +
140 + using (var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseMessage~)~)~)
141 +
142 + {
143 +
144 + XmlSerializer serializer = new XmlSerializer(typeof(GetCustomersCall.Response));
145 +
146 + set = (GetCustomersCall.Response)serializer.Deserialize(ms);                  
147 +
148 + }
149 +
150 +
151 + }
152 +
153 + catch (Exception ex)
154 +
155 + {
156 +
157 + #region handle exception
158 +
159 +
160 + set.Status = new BusinessEntities.LabRestService.GetCustomersCall.ResponseStatus();
161 +
162 + set.Status.StatusCode = ((int)ResultCodes.GeneralError).ToString();              
163 +
164 + set.Status.ErrorMessage = "Exception occurred in GetCustomers (username: " + WebserviceUsername + ", password: " + WebservicePassword + ") with message: " + ex.Message;
165 +
166 +
167 + ex.Data.Add("WebserviceUsername", WebserviceUsername);
168 +
169 + ex.Data.Add("WebservicePassword", WebservicePassword);
170 +
171 + ex.Data.Add("CustomerUsername", CustomerUsername);
172 +
173 +
174 + ExceptionHandler.HandleException(ex);
175 +
176 + #endregion
177 +
178 + }
179 +
180 +
181 + return set;
182 +
183 + }
197 197  )))
198 198  
199 -(% element-id="1564" %)
200 -(% element-id="1562" %)|(% element-id="1561" %)(% element-id="1560" %)
201 -(((
202 -(% element-id="1559" %)
186 +|(((
203 203  POST https:~/~/<URL>/GetCustomers HTTP/1.1
204 204  
205 -(% element-id="1558" %)
206 206  Content-Type: application/x-www-form-urlencoded
207 207  
208 -(% element-id="1557" %)
209 209  Host: 81.175.89.24
210 210  
211 -(% element-id="1556" %)
212 212  Content-Length: 115
213 213  
214 -(% element-id="1555" %)
215 215  Expect: 100-continue
216 216  
217 217  
218 -(% element-id="1552" %)
219 219  userName=<webservice_username>&password=<Webservice_password>&customerUsername=<customer_username or token>
220 220  )))
221 221  
222 -(% element-id="1551" %)
223 -=== (% element-id="1550" %)Response example(%%) ===
201 +=== Response example ===
224 224  
225 -(% element-id="1549" %)
226 -(% element-id="1547" %)|(% element-id="1546" %)(% element-id="1545" %)
227 -(((
228 -{{code language="XML"}}
203 +|(((
229 229  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
205 +
230 230  <Response><Customers>
231 -  <Customer LabId="1" LabName="Example Laboratorium" CustomerId="300" CustomerName="Adviesbureau De bodemkoning - Rotterdam" LastModifiedOnClient="2019-05-08T11:05:14.17+02:00" ></Customer>
232 -  <Customer LabId="1" LabName="Example Laboratorium" CustomerId="656" CustomerName="Adviesbureau De bodemkoning - Delft" LastModifiedOnClient="2019-04-19T13:20:10.123+02:00" ></Customer>
207 +
208 + <Customer LabId="1" LabName="Example Laboratorium" CustomerId="300" CustomerName="Adviesbureau De bodemkoning - Rotterdam" LastModifiedOnClient="2019-05-08T11:05:14.17+02:00" />
209 +
210 + <Customer LabId="1" LabName="Example Laboratorium" CustomerId="656" CustomerName="Adviesbureau De bodemkoning - Delft" LastModifiedOnClient="2019-04-19T13:20:10.123+02:00" />
211 +
233 233  </Customers>
213 +
234 234  <Status>
235 -    <StatusCode>1</StatusCode>
236 -    <StatusCodeDescription>OK</StatusCodeDescription>
237 -    <ErrorMessage></ErrorMessage>
215 +
216 + <StatusCode>1</StatusCode>
217 +
218 + <StatusCodeDescription>OK</StatusCodeDescription>
219 +
220 + <ErrorMessage></ErrorMessage>
221 +
238 238  </Status>
239 -</Response>
240 -{{/code}}
241 241  
242 -(% element-id="1492" %)
243 -
224 +</Response>
244 244  )))
245 245  
246 -(% element-id="1490" %)
247 -== (% element-id="1489" %)Get Products (POST)(%%) ==
248 248  
249 -(% element-id="1488" %)
250 -=== (% element-id="1487" %)Request example(%%) ===
228 +== Get Products (POST) ==
251 251  
252 -(% element-id="1486" %)
253 -(% element-id="1484" %)|(% element-id="1483" %)(% element-id="1482" %)
254 -(((
255 -(% element-id="1481" %)
230 +=== Request example ===
231 +
232 +|(((
256 256  public GetProductsCall.Response GetProductList(string WebserviceUsername, string WebservicePassword, string CustomerUsername, string customerid, int labid, string sikbVersion, string languageCode)
257 257  
258 -(% element-id="1480" %)
259 259   {
260 260  
261 261  
262 -(% element-id="1477" %)
263 263   GetProductsCall.Response set = new GetProductsCall.Response();
264 264  
265 265  
266 -(% element-id="1474" %)
267 267   try
268 268  
269 -(% element-id="1473" %)
270 270   {
271 271  
272 -(% element-id="1472" %)
273 273   bool useZipstream = true;
274 274  
275 -(% element-id="1471" %)
276 276   var content = new FormUrlEncodedContent(new[]
277 277  
278 -(% element-id="1470" %)
279 279   {
280 280  
281 -(% element-id="1469" %)
282 282   new KeyValuePair<string, string>("userName", WebserviceUsername),
283 283  
284 -(% element-id="1468" %)
285 285   new KeyValuePair<string, string>("password", WebservicePassword),
286 286  
287 -(% element-id="1467" %)
288 288   new KeyValuePair<string, string>("customerUsername", CustomerUsername),
289 289  
290 -(% element-id="1466" %)
291 291   new KeyValuePair<string, string>("languageCode", languageCode),
292 292  
293 -(% element-id="1465" %)
294 294   new KeyValuePair<string, string>("clientId", customerid),
295 295  
296 -(% element-id="1464" %)
297 297   new KeyValuePair<string, string>("sikbVersion", sikbVersion),
298 298  
299 -(% element-id="1463" %)
300 300   new KeyValuePair<string, string>("useZip", useZipstream.ToString() ),
301 301  
302 -(% element-id="1462" %)
303 303   });
304 304  
305 305  
306 -(% element-id="1459" %)
307 307   HttpResponseMessage response = _HttpClient.PostAsync(_HttpClient.BaseAddress + "/GetProducts", content).Result;
308 308  
309 -(% element-id="1458" %)
310 310   response.EnsureSuccessStatusCode();
311 311  
312 -(% element-id="1457" %)
313 313   string responseMessage = response.Content.ReadAsStringAsync().Result;
314 314  
315 315  
316 -(% element-id="1454" %)
317 317   if (string.IsNullOrEmpty(responseMessage))
318 318  
319 -(% element-id="1453" %)
320 320   {
321 321  
322 -(% element-id="1452" %)
323 323   throw new Exception("Empty response from: [" + _HttpClient.BaseAddress + " /GetProducts" + "]");
324 324  
325 -(% element-id="1451" %)
326 326   }
327 327  
328 -(% element-id="1450" %)
329 329   using (var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseMessage~)~)~)
330 330  
331 -(% element-id="1449" %)
332 332   {
333 333  
334 -(% element-id="1448" %)
335 335   XmlSerializer serializer = new XmlSerializer(typeof(GetProductsCall.Response));
336 336  
337 -(% element-id="1447" %)
338 338   set = (GetProductsCall.Response)serializer.Deserialize(ms);
339 339  
340 -(% element-id="1446" %)
341 341   }
342 342  
343 343  
344 -(% element-id="1443" %)
345 345   if (useZipstream && !string.IsNullOrEmpty(set.FileContent))
346 346  
347 -(% element-id="1442" %)
348 348   {
349 349  
350 -(% element-id="1441" %)
351 351   ~/~/convert from base64 string back to normal
352 352  
353 -(% element-id="1440" %)
354 354   ~/~/first check for real Base64, by checking there is no 'xml'  in it
355 355  
356 -(% element-id="1439" %)
357 357   if (!set.FileContent.Contains("<labaanlevering"))
358 358  
359 -(% element-id="1438" %)
360 360   {
361 361  
362 -(% element-id="1437" %)
363 363   set.FileContent = ZipStreamHelper.DecompressBase64StringToString(set.FileContent);
364 364  
365 -(% element-id="1436" %)
366 366   }
367 367  
368 -(% element-id="1435" %)
369 369   }
370 370  
371 371  
372 -(% element-id="1432" %)
373 373   }
374 374  
375 -(% element-id="1431" %)
376 376   catch (Exception ex)
377 377  
378 -(% element-id="1430" %)
379 379   {
380 380  
381 -(% element-id="1429" %)
382 382   #region handle exception
383 383  
384 384  
385 -(% element-id="1426" %)
386 386   set.Status = new BusinessEntities.LabRestService.GetProductsCall.ResponseStatus();
387 387  
388 -(% element-id="1425" %)
389 389   set.Status.StatusCode = ((int)ResultCodes.GeneralError).ToString();
390 390  
391 -(% element-id="1424" %)
392 392   set.Status.ErrorMessage = "Exception occurred in GetProducts (username: " + WebserviceUsername + ", password: " + WebservicePassword + ") with message: " + ex.Message;
393 393  
394 394  
395 -(% element-id="1421" %)
396 396   ex.Data.Add("WebserviceUsername", WebserviceUsername);
397 397  
398 -(% element-id="1420" %)
399 399   ex.Data.Add("WebservicePassword", WebservicePassword);
400 400  
401 -(% element-id="1419" %)
402 402   ex.Data.Add("CustomerUsername", CustomerUsername);
403 403  
404 -(% element-id="1418" %)
405 405   ex.Data.Add("sikbVersion", sikbVersion);
406 406  
407 -(% element-id="1417" %)
408 408   ex.Data.Add("customerid", customerid);
409 409  
410 -(% element-id="1416" %)
411 411   ex.Data.Add("languageCode", languageCode);
412 412  
413 413  
414 -(% element-id="1413" %)
415 415   ExceptionHandler.HandleException(ex);
416 416  
417 -(% element-id="1412" %)
418 418   #endregion
419 419  
420 -(% element-id="1411" %)
421 421   }
422 422  
423 423  
424 -(% element-id="1408" %)
425 425   return set;
426 426  
427 -(% element-id="1407" %)
428 428   }
429 429  )))
430 430  
431 -(% element-id="1406" %)
432 -(% element-id="1404" %)|(% element-id="1403" %)(% element-id="1402" %)
433 -(((
434 -(% element-id="1401" %)
354 +|(((
435 435  POST https:~/~/<URL>/GetProducts HTTP/1.1
436 436  
437 -(% element-id="1400" %)
438 438  Content-Type: application/x-www-form-urlencoded
439 439  
440 -(% element-id="1399" %)
441 441  Host: 81.175.89.24
442 442  
443 -(% element-id="1398" %)
444 444  Content-Length: 179
445 445  
446 -(% element-id="1397" %)
447 447  Expect: 100-continue
448 448  
449 449  
450 -(% element-id="1394" %)
451 451  userName=<webservice_username>&password=<Webservice_password>&customerUsername=<customer_username or token>&languageCode=nld&clientId=300&sikbVersion=13.5.0&useZip=True
452 452  )))
453 453  
454 -(% element-id="1393" %)
455 -=== (% element-id="1392" %)Response example(%%) ===
369 +=== Response example ===
456 456  
457 -(% element-id="1391" %)
458 -(% element-id="1389" %)|(% element-id="1388" %)(% element-id="1387" %)
459 -(((
460 -(% element-id="1386" %)
371 +|(((
461 461  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
462 462  
463 -(% element-id="1385" %)
464 464  <Response>
465 465  
466 -(% element-id="1384" %)
467 467  <FileContent> {SIKB FILE in ZIPSTREAM BASE64 format}</FileContent>
468 468  
469 -(% element-id="1383" %)
470 470  <Status>
471 471  
472 -(% element-id="1382" %)
473 473  <StatusCode>1</StatusCode>
474 474  
475 -(% element-id="1381" %)
476 476  <StatusCodeDescription>OK</StatusCodeDescription>
477 477  
478 -(% element-id="1380" %)
479 479  <ErrorMessage></ErrorMessage>
480 480  
481 -(% element-id="1379" %)
482 482  </Status></Response>
483 483  )))
484 484  
485 -(% element-id="1378" %)
486 -= (% element-id="1377" %)Useraccount Checkup.(%%) =
487 487  
488 -(% element-id="1374" %)
489 -== (% element-id="1373" %)Solution/Design(%%) ==
490 490  
491 -(% element-id="1372" %)
492 -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.
391 += Gebruikersaccount controleren. =
493 493  
494 -(% element-id="1371" %)
393 +
394 +== Oplossing/Design ==
395 +
396 +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.
397 +
495 495  WebserviceUsername (string),
496 496  WebservicePassword (string),
497 497  CustomerUsername (string)
498 498  
499 499  
500 -(% element-id="1366" %)
501 -Therefore we call a Webserice for ValidCredentials Check:
403 +Hiervoor maken we een Webserice voor ValidCredentials Check:
502 502  
503 503  
504 -(% class="table-hover" element-id="1363" %)
505 -(% 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**
506 -(% 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),
406 +(% class="table-hover" %)
407 +|**Action**|**TerraIndex**| |**Laboratorium**|**Parameters/Message**|**Remarks**|**ResultCodes**
408 +|1|Sends a request to the function: ValidCredentials().|=>| |WebserviceUsername (string),
507 507  WebservicePassword (string),
508 -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" %)
509 -(% 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" %)
510 -(% 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 (),
511 -ErrorMessage (string),|(% element-id="1313" %) |(% element-id="1311" %)1 = Success,
410 +CustomerUsername (string)|We want to skip the Password of the customer, and we use the WebserviceUsername + WebservicePassword for real authentication.|
411 +|2| | |Receives the request and checks the combination of WebserviceUsername and WebservicePassword is Ok. Then checks the CustomerUsername is valid.| | |
412 +|3| |<=|Sends back a Success of InvalidCredentials|ResultCode (),
413 +ErrorMessage (string),| |1 = Success,
512 512  2 = GeneralError,
513 513  3 = WrongSIKBVersion,
514 514  4 = InvalidCredentials,
... ... @@ -519,215 +519,149 @@
519 519  9 = OrderIdAlreadyApproved
520 520  10 = PDFNotAvailable
521 521  
522 -(% element-id="1301" %)
523 -== (% element-id="1300" %)Check ValidCredentials (POST)(%%) ==
424 +== Check ValidCredentials (POST) ==
524 524  
525 -(% element-id="1299" %)
526 -=== (% element-id="1298" %)Request example(%%) ===
426 +=== Request example ===
527 527  
528 -(% element-id="1297" %)
529 -(% element-id="1295" %)|(% element-id="1294" %)(% element-id="1293" %)
530 -(((
531 -(% element-id="1292" %)
428 +|(((
532 532  public ValidCredentialsCall.Response ValidCredentials(string WebserviceUsername, string WebservicePassword, string CustomerUsername, string customerid)
533 533  
534 -(% element-id="1291" %)
535 535   {
536 536  
537 -(% element-id="1290" %)
538 538   ValidCredentialsCall.Response set = new ValidCredentialsCall.Response();
539 539  
540 540  
541 -(% element-id="1287" %)
542 542   try
543 543  
544 -(% element-id="1286" %)
545 545   {
546 546  
547 547  
548 -(% element-id="1283" %)
549 549   var content = new FormUrlEncodedContent(new[]
550 550  
551 -(% element-id="1282" %)
552 552   {
553 553  
554 -(% element-id="1281" %)
555 555   new KeyValuePair<string, string>("userName", WebserviceUsername),
556 556  
557 -(% element-id="1280" %)
558 558   new KeyValuePair<string, string>("password", WebservicePassword),
559 559  
560 -(% element-id="1279" %)
561 561   ~/~/new KeyValuePair<string, string>("clientId", customerid),   ~/~/ Optional
562 562  
563 -(% element-id="1278" %)
564 564   new KeyValuePair<string, string>("customerUsername", CustomerUsername),
565 565  
566 -(% element-id="1277" %)
567 567   });
568 568  
569 569  
570 -(% element-id="1274" %)
571 571   HttpResponseMessage response = _HttpClient.PostAsync(_HttpClient.BaseAddress + "/ValidCredentials", content).Result;
572 572  
573 -(% element-id="1273" %)
574 574   response.EnsureSuccessStatusCode();
575 575  
576 -(% element-id="1272" %)
577 577   string responseMessage = response.Content.ReadAsStringAsync().Result;
578 578  
579 579  
580 -(% element-id="1269" %)
581 581   if (string.IsNullOrEmpty(responseMessage))
582 582  
583 -(% element-id="1268" %)
584 584   {
585 585  
586 -(% element-id="1267" %)
587 587   throw new Exception("Empty response from: [" + _HttpClient.BaseAddress + " / ValidCredentials" + "]");
588 588  
589 -(% element-id="1266" %)
590 590   }
591 591  
592 -(% element-id="1265" %)
593 593   using (var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseMessage~)~)~)
594 594  
595 -(% element-id="1264" %)
596 596   {
597 597  
598 -(% element-id="1263" %)
599 599   XmlSerializer serializer = new XmlSerializer(typeof(ValidCredentialsCall.Response));
600 600  
601 -(% element-id="1262" %)
602 602   set = (ValidCredentialsCall.Response)serializer.Deserialize(ms);
603 603  
604 604  
605 -(% element-id="1259" %)
606 606   return set;
607 607  
608 -(% element-id="1258" %)
609 609   }
610 610  
611 611  
612 -(% element-id="1255" %)
613 613   }
614 614  
615 -(% element-id="1254" %)
616 616   catch (Exception ex)
617 617  
618 -(% element-id="1253" %)
619 619   {
620 620  
621 -(% element-id="1252" %)
622 622   #region handle exception
623 623  
624 624  
625 -(% element-id="1249" %)
626 626   set.Status = new BusinessEntities.LabRestService.ValidCredentialsCall.ResponseStatus();
627 627  
628 -(% element-id="1248" %)
629 629   set.Status.StatusCode = ((int)ResultCodes.GeneralError).ToString();
630 630  
631 -(% element-id="1247" %)
632 632   set.Status.ErrorMessage = "Exception occurred in GetValidCredentials (username: " + WebserviceUsername + ", with message: " + ex.Message;
633 633  
634 634  
635 -(% element-id="1244" %)
636 636   ex.Data.Add("WebserviceUsername", WebserviceUsername);
637 637  
638 -(% element-id="1243" %)
639 639   ex.Data.Add("WebservicePassword", WebservicePassword);
640 640  
641 -(% element-id="1242" %)
642 642   ex.Data.Add("CustomerUsername", CustomerUsername);
643 643  
644 644  
645 -(% element-id="1239" %)
646 646   ExceptionHandler.HandleException(ex);
647 647  
648 -(% element-id="1238" %)
649 649   #endregion
650 650  
651 -(% element-id="1237" %)
652 652   }
653 653  
654 654  
655 -(% element-id="1234" %)
656 656   return set;
657 657  
658 -(% element-id="1233" %)
659 659   }
660 660  )))
661 661  
662 -(% element-id="1232" %)
663 -(% element-id="1230" %)|(% element-id="1229" %)(% element-id="1228" %)
664 -(((
665 -(% element-id="1227" %)
520 +|(((
666 666  POST https:~/~/<URL>/ValidCredentials HTTP/1.1
667 667  
668 -(% element-id="1226" %)
669 669  Content-Type: application/x-www-form-urlencoded
670 670  
671 -(% element-id="1225" %)
672 672  Host: 81.175.89.24
673 673  
674 -(% element-id="1224" %)
675 675  Content-Length: 125
676 676  
677 -(% element-id="1223" %)
678 678  Expect: 100-continue
679 679  
680 680  
681 -(% element-id="1220" %)
682 682  userName=<webservice_username>&password=<Webservice_password>&clientId=<optional otherwise empty>&customerUsername=<customer_username or token>
683 683  )))
684 684  
685 -(% element-id="1219" %)
686 -=== (% element-id="1218" %)Response example(%%) ===
535 +=== Response example ===
687 687  
688 -(% element-id="1217" %)
689 -(% element-id="1215" %)|(% element-id="1214" %)(% element-id="1213" %)
690 -(((
691 -(% element-id="1212" %)
537 +|(((
692 692  <?xml version="1.0" encoding="UTF-8" standalone="no"?><Response>
693 693  
694 -(% element-id="1211" %)
695 695  <Status>
696 696  
697 -(% element-id="1210" %)
698 698  <StatusCode>1</StatusCode>
699 699  
700 -(% element-id="1209" %)
701 701  <StatusCodeDescription>OK</StatusCodeDescription>
702 702  
703 -(% element-id="1208" %)
704 704  <ErrorMessage></ErrorMessage>
705 705  
706 -(% element-id="1207" %)
707 707  </Status>
708 708  
709 -(% element-id="1206" %)
710 710  </Response>
711 711  )))
712 712  
713 -(% element-id="1205" %)
714 -= (% element-id="1204" %)Labassignment request delivery(POST)(%%) =
553 += Opdrachten versturen (POST) =
715 715  
716 -(% element-id="1203" %)
717 -== (% element-id="1202" %)Solution/Design(%%) ==
555 +== Oplossing/Design ==
718 718  
719 -(% element-id="1201" %)
720 -For this we create a Webservice for CreateOrder to create the order in the lab system.
721 -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.
722 -Depending on the user's choice at the laboratory, to support this or not, TerraIndex calls the ApproveOrder or the CancelOrder.
557 +Hiervoor maken we een Webserice voor CreateOrder om de opdracht aan te maken.
558 +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.
559 +Afhankelijk van de keuze van de gebruiker bij het laboratorium, roept TerraIndex de ApproveOrder of de CancelOrder aan.
723 723  
724 -(% element-id="0" %)
725 -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.
561 +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.
726 726  
727 727  
728 -(% class="table-hover" element-id="1195" %)
729 -(% 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**
730 -(% 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),
564 +(% class="table-hover" %)
565 +|**Action**|**TerraIndex**| |**Laboratorium**|**Parameters/Message**|**Remarks**|**ResultCodes**
566 +|1|Sends a request to the function: CreateOrder().|=>| |WebserviceUsername (string),
731 731  WebservicePassword (string),
732 732  CustomerUsername (string),
733 733  FileContent_Base64 (string),
... ... @@ -734,22 +734,22 @@
734 734  UseZipStream/UseZip (bool, default: 'false'),
735 735  CustomerCode (string),
736 736  SIKBVersion (string, default: '13.4.0'),
737 -needsApprovalIsSupported (bool)|(% element-id="1164" %)SIKB Version included, so labs can quickly check the version.
573 +needsApprovalIsSupported (bool)|SIKB Version included, so labs can quickly check the version.
738 738  Besides SIKB 13.4.0, TerraIndex also supports 9.0.0.
739 739  \\Before sending the SIKB, validate to the XSD!
740 740  And to the XSLT?
741 741  \\needsApprovalIsSupported = false; means we dont get PDF with offerte. This will make is faster.
742 -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" %)
743 -(% 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" %)
744 -(% 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.
745 -Otherwise we use the idanlmons unique ID.|(% colspan="1" element-id="1130" %)
746 -(% 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" %)
747 -(% 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 (),
578 +needsApprovalIsSupported = true; means lab will check the user setting to send a PDF Offerte back or not. (If the lab can support this.)|
579 +|2| | |Receives the request and checks the credentials.| | |
580 +|(% 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.
581 +Otherwise we use the idanlmons unique ID.|(% colspan="1" %)
582 +|(% 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" %)
583 +|4| |<=|Sends back a Success with the new OrderId|ResultCode (),
748 748  ErrorMessage (string),
749 749  OrderId (string),
750 750  NeedsApprove (bool),
751 751  FileContent_Base64 (string),
752 -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,
588 +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,
753 753  2 = GeneralError,
754 754  3 = WrongSIKBVersion,
755 755  4 = InvalidCredentials,
... ... @@ -759,10 +759,8 @@
759 759  8 = InvalidOrderId,
760 760  9 = OrderIdAlreadyApproved
761 761  10 = PDFNotAvailable
762 -(% element-id="1091" %)|(% colspan="1" element-id="1090" %)6|(% colspan="1" element-id="1089" %)Receives the OrderId, and saves it.
763 - |(% colspan="1" element-id="1086" %) |(% colspan="1" element-id="1084" %) |(% colspan="1" element-id="1082" %) |(% colspan="1" element-id="1080" %)(% element-id="1079" %)
764 -(((
765 -(% element-id="1078" %)
598 +|(% colspan="1" %)6|(% colspan="1" %)Receives the OrderId, and saves it.
599 + |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)(((
766 766  Default for now laboratorium will send:
767 767  NeedsApprove = False,
768 768  PDF = Empty,
... ... @@ -769,25 +769,23 @@
769 769  Zipstream = False,
770 770  
771 771  
772 -(% element-id="1072" %)
773 773  In the future, do something with the PDF and show the PDF to users to Approve or Cancel.
774 774  This will be done by; NeedsApprove = true.
775 775  \\If NeedsApprove is False, the order is Processed and can't be changed in TI. Like it is now.
776 776  
777 -(% element-id="1068" %)
778 778  
779 -)))|(% colspan="1" element-id="1066" %)
780 -(% 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" %)
781 -(% 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" %)
782 -(% 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" %)
783 -(% 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),
611 +)))|(% colspan="1" %)
612 +|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
613 +|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
614 +|(% colspan="1" %) |(% colspan="1" %)**IN THE FUTURE: APPROVEORDER**|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
615 +|(% colspan="1" %)7|(% colspan="1" %)Sends a request to the function: ApproveOrder().|(% colspan="1" %)=>|(% colspan="1" %) |(% colspan="1" %)WebserviceUsername (string),
784 784  WebservicePassword (string),
785 785  CustomerUsername (string),
786 -OrderId (string)|(% colspan="1" element-id="1009" %) |(% colspan="1" element-id="1007" %)
787 -(% 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" %)
788 -(% 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 (),
618 +OrderId (string)|(% colspan="1" %) |(% colspan="1" %)
619 +|(% 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" %)
620 +|(% colspan="1" %)9|(% colspan="1" %) |(% colspan="1" %)<=|(% colspan="1" %)Sends back a Success with the new CertificateNr|(% colspan="1" %)ResultCode (),
789 789  ErrorMessage (string),
790 -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,
622 +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,
791 791  2 = GeneralError,
792 792  3 = WrongSIKBVersion,
793 793  4 = InvalidCredentials,
... ... @@ -797,16 +797,16 @@
797 797  8 = InvalidOrderId,
798 798  9 = OrderIdAlreadyApproved
799 799  10 = PDFNotAvailable
800 -(% 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" %)
801 -(% 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" %)
802 -(% 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" %)
803 -(% 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),
632 +|(% colspan="1" %)10|(% colspan="1" %)Receives the CerificateNr and saves it.|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
633 +|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
634 +|(% colspan="1" %) |(% colspan="1" %)**IN THE FUTURE: CANCELORDER**|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
635 +|7|Sends a request to the function: CancelOrder().|=>| |WebserviceUsername (string),
804 804  WebservicePassword (string),
805 805  CustomerUsername (string),
806 -OrderId (string)|(% element-id="919" %) |(% element-id="917" %)
807 -(% 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" %)
808 -(% element-id="902" %)|(% element-id="901" %)9|(% element-id="900" %) |(% element-id="898" %)<=|(% element-id="897" %)Sends back a Success |(% element-id="896" %)ResultCode (),
809 -ErrorMessage (string)|(% element-id="894" %) |(% element-id="892" %)1 = Success,
638 +OrderId (string)| |
639 +|8| | |Receives the cancel and checks the credentials and the OrderId.| | |
640 +|9| |<=|Sends back a Success |ResultCode (),
641 +ErrorMessage (string)| |1 = Success,
810 810  2 = GeneralError,
811 811  3 = WrongSIKBVersion,
812 812  4 = InvalidCredentials,
... ... @@ -816,475 +816,325 @@
816 816  8 = InvalidOrderId,
817 817  9 = OrderIdAlreadyApproved
818 818  10 = PDFNotAvailable
819 -(% 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" %)
820 -(% 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" %)
651 +|10|Removes the OrderId and the IsSend to False| | | |If OrderIsAleadyApproved, set the values to Approved and keep the OrderId and IsSend.|
652 +|(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %) |(% colspan="1" %)
821 821  
822 -(% element-id="855" %)
823 -== (% element-id="854" %)Create Order(%%) ==
654 +== Create Order ==
824 824  
825 -(% element-id="853" %)
826 -=== (% element-id="852" %)Request example(%%) ===
656 +=== Request example ===
827 827  
828 -(% element-id="851" %)
829 -(% element-id="849" %)|(% element-id="848" %)(% element-id="847" %)
830 -(((
831 -(% element-id="846" %)
658 +|(((
832 832  public CreateOrderResponse.Response SendLabAssignment(string WebserviceUsername, string WebservicePassword, string CustomerUsername, string customerid, string sikbVersion, string assignmentXML, string languageCode, bool needsApprovalIsSupported = false)
833 833  
834 -(% element-id="845" %)
835 835   {
836 836  
837 -(% element-id="844" %)
838 838   CreateOrderResponse.Response set = new CreateOrderResponse.Response();
839 839  
840 840  
841 -(% element-id="841" %)
842 842   try
843 843  
844 -(% element-id="840" %)
845 845   {
846 846  
847 -(% element-id="839" %)
848 848   bool useZipstream = true;
849 849  
850 850  
851 -(% element-id="836" %)
852 852   MultipartFormDataContent content = new MultipartFormDataContent();
853 853  
854 854  
855 -(% element-id="833" %)
856 856   ~/~/Add Formdata
857 857  
858 -(% element-id="832" %)
859 859   var formDataDictionary = new[]
860 860  
861 -(% element-id="831" %)
862 862   {
863 863  
864 -(% element-id="830" %)
865 865   new KeyValuePair<string, string>("userName", WebserviceUsername),
866 866  
867 -(% element-id="829" %)
868 868   new KeyValuePair<string, string>("password", WebservicePassword),
869 869  
870 -(% element-id="828" %)
871 871   new KeyValuePair<string, string>("customerUserName", CustomerUsername),
872 872  
873 -(% element-id="827" %)
874 874   new KeyValuePair<string, string>("clientId", customerid),
875 875  
876 -(% element-id="826" %)
877 877   new KeyValuePair<string, string>("sikbVersion", sikbVersion),
878 878  
879 -(% element-id="825" %)
880 880   new KeyValuePair<string, string>("languageCode", languageCode),
881 881  
882 -(% element-id="824" %)
883 883   new KeyValuePair<string, string>("useZip", useZipstream.ToString() ),
884 884  
885 -(% element-id="823" %)
886 886   new KeyValuePair<string, string>("needsApprovalIsSupported", needsApprovalIsSupported.ToString() ),
887 887  
888 -(% element-id="822" %)
889 889   ~/~/new KeyValuePair<string, string>("orderXml", ZipStreamHelper.CompressToBase64String(assignmentXML)),
890 890  
891 -(% element-id="821" %)
892 892   ~/~/new KeyValuePair<string, string>("orderXml", assignmentXML),
893 893  
894 -(% element-id="820" %)
895 895   };              
896 896  
897 -(% element-id="819" %)
898 898   foreach (var item in formDataDictionary)
899 899  
900 -(% element-id="818" %)
901 901   {
902 902  
903 -(% element-id="817" %)
904 904   content.Add(new StringContent(item.Value), $"\"{item.Key}\"");
905 905  
906 -(% element-id="816" %)
907 907   }
908 908  
909 909  
910 -(% element-id="813" %)
911 911   string filexml = string.Empty;
912 912  
913 -(% element-id="812" %)
914 914   if (useZipstream)
915 915  
916 -(% element-id="811" %)
917 917   {
918 918  
919 -(% element-id="810" %)
920 920   filexml = ZipStreamHelper.CompressToBase64String(assignmentXML);
921 921  
922 -(% element-id="809" %)
923 923   }
924 924  
925 -(% element-id="808" %)
926 926   else
927 927  
928 -(% element-id="807" %)
929 929   {
930 930  
931 -(% element-id="806" %)
932 932   filexml = assignmentXML;
933 933  
934 -(% element-id="805" %)
935 935   }
936 936  
937 937  
938 -(% element-id="802" %)
939 939   ~/~/Add filecontent
940 940  
941 -(% element-id="801" %)
942 942   var fileContent = new ByteArrayContent(ZipStreamHelper.stringToByteArray(filexml));
943 943  
944 -(% element-id="800" %)
945 945   fileContent.Headers.ContentDisposition =
946 946  
947 -(% element-id="799" %)
948 948   new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data") ~/~/<- 'form-data' instead of 'attachment'
949 949  
950 -(% element-id="798" %)
951 951   {
952 952  
953 -(% element-id="797" %)
954 954   Name = "\"orderXml\"", ~/~/ \" is needed so the message contains the quotes, wihtout it will fail
955 955  
956 -(% element-id="796" %)
957 957   FileName = "\"VivaTerraIndexAssignment.xml\""
958 958  
959 -(% element-id="795" %)
960 960   };
961 961  
962 -(% element-id="794" %)
963 963   fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/xml");              
964 964  
965 -(% element-id="793" %)
966 966   content.Add(fileContent);
967 967  
968 968  
969 -(% element-id="790" %)
970 970   ~/~/Start sending
971 971  
972 972  
973 -(% element-id="787" %)
974 974   HttpResponseMessage response = _HttpClient.PostAsync(_HttpClient.BaseAddress + "/CreateOrder", content).Result;
975 975  
976 -(% element-id="786" %)
977 977   response.EnsureSuccessStatusCode();
978 978  
979 -(% element-id="785" %)
980 980   string responseMessage = response.Content.ReadAsStringAsync().Result;
981 981  
982 982  
983 -(% element-id="782" %)
984 984   if (string.IsNullOrEmpty(responseMessage))
985 985  
986 -(% element-id="781" %)
987 987   {
988 988  
989 -(% element-id="780" %)
990 990   throw new Exception("Empty response from: [" + _HttpClient.BaseAddress + " /CreateOrder" + "]");
991 991  
992 -(% element-id="779" %)
993 993   }
994 994  
995 -(% element-id="778" %)
996 996   using (var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseMessage~)~)~)
997 997  
998 -(% element-id="777" %)
999 999   {
1000 1000  
1001 -(% element-id="776" %)
1002 1002   XmlSerializer serializer = new XmlSerializer(typeof(CreateOrderResponse.Response));
1003 1003  
1004 -(% element-id="775" %)
1005 1005   set = (CreateOrderResponse.Response)serializer.Deserialize(ms);
1006 1006  
1007 -(% element-id="774" %)
1008 1008   }
1009 1009  
1010 1010  
1011 -(% element-id="771" %)
1012 1012   ~/~/Can contain a PDf with price information
1013 1013  
1014 -(% element-id="770" %)
1015 1015   if (set.UseZip && !string.IsNullOrEmpty(set.FileContent))
1016 1016  
1017 -(% element-id="769" %)
1018 1018   {
1019 1019  
1020 -(% element-id="768" %)
1021 1021   ~/~/convert from base64 string back to normal
1022 1022  
1023 -(% element-id="767" %)
1024 1024   set.FileContent = ZipStreamHelper.DecompressBase64StringToString(set.FileContent);                  
1025 1025  
1026 -(% element-id="766" %)
1027 1027   }
1028 1028  
1029 1029  
1030 -(% element-id="763" %)
1031 1031   }
1032 1032  
1033 -(% element-id="762" %)
1034 1034   catch (Exception ex)
1035 1035  
1036 -(% element-id="761" %)
1037 1037   {
1038 1038  
1039 -(% element-id="760" %)
1040 1040   #region handle exception
1041 1041  
1042 1042  
1043 -(% element-id="757" %)
1044 1044   set.Status = new BusinessEntities.LabRestService.CreateOrderResponse.ResponseStatus();
1045 1045  
1046 -(% element-id="756" %)
1047 1047   set.Status.StatusCode = ((int)ResultCodes.GeneralError).ToString();
1048 1048  
1049 -(% element-id="755" %)
1050 1050   set.Status.ErrorMessage = "Exception occurred in CreateOrder (username: " + WebserviceUsername + ") with message: " + ex.Message;
1051 1051  
1052 1052  
1053 -(% element-id="752" %)
1054 1054   ex.Data.Add("WebserviceUsername", WebserviceUsername);
1055 1055  
1056 -(% element-id="751" %)
1057 1057   ex.Data.Add("WebservicePassword", WebservicePassword);
1058 1058  
1059 -(% element-id="750" %)
1060 1060   ex.Data.Add("CustomerUsername", CustomerUsername);
1061 1061  
1062 -(% element-id="749" %)
1063 1063   ex.Data.Add("sikbVersion", sikbVersion);
1064 1064  
1065 -(% element-id="748" %)
1066 1066   ex.Data.Add("customerid", customerid);
1067 1067  
1068 1068  
1069 -(% element-id="745" %)
1070 1070   ExceptionHandler.HandleException(ex);
1071 1071  
1072 -(% element-id="744" %)
1073 1073   #endregion
1074 1074  
1075 -(% element-id="743" %)
1076 1076   }
1077 1077  
1078 1078  
1079 -(% element-id="740" %)
1080 1080   return set;
1081 1081  
1082 -(% element-id="739" %)
1083 1083   }
1084 1084  )))
1085 1085  
1086 -(% element-id="738" %)
1087 -(% element-id="736" %)|(% element-id="735" %)(% element-id="734" %)
1088 -(((
1089 -(% element-id="733" %)
834 +|(((
1090 1090  POST https:~/~/<URL>/CreateOrder HTTP/1.1
1091 1091  
1092 -(% element-id="732" %)
1093 1093  Content-Type: multipart/form-data; boundary="28a3e130-70c9-4a1a-b544-a802a1ade6ca"
1094 1094  
1095 -(% element-id="731" %)
1096 1096  Host: 81.175.89.24
1097 1097  
1098 -(% element-id="730" %)
1099 1099  Content-Length: 5010
1100 1100  
1101 -(% element-id="729" %)
1102 1102  Expect: 100-continue
1103 1103  
1104 1104  
1105 -(% element-id="726" %)
1106 1106  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
1107 1107  
1108 -(% element-id="725" %)
1109 1109  Content-Type: text/plain; charset=utf-8
1110 1110  
1111 -(% element-id="724" %)
1112 1112  Content-Disposition: form-data; name="userName"
1113 1113  
1114 1114  
1115 -(% element-id="721" %)
1116 1116  <Webservice_Username>
1117 1117  
1118 -(% element-id="720" %)
1119 1119  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
1120 1120  
1121 -(% element-id="719" %)
1122 1122  Content-Type: text/plain; charset=utf-8
1123 1123  
1124 -(% element-id="718" %)
1125 1125  Content-Disposition: form-data; name="password"
1126 1126  
1127 1127  
1128 -(% element-id="715" %)
1129 1129  <Webservice_Password>
1130 1130  
1131 -(% element-id="714" %)
1132 1132  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
1133 1133  
1134 -(% element-id="713" %)
1135 1135  Content-Type: text/plain; charset=utf-8
1136 1136  
1137 -(% element-id="712" %)
1138 1138  Content-Disposition: form-data; name="customerUserName"
1139 1139  
1140 1140  
1141 -(% element-id="709" %)
1142 1142  <Customer_Username or token>
1143 1143  
1144 -(% element-id="708" %)
1145 1145  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
1146 1146  
1147 -(% element-id="707" %)
1148 1148  Content-Type: text/plain; charset=utf-8
1149 1149  
1150 -(% element-id="706" %)
1151 1151  Content-Disposition: form-data; name="clientId"
1152 1152  
1153 1153  
1154 -(% element-id="703" %)
1155 1155  300
1156 1156  
1157 -(% element-id="702" %)
1158 1158  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
1159 1159  
1160 -(% element-id="701" %)
1161 1161  Content-Type: text/plain; charset=utf-8
1162 1162  
1163 -(% element-id="700" %)
1164 1164  Content-Disposition: form-data; name="sikbVersion"
1165 1165  
1166 1166  
1167 -(% element-id="697" %)
1168 1168  13.4.0
1169 1169  
1170 -(% element-id="696" %)
1171 1171  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
1172 1172  
1173 -(% element-id="695" %)
1174 1174  Content-Type: text/plain; charset=utf-8
1175 1175  
1176 -(% element-id="694" %)
1177 1177  Content-Disposition: form-data; name="languageCode"
1178 1178  
1179 1179  
1180 -(% element-id="691" %)
1181 1181  nld
1182 1182  
1183 -(% element-id="690" %)
1184 1184  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
1185 1185  
1186 -(% element-id="689" %)
1187 1187  Content-Type: text/plain; charset=utf-8
1188 1188  
1189 -(% element-id="688" %)
1190 1190  Content-Disposition: form-data; name="useZip"
1191 1191  
1192 1192  
1193 -(% element-id="685" %)
1194 1194  True
1195 1195  
1196 -(% element-id="684" %)
1197 1197  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
1198 1198  
1199 -(% element-id="683" %)
1200 1200  Content-Type: text/plain; charset=utf-8
1201 1201  
1202 -(% element-id="682" %)
1203 1203  Content-Disposition: form-data; name="needsApprovalIsSupported"
1204 1204  
1205 1205  
1206 -(% element-id="679" %)
1207 1207  False
1208 1208  
1209 -(% element-id="678" %)
1210 1210  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca
1211 1211  
1212 -(% element-id="677" %)
1213 1213  Content-Disposition: form-data; name="orderXml"; filename="VivaTerraIndexAssignment.xml"
1214 1214  
1215 -(% element-id="676" %)
1216 1216  Content-Type: application/xml
1217 1217  
1218 1218  
1219 -(% element-id="673" %)
1220 1220  <SIKB File in Zip stream Base64  encoding>
1221 1221  
1222 -(% element-id="672" %)
1223 1223  ~-~-28a3e130-70c9-4a1a-b544-a802a1ade6ca~-~-
1224 1224  )))
1225 1225  
1226 -(% element-id="671" %)
1227 -=== (% element-id="670" %)Response example(%%) ===
930 +=== Response example ===
1228 1228  
1229 -(% element-id="669" %)
1230 -(% element-id="667" %)|(% element-id="666" %)(% element-id="665" %)
1231 -(((
1232 -(% element-id="664" %)
932 +|(((
1233 1233  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
1234 1234  
1235 -(% element-id="663" %)
1236 1236  <Response>
1237 1237  
1238 -(% element-id="662" %)
1239 1239  <OrderId>7113828</OrderId>
1240 1240  
1241 -(% element-id="661" %)
1242 1242  <NeedsApproval>True</NeedsApproval>
1243 1243  
1244 -(% element-id="660" %)
1245 1245  <FileContent></FileContent>
1246 1246  
1247 -(% element-id="659" %)
1248 1248  <Status>
1249 1249  
1250 -(% element-id="658" %)
1251 1251   <StatusCode>1</StatusCode>
1252 1252  
1253 -(% element-id="657" %)
1254 1254   <StatusCodeDescription>OK</StatusCodeDescription>
1255 1255  
1256 -(% element-id="656" %)
1257 1257   <ErrorMessage></ErrorMessage>
1258 1258  
1259 -(% element-id="655" %)
1260 1260  </Status></Response>
1261 1261  )))
1262 1262  
1263 -(% element-id="654" %)
1264 -= (% element-id="653" %)Get Order status and Results XML and with PDF(%%) =
1265 1265  
1266 -(% element-id="652" %)
1267 -== (% element-id="651" %)Solution/Design(%%) ==
1268 1268  
1269 -(% element-id="650" %)
1270 -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.
956 += Get Order status and Results =
1271 1271  
958 +== Oplossing/Design ==
1272 1272  
1273 -(% class="box infomessage" element-id="650" %)
1274 -(((
1275 -**Order status** we support as minimal:
1276 -3 = Reportnumber is known, no results yet, but it's the official report certificate number. This is optional to send.
1277 -4 = Conceptual, temporary results avaiable, but not final yet. This is optional to send.
1278 -5 = Final results are available. This is required to send.
1279 -)))
960 +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.
961 +
1280 1280  
1281 -(% class="table-hover" element-id="647" %)
1282 -(% 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
1283 -(% 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), 
963 +(% class="table-hover" %)
964 +|Action|TerraIndex| |Laboratorium|Parameters/Message|Remarks|ResultCodes
965 +|1|Sends a request to the function: GetCustomers().|=>| |WebserviceUsername (string), 
1284 1284  WebservicePassword (string),
1285 -CustomerUsername (string)|(% element-id="627" %)We want to skip the Password of the customer, and we introduce the WebserviceUsername + WebservicePassword.|(% element-id="626" %)
1286 -(% 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" %)
1287 -(% 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 (),
967 +CustomerUsername (string)|We want to skip the Password of the customer, and we introduce the WebserviceUsername + WebservicePassword.|
968 +|2| | |Receives the request and check the customers this username and searches the dateLastChanged for this Customer.| | |
969 +|3| |<=|Sends back the list of customers with the lastChangedTimestamp|ResultCode (),
1288 1288  ErrorMessage (string),
1289 1289  List<customer> , Customer:
1290 1290  CustomerCode (string),
... ... @@ -1291,7 +1291,7 @@
1291 1291  CustomerName (string),
1292 1292  LabID (int),
1293 1293  LabName (string),
1294 -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,
976 +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,
1295 1295  2 = GeneralError,
1296 1296  3 = WrongSIKBVersion,
1297 1297  4 = InvalidCredentials,
... ... @@ -1301,15 +1301,15 @@
1301 1301  8 = InvalidOrderId,
1302 1302  9 = OrderIdAlreadyApproved
1303 1303  10 = PDFNotAvailable
1304 -(% 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" %)
1305 -(% 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.
1306 -Function: GetOrderStatuses()|=(% element-id="569" %)>|(% element-id="568" %) |(% element-id="566" %)WebserviceUsername (string), 
986 +|4|Receives the list of Customers. Read the Timestamp this Customer is last checked for Results/Statuses.| | | | |
987 +|5|Send for each Customer a  call to retreive all orders statuses changes since a certain timestamp.
988 +Function: GetOrderStatuses()|=>| |WebserviceUsername (string), 
1307 1307  WebservicePassword (string),
1308 1308  CustomerUsername (string),
1309 1309  CustomerCode (string),
1310 -LastCheckedTimestamp (DateTime)|(% element-id="561" %)TerraIndex keeps track of the last check timestamp for each license.|(% element-id="560" %)
1311 -(% 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" %)
1312 -(% 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 (),
992 +LastCheckedTimestamp (DateTime)|TerraIndex keeps track of the last check timestamp for each license.|
993 +|6| | |Receives the request and check the orders that are changed since the timestamp for this Customer.| | |
994 +|7| |<=|Sends back the list of orders with the status and lastChangedTimestamp|ResultCode (),
1313 1313  ErrorMessage (string),
1314 1314  OrderID (string),
1315 1315  LabassignmentGUID (GUID),
... ... @@ -1316,10 +1316,10 @@
1316 1316  CertificateNumber (string)
1317 1317  OrderStatusSIKB (int),
1318 1318  Delayed (boolean),
1319 -ExpectedTimeStamp (DateTime),|(% element-id="531" %)OrderStatusSIKB is the SIKB Labassignment status.
1001 +ExpectedTimeStamp (DateTime),|OrderStatusSIKB is the SIKB Labassignment status.
1320 1320  \\Delayed is a boolean to tell the customer a order will be later ready then expected. The ExpectedTimestamp.
1321 1321  If Delayed for the firsttime, TerraIndex can send a notification to the users and show a different layout.
1322 -\\LabassignmentGUID is filled to support also Labassignments that are not from TerraIndex Ordered.|(% element-id="525" %)1 = Success,
1004 +\\LabassignmentGUID is filled to support also Labassignments that are not from TerraIndex Ordered.|1 = Success,
1323 1323  2 = GeneralError,
1324 1324  3 = WrongSIKBVersion,
1325 1325  4 = InvalidCredentials,
... ... @@ -1329,22 +1329,22 @@
1329 1329  8 = InvalidOrderId,
1330 1330  9 = OrderIdAlreadyApproved
1331 1331  10 = PDFNotAvailable
1332 -(% element-id="515" %)|(% element-id="514" %)8|(% element-id="513" %)Receives the list of Orders with status.
1333 -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" %)
1334 -(% element-id="502" %)|(% element-id="501" %)9|(% element-id="500" %)Send for each Order a call to retreive all results.
1335 -Function: GetOrderResults()|=(% element-id="498" %)>|(% element-id="497" %) |(% element-id="495" %)WebserviceUsername (string), 
1014 +|8|Receives the list of Orders with status.
1015 +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.|
1016 +|9|Send for each Order a call to retreive all results.
1017 +Function: GetOrderResults()|=>| |WebserviceUsername (string), 
1336 1336  WebservicePassword (string),
1337 1337  CustomerUsername (string),
1338 1338  CustomerCode (string),
1339 1339  OrderID (string),
1340 -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" %)
1341 -(% 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" %)
1342 -(% 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 (),
1022 +SIKBVersion (string, default: '13.4.0')|Besides SIKB 13.4.0, TerraIndex also supports 9.0.0/8.0.0 etc.|
1023 +|10| | |Receives the request and creates a SIKB results file based on the version that is requested.| | |
1024 +|11| |<=|Sends back the results of the orders.|ResultCode (),
1343 1343  ErrorMessage (string),
1344 1344  OrderId (string),
1345 1345  LabassignmentGUID (GUID),
1346 1346  FileContent_Base64 (string),
1347 -UseZipStream/UseZip (bool, default: 'false'),|(% element-id="461" %) |(% element-id="459" %)1 = Success,
1029 +UseZipStream/UseZip (bool, default: 'false'),| |1 = Success,
1348 1348  2 = GeneralError,
1349 1349  3 = WrongSIKBVersion,
1350 1350  4 = InvalidCredentials,
... ... @@ -1354,12 +1354,9 @@
1354 1354  8 = InvalidOrderId,
1355 1355  9 = OrderIdAlreadyApproved
1356 1356  10 = PDFNotAvailable
1357 -(% 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" %)
1358 -(((
1359 -(% element-id="438" %)
1039 +|12|Receives the results and imports all results.| | | |(((
1360 1360  Import will be done to corresponding samples based on:
1361 1361  
1362 -(% element-id="437" %)
1363 1363  * Find Project by ProjectGUID (as provided in the labassignment)
1364 1364  * Find Project by ProjectCode (as provided in the Labassignment)
1365 1365  * Find Project and Labassignment by LabassignmentGUID (as provided in the Labassignment)
... ... @@ -1368,27 +1368,25 @@
1368 1368  For lower version Labassignments the lab should return the 'old' idanlmons as SampleGUID in the XML.
1369 1369  * Find Samples (only if Project is already found ) by SampleName
1370 1370  
1371 -(% element-id="429" %)
1372 1372  What is imported?
1373 1373  
1374 -(% element-id="428" %)
1375 1375  * If Sample is found, the results in the XML are always all updated and/or inserted.
1376 1376  * 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)
1377 -)))|(% element-id="425" %)
1378 -(% element-id="423" %)|(% element-id="422" %)13|(% element-id="421" %)If OrderStatus is 'Completed/Reported' (SIKBID: 5)
1054 +)))|
1055 +|13|If OrderStatus is 'Completed/Reported' (SIKBID: 5)
1379 1379  Request the PDF certificate.
1380 -Function: GetOrderPDF()|=(% element-id="418" %)>|(% element-id="417" %) |(% element-id="415" %)WebserviceUsername (string), 
1057 +Function: GetOrderPDF()|=>| |WebserviceUsername (string), 
1381 1381  WebservicePassword (string),
1382 1382  CustomerUsername (string),
1383 1383  CustomerCode (string),
1384 -OrderID (string),|(% element-id="410" %) |(% element-id="408" %)
1385 -(% 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" %)
1386 -(% 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 (),
1061 +OrderID (string),| |
1062 +|14| | |Receives the request and creates the PDF for the Order.| | |
1063 +|15| |<=|Sends back the PDF of the order.|ResultCode (),
1387 1387  ErrorMessage (string),
1388 1388  OrderId (string),
1389 1389  LabassignmentGUID (GUID),
1390 1390  FileContent_Base64 (string),
1391 -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,
1068 +UseZipStream/UseZip (bool, default: 'false'),|If the PDF is not available yet, please give the resultcode: PDFNotAvailable.|1 = Success,
1392 1392  2 = GeneralError,
1393 1393  3 = WrongSIKBVersion,
1394 1394  4 = InvalidCredentials,
... ... @@ -1398,264 +1398,27 @@
1398 1398  8 = InvalidOrderId,
1399 1399  9 = OrderIdAlreadyApproved
1400 1400  10 = PDFNotAvailable
1401 -(% 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" %)
1078 +|12|Receives the PDF and stores it for reporting and downloading.| | | | |
1402 1402  
1403 -(% element-id="357" %)
1404 -== Request example Order Status ==
1080 +=
1081 +Customer wants to see real time information about the status in the interface =
1405 1405  
1406 -public GetOrderStatusesCall.Response OrderStatuses(string WebserviceUsername, string WebservicePassword, string CustomerUsername, string customerid, DateTime? timestampSince)
1407 - {
1408 - GetOrderStatusesCall.Response set = new GetOrderStatusesCall.Response();
1409 - string responseMessage = null;
1083 +== Oplossing/Design ==
1410 1410  
1411 - if (timestampSince == null) timestampSince = DateTime.Now.AddHours(-3); ~/~/Now, minus 3 hours
1412 - var formattedTimestamp = System.Xml.XmlConvert.ToString((DateTime)timestampSince, System.Xml.XmlDateTimeSerializationMode.RoundtripKind);
1085 +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.
1413 1413  
1414 - try
1415 - {
1416 - var content = new FormUrlEncodedContent(new[]
1417 - {
1418 - new KeyValuePair<string, string>("userName", WebserviceUsername),
1419 - new KeyValuePair<string, string>("password", WebservicePassword),
1420 - new KeyValuePair<string, string>("customerUsername", CustomerUsername),
1421 - new KeyValuePair<string, string>("clientId", customerid),
1422 - new KeyValuePair<string, string>("lastModified", formattedTimestamp),
1423 - });
1424 -
1425 - HttpResponseMessage response = _HttpClient.PostAsync(_HttpClient.BaseAddress + "/GetOrderStatuses", content).GetAwaiter().GetResult();
1426 - responseMessage = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
1427 - response.EnsureSuccessStatusCode();
1428 -
1429 - if (string.IsNullOrEmpty(responseMessage))
1430 - {
1431 - throw new Exception("Empty response from: [" + _HttpClient.BaseAddress + " /GetOrderStatuses" + "]");
1432 - }
1433 - using (var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseMessage~)~)~)
1434 - {
1435 - XmlSerializer serializer = new XmlSerializer(typeof(GetOrderStatusesCall.Response));
1436 - set = (GetOrderStatusesCall.Response)serializer.Deserialize(ms);
1437 - }               
1438 -
1439 - }
1440 - catch (Exception ex)
1441 - {
1442 - #region handle exception
1443 -
1444 - set.Status = new BusinessEntities.LabRestService.GetOrderStatusesCall.ResponseStatus();
1445 - set.Status.StatusCode = ((int)ResultCodes.GeneralError).ToString();
1446 - set.Status.ErrorMessage = "Exception occurred in GetOrderStatuses (username: " + WebserviceUsername + ", password: " + WebservicePassword + ") with message: " + ex.ToString();
1447 -
1448 - ex.Data.Add("Response", responseMessage);
1449 - ex.Data.Add("WebserviceUsername", WebserviceUsername);
1450 - ex.Data.Add("WebservicePassword", WebservicePassword);
1451 - ex.Data.Add("CustomerUsername", CustomerUsername);
1452 - ex.Data.Add("customerid", customerid);
1453 - ex.Data.Add("lastModified", formattedTimestamp);
1454 - ex.Data.Add("Result", set);
1455 -
1456 - throw;
1457 - #endregion
1458 - }
1459 -
1460 - return set;
1461 - }       
1462 -
1463 -== Response Status XML Example ==
1464 -
1465 - <?xml version="1.0" encoding="UTF-8" standalone="no"?>
1466 - <Response>
1467 - <Orders>
1468 - <Order>
1469 - <OrderStatus>Reported</OrderStatus>
1470 - <SIKBOrderId></SIKBOrderId>
1471 - <SIKBOrderStatus>5</SIKBOrderStatus>
1472 - <OrderId>4855422</OrderId>
1473 - <RapportNummer>12193838</RapportNummer>
1474 - <IsDelayed>False</IsDelayed>
1475 - <ExpectedOn>09/10/2015 17:15:00</ExpectedOn>
1476 - </Order>
1477 - <Order>
1478 - <OrderStatus>New</OrderStatus>
1479 - <SIKBOrderId></SIKBOrderId>
1480 - <SIKBOrderStatus>3</SIKBOrderStatus>
1481 - <OrderId>7106525</OrderId>
1482 - <RapportNummer>02808304-0749-41ae-96eb-d62b0365ebe4</RapportNummer>
1483 - <IsDelayed>False</IsDelayed>
1484 - <ExpectedOn></ExpectedOn>
1485 - </Order>
1486 - <Order>
1487 - <OrderStatus>New</OrderStatus>
1488 - <SIKBOrderId></SIKBOrderId>
1489 - <SIKBOrderStatus>3</SIKBOrderStatus>
1490 - <OrderId>7108954</OrderId>
1491 - <RapportNummer>10776137-ef99-4947-9a6a-9a3b32cd2dec</RapportNummer>
1492 - <IsDelayed>False</IsDelayed>
1493 - <ExpectedOn></ExpectedOn>
1494 - </Order>
1495 - <Order>
1496 - <OrderStatus>New</OrderStatus>
1497 - <SIKBOrderId></SIKBOrderId>
1498 - <SIKBOrderStatus>3</SIKBOrderStatus>
1499 - <OrderId>7110401</OrderId>
1500 - <RapportNummer>7881575c-bee2-409f-b304-9e472e7ac702</RapportNummer>
1501 - <IsDelayed>False</IsDelayed>
1502 - <ExpectedOn>11/10/2018 00:00:00</ExpectedOn>
1503 - </Order>
1504 - </Orders>
1505 - <Status>
1506 - <StatusCode>1</StatusCode>
1507 - <StatusCodeDescription>OK</StatusCodeDescription>
1508 - <AtmisErrorCode>0</AtmisErrorCode>
1509 - <ErrorMessage></ErrorMessage>
1510 - </Status>
1511 - </Response>
1512 -
1513 -
1514 -== Request example Order XML ==
1515 -
1516 -
1517 -public GetOrderResultsCall.Response GetOrderResults(string WebserviceUsername, string WebservicePassword, string CustomerUsername, string customerid, string orderid, string sikbVersion)
1518 - {
1519 - GetOrderResultsCall.Response set = new GetOrderResultsCall.Response();
1520 - string responseMessage = null;
1521 - try
1522 - {
1523 - bool useZipstream = true;
1524 - var content = new FormUrlEncodedContent(new[]
1525 - {
1526 - new KeyValuePair<string, string>("userName", WebserviceUsername),
1527 - new KeyValuePair<string, string>("password", WebservicePassword),
1528 - new KeyValuePair<string, string>("customerUsername", CustomerUsername),
1529 - new KeyValuePair<string, string>("clientId", customerid),
1530 - new KeyValuePair<string, string>("orderId", orderid),
1531 - new KeyValuePair<string, string>("sikbVersion", sikbVersion),
1532 - new KeyValuePair<string, string>("useZip", useZipstream.ToString() ),
1533 - });
1534 -
1535 - HttpResponseMessage response = _HttpClient.PostAsync(_HttpClient.BaseAddress + "/GetOrderResults", content).GetAwaiter().GetResult();
1536 - responseMessage = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
1537 - response.EnsureSuccessStatusCode();
1538 -
1539 - if (string.IsNullOrEmpty(responseMessage))
1540 - {
1541 - throw new Exception("Empty response from: [" + _HttpClient.BaseAddress + " /GetOrderResults" + "]");
1542 - }
1543 - using (var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseMessage~)~)~)
1544 - {
1545 - XmlSerializer serializer = new XmlSerializer(typeof(GetOrderResultsCall.Response));
1546 - set = (GetOrderResultsCall.Response)serializer.Deserialize(ms);
1547 - }
1548 -
1549 - if (useZipstream && !string.IsNullOrEmpty(set.FileContent))
1550 - {
1551 - ~/~/convert from base64 string back to normal
1552 - ~/~/first check for real Base64, by checking there is no 'xml' in it
1553 - ~/~/If encoded, it wont contain either of the root XML tags of SIKB
1554 - if (!set.FileContent.Contains("FeatureCollectionIMSIKB0101") && !set.FileContent.Contains("labresultaat"))
1555 - {
1556 - set.FileContent = ZipStreamHelper.DecompressBase64StringToString(set.FileContent);
1557 - }
1558 - }
1559 -
1560 - }
1561 - catch (Exception ex)
1562 - {
1563 - #region handle exception
1564 -
1565 - set.Status = new BusinessEntities.LabRestService.GetOrderResultsCall.ResponseStatus();
1566 - set.Status.StatusCode = ((int)ResultCodes.GeneralError).ToString();
1567 - set.Status.ErrorMessage = "Exception occurred in GetOrderResults (username: " + WebserviceUsername + ", password: " + WebservicePassword + ") with message: " + ex.ToString();
1568 -
1569 - ex.Data.Add("Response", responseMessage);
1570 - ex.Data.Add("WebserviceUsername", WebserviceUsername);
1571 - ex.Data.Add("WebservicePassword", WebservicePassword);
1572 - ex.Data.Add("CustomerUsername", CustomerUsername);
1573 - ex.Data.Add("sikbVersion", sikbVersion);
1574 - ex.Data.Add("customerid", customerid);
1575 - ex.Data.Add("orderId", orderid);
1576 - ex.Data.Add("Result", set);
1577 -
1578 - throw;
1579 - #endregion
1580 - }
1581 -
1582 - return set;
1583 -
1584 -
1585 -== Response Order XML Example ==
1586 -
1587 -
1588 -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1589 - <Response>
1590 - <FileContent>DhVn3Q1AA==</FileContent>  ~/~/BASE64 Zip Stream, SIKB0101 labresults xml file
1591 - <Status>
1592 - <StatusCode>1</StatusCode>
1593 - <StatusCodeDescription>OK</StatusCodeDescription>
1594 - <AtmisErrorCode>0</AtmisErrorCode>  
1595 - <ErrorMessage></ErrorMessage>
1596 - </Status>
1597 - </Response>
1598 -
1599 -
1600 -== Request example Order PDF File ==
1601 -
1602 -
1603 -
1604 - bool useZipstream = true; ~/~/ Always Supported, Keep it true!!
1605 - var content = new FormUrlEncodedContent(new[]
1606 - {
1607 - new KeyValuePair<string, string>("userName", WebserviceUsername),
1608 - new KeyValuePair<string, string>("password", WebservicePassword),
1609 - new KeyValuePair<string, string>("customerUsername", CustomerUsername),
1610 - new KeyValuePair<string, string>("clientId", customerid),
1611 - new KeyValuePair<string, string>("orderId", orderid),
1612 - new KeyValuePair<string, string>("useZip", useZipstream.ToString()), ~/~/ Always Supported, Keep it true!!.
1613 - new KeyValuePair<string, string>("languageCode", languageCode)
1614 - });
1615 -
1616 - HttpResponseMessage response = _HttpClient.PostAsync("GetOrderPdf", content).GetAwaiter().GetResult();
1617 - responseMessage = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
1618 - response.EnsureSuccessStatusCode();
1619 -
1620 -
1621 -== Response Order PDF Example ==
1622 -
1623 - <Response>
1624 - <OrderId>7113737</OrderId>
1625 - <FileContent>
1626 - BASE64 encoded file
1627 - </FileContent>
1628 - <Status>
1629 - <StatusCode>1</StatusCode>
1630 - <StatusCodeDescription>OK</StatusCodeDescription>
1631 - <ErrorMessage></ErrorMessage>
1632 - </Status>
1633 - </Response>
1634 -
1635 -
1636 -
1637 -(% element-id="357" %)
1638 -= (% element-id="356" %)Customer wants to see real time information about the status in the interface(%%) =
1639 -
1640 -(% element-id="354" %)
1641 -== (% element-id="353" %)Solution/Design(%%) ==
1642 -
1643 -(% element-id="352" %)
1644 -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.
1645 -
1646 -(% element-id="351" %)
1647 1647  ..NOT SUPPORTED YET...
1648 1648  
1649 -(% class="table-hover" element-id="350" %)
1650 -(% 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
1651 -(% element-id="339" %)|(% element-id="338" %)1|(% element-id="337" %)Request the Order status for a single Order/Labassignment.
1652 -Function: GetOrderStatus()|=(% element-id="335" %)>|(% element-id="334" %) |(% element-id="332" %)WebserviceUsername (string), 
1089 +(% class="table-hover" %)
1090 +|(% colspan="1" %)Action|(% colspan="1" %)TerraIndex|(% colspan="1" %) |(% colspan="1" %)Laboratorium|(% colspan="1" %)Parameters/Message|(% colspan="1" %)Remarks|(% colspan="1" %)ResultCodes
1091 +|1|Request the Order status for a single Order/Labassignment.
1092 +Function: GetOrderStatus()|=>| |WebserviceUsername (string), 
1653 1653  WebservicePassword (string),
1654 1654  CustomerUsername (string),
1655 1655  CustomerCode (string),
1656 -OrderID (string),|(% element-id="327" %) |(% element-id="325" %)
1657 -(% 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" %)
1658 -(% 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 (),
1096 +OrderID (string),| |
1097 +|2| | |Receives the request and gets the status for the Order.| | |
1098 +|3| |<=|Sends back the status of the order.|ResultCode (),
1659 1659  ErrorMessage (string),
1660 1660  OrderID (string),
1661 1661  LabassignmentGUID (GUID),
... ... @@ -1662,10 +1662,10 @@
1662 1662  CertificateNumber (string)
1663 1663  OrderStatusSIKB (int),
1664 1664  Delayed (boolean),
1665 -ExpectedTimeStamp (DateTime),|(% element-id="296" %)OrderStatusSIKB is the SIKB Labassignment status.
1105 +ExpectedTimeStamp (DateTime),|OrderStatusSIKB is the SIKB Labassignment status.
1666 1666  \\Delayed is a boolean to tell the customer a order will be later ready then expected. The ExpectedTimestamp.
1667 1667  If Delayed for the firsttime, TerraIndex can send a notification to the users and show a different layout.
1668 -\\LabassignmentGUID is filled to support also Labassignments that are not from TerraIndex Ordered.|(% element-id="290" %)1 = Success,
1108 +\\LabassignmentGUID is filled to support also Labassignments that are not from TerraIndex Ordered.|1 = Success,
1669 1669  2 = GeneralError,
1670 1670  3 = WrongSIKBVersion,
1671 1671  4 = InvalidCredentials,
... ... @@ -1675,8 +1675,12 @@
1675 1675  8 = InvalidOrderId,
1676 1676  9 = OrderIdAlreadyApproved
1677 1677  10 = PDFNotAvailable
1678 -(% element-id="280" %)|(% element-id="279" %)4|(% element-id="278" %)Receives the status and shows in the interface the updated info.
1679 -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" %)
1118 +|4|Receives the status and shows in the interface the updated info.
1119 +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.|
1680 1680  
1681 -(% element-id="265" %)
1121 +
1122 +
1123 +
1124 +
1125 +
1682 1682  
1712326445096-102.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.RobinHuisman
Size
... ... @@ -1,1 +1,0 @@
1 -20.5 KB
Content
1712326465681-980.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.RobinHuisman
Size
... ... @@ -1,1 +1,0 @@
1 -20.5 KB
Content
1712326492306-381.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.RobinHuisman
Size
... ... @@ -1,1 +1,0 @@
1 -38.6 KB
Content
1712326520488-924.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.RobinHuisman
Size
... ... @@ -1,1 +1,0 @@
1 -16.8 KB
Content
Lab exchange.svg
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.RobinHuisman
Size
... ... @@ -1,1 +1,0 @@
1 -44.4 KB
Content
... ... @@ -1,1 +1,0 @@
1 -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="998" height="2266"><desc>title%20Digital%20Lab%20exchange%20Process%0A%0Aparticipant%20Lab%0Aparticipant%20TerraIndex%0Aparticipant%20TerraIndex_User%0A%0A%0A%3D%3D**Labdelivery%20data**%3D%3D%0Anote%20over%20Lab%2CTerraIndex_User%3ATerraIndex%20retrieves%20the%20'menu-card'%20so%20the%20user%20can%20order%20analysis.%0ATerraIndex-%3ELab%3ARequest%20the%20Client%20codes%20for%20a%20Customer%0ALab-%3ETerraIndex%3Areturn%20the%20active%20Client%20codes%0ATerraIndex-%3ELab%3ALabDelivery%20Data%2FFile%20for%20a%20Customer%20Client%20Code%0ALab-%3ETerraIndex%3Areturn%20the%20Labdelivery%20SIKB0101%20File.%0ATerraIndex-%3ETerraIndex%3AStore%20and%20import%20into%20User%20database.%0A%0A%3D%3D**Labassignment**%3D%3D%0Anote%20over%20Lab%2CTerraIndex_User%3ATerraIndex%20sends%20the%20'order'%20so%20the%20lab%20can%20process%20the%20samples.%0ATerraIndex-%3ETerraIndex_User%3AShow%20available%20Lab%20and%20Client%20codes%0ATerraIndex_User-%3ETerraIndex_User%3ASelect%20Lab%20and%20Client%20code%0ATerraIndex-%3ETerraIndex_User%3AShow%20available%20Analysis%20Sets%20and%20Urgencies%0ATerraIndex_User-%3ETerraIndex_User%3ASelect%20the%20samples%20%0ATerraIndex_User-%3ETerraIndex_User%3ASelect%20the%20needed%20analysis%20sets%0ATerraIndex_User-%3ETerraIndex%3AStore%2FSave%20the%20labassignment%20%0ATerraIndex_User-%3ETerraIndex%3ASend%20to%20the%20lab%0ATerraIndex-%3ETerraIndex%3AGenerate%20SIKB0101%20Labassignment%20file%0ATerraIndex-%3ELab%3ASend%20file%20to%20the%20Lab%0Anote%20over%20Lab%2CTerraIndex%3AOption%20A%0ALab-%3ETerraIndex%3AAcknowledge%20a%20success%20received%0ATerraIndex-%3ETerraIndex%3ASave%20status%0ATerraIndex-%3ETerraIndex_User%3AShow%20status%20and%20prevent%20further%20editing%0Anote%20over%20Lab%2CTerraIndex%3AOption%20B%0ALab-%3ETerraIndex%3AReturn%20Order%20price%20PDF%0ATerraIndex-%3ETerraIndex_User%3AShow%20Price%20and%20PDF%0ATerraIndex_User-%3ETerraIndex%3AApprove%20Order%0ATerraIndex-%3ELab%3AApprove%20Order%0ALab-%3ETerraIndex%3AAcknowledge%20a%20success%20received%0ATerraIndex-%3ETerraIndex%3ASave%20status%0ATerraIndex-%3ETerraIndex_User%3AShow%20status%20and%20prevent%20further%20editing%0A%0A%3D%3D**Labresults**%3D%3D%0Anote%20over%20Lab%2CTerraIndex_User%3ATerraIndex%20retrieves%20the%20'results'%20so%20the%20user%20can%20order%20report.%0ATerraIndex-%3ELab%3ARequests%20the%20Changed%20assignments%20since%20last%20asking%0ALab-%3ETerraIndex%3Areturn%20the%20changed%20orders%20with%20status%0ATerraIndex-%3ELab%3ARequest%20the%20results%20of%20a%20Ready%20order%0ALab-%3ETerraIndex%3Areturn%20the%20Analysisresults%20SIKB0101%20File.%0ATerraIndex-%3ETerraIndex%3AStore%20and%20import%20into%20User%20database.%0ATerraIndex-%3ETerraIndex_User%3A%0ATerraIndex_User-%3ETerraIndex_User%3AAsessments%20and%20Report%20results%0A%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="998" height="2266"/></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 95.73914152281817 L 38.12107170559766 2266.687660092818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray="12.565541,5.445067766666667"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 95.73914152281817 L 429.6485480430326 2266.687660092818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray="12.565541,5.445067766666667"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 95.73914152281817 L 762.4931325347643 2266.687660092818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray="12.565541,5.445067766666667"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 8.167601650000002 51.63409261281818 L 68.07454176119532 51.63409261281818 L 68.07454176119532 95.73914152281817 L 8.167601650000002 95.73914152281817 L 8.167601650000002 51.63409261281818 Z" stroke-miterlimit="10" stroke-width="2.613632528" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="25.8912972305" y="79.40393822281817" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Lab</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 377.2935124356771 51.63409261281818 L 482.003583650388 51.63409261281818 L 482.003583650388 95.73914152281817 L 377.2935124356771 95.73914152281817 L 377.2935124356771 51.63409261281818 Z" stroke-miterlimit="10" stroke-width="2.613632528" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="395.0172080161771" y="79.40393822281817" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">TerraIndex</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 690.5854922521158 51.63409261281818 L 834.4007728174128 51.63409261281818 L 834.4007728174128 95.73914152281817 L 690.5854922521158 95.73914152281817 L 690.5854922521158 51.63409261281818 Z" stroke-miterlimit="10" stroke-width="2.613632528" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="708.3091878326159" y="79.40393822281817" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">TerraIndex_User</text></g></g><g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="16pt" font-style="normal" font-weight="normal" text-decoration="normal" x="357.9024124145508" y="24.651306798181814" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Digital Lab exchange Process</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 8.16760165 141.74996415115152 L 989.83239835 141.74996415115152 M 8.16760165 147.19503191781817 L 989.83239835 147.19503191781817 M 8.16760165 152.64009968448482 L 989.83239835 152.64009968448482" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 418.2817545035352 128.4095481228182 L 579.7182454964649 128.4095481228182 L 579.7182454964649 165.9805157128182 L 418.2817545035352 165.9805157128182 Z" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="bold" text-decoration="normal" x="441.15103912353516" y="151.27883274281814" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Labdelivery data</text></g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 23.419388735597657 190.4833206628182 L 762.4931325347643 190.4833206628182 L 777.1948155047643 205.1850036328182 L 777.1948155047643 228.05428825281817 L 23.419388735597657 228.05428825281817 L 23.419388735597657 190.4833206628182 M 762.4931325347643 190.4833206628182 L 762.4931325347643 205.1850036328182 L 777.1948155047643 205.1850036328182" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="181.57780066754424" y="213.35260528281813" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">TerraIndex retrieves the 'menu-card' so the user can order analysis.</text></g><g><g><rect fill="white" stroke="none" x="99.02225978702997" y="252.55709320281815" width="269.7251001745703" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="101.47254028202997" y="267.25877617281816" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Request the Client codes for a Customer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 273.79285749281814 L 51.570389089264324 273.79285749281814" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(38.12107170559766,273.79285749281814) translate(-38.12107170559766,-273.79285749281814)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 51.73374112226433 266.9865227844848 L 38.12107170559766 273.79285749281814 L 51.73374112226433 280.5991922011515 Z"/></g></g><g><g><rect fill="white" stroke="none" x="136.50257594913936" y="298.2956624428181" width="194.76446785035156" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="138.95285644413934" y="312.9973454128181" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">return the active Client codes</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 319.53142673281815 L 416.1992306593659 319.53142673281815" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,319.53142673281815) translate(-429.6485480430326,-319.53142673281815)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 416.0358786263659 312.7250920244848 L 429.6485480430326 319.53142673281815 L 416.0358786263659 326.3377614411515 Z"/></g></g><g><g><rect fill="white" stroke="none" x="70.51475246281122" y="344.03423168281813" width="326.7401148230078" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="72.96503295781122" y="358.7359146528181" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">LabDelivery Data/File for a Customer Client Code</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 365.26999597281815 L 51.570389089264324 365.26999597281815" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(38.12107170559766,365.26999597281815) translate(-38.12107170559766,-365.26999597281815)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 51.73374112226433 358.4636612644848 L 38.12107170559766 365.26999597281815 L 51.73374112226433 372.0763306811515 Z"/></g></g><g><g><rect fill="white" stroke="none" x="109.60566432804559" y="389.77280092281813" width="248.55829109253906" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="112.05594482304559" y="404.4744838928181" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">return the Labdelivery SIKB0101 File.</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 411.00856521281816 L 416.1992306593659 411.00856521281816" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,411.00856521281816) translate(-429.6485480430326,-411.00856521281816)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 416.0358786263659 404.2022305044848 L 429.6485480430326 411.00856521281816 L 416.0358786263659 417.8148999211515 Z"/></g></g><g><g><rect fill="white" stroke="none" x="448.97853861469923" y="435.5113701628182" width="244.47813667359375" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="451.42881910969925" y="450.2130531328182" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Store and import into User database.</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 456.74713445281816 L 494.9893612430326 456.74713445281816 L 494.9893612430326 477.9828987428182 L 443.09786542669923 477.9828987428182" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,477.9828987428182) translate(-429.6485480430326,-477.9828987428182)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 471.17656403448484 L 429.6485480430326 477.9828987428182 L 443.26121745969925 484.7892334511515 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 8.16760165 515.8261197211515 L 989.83239835 515.8261197211515 M 8.16760165 521.2711874878181 L 989.83239835 521.2711874878181 M 8.16760165 526.7162552544847 L 989.83239835 526.7162552544847" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 422.3654947379102 502.4857036928181 L 575.6345052620899 502.4857036928181 L 575.6345052620899 540.0566712828181 L 422.3654947379102 540.0566712828181 Z" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="bold" text-decoration="normal" x="445.23477935791016" y="525.3549883128181" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Labassignment</text></g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 23.419388735597657 564.559476232818 L 762.4931325347643 564.559476232818 L 777.1948155047643 579.261159202818 L 777.1948155047643 602.130443822818 L 23.419388735597657 602.130443822818 L 23.419388735597657 564.559476232818 M 762.4931325347643 564.559476232818 L 762.4931325347643 579.261159202818 L 777.1948155047643 579.261159202818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="190.93354407574736" y="587.4287608528181" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">TerraIndex sends the 'order' so the lab can process the samples.</text></g><g><g><rect fill="white" stroke="none" x="473.4094391884297" y="626.633248772818" width="245.3228022009375" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="475.8597196834297" y="641.334931742818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Show available Lab and Client codes</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 647.869013062818 L 749.0438151510976 647.869013062818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,647.869013062818) translate(-762.4931325347643,-647.869013062818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 748.8804631180976 641.0626783544847 L 762.4931325347643 647.869013062818 L 748.8804631180976 654.6753477711513 Z"/></g></g><g><g><rect fill="white" stroke="none" x="781.823123106431" y="672.3718180128179" width="180.12597908082031" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="784.273403601431" y="687.0735009828179" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Select Lab and Client code</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 693.607582302818 L 827.8339457347643 693.607582302818 L 827.8339457347643 714.843346592818 L 775.942449918431 714.843346592818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,714.843346592818) translate(-762.4931325347643,-714.843346592818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 776.105801951431 708.0370118844846 L 762.4931325347643 714.843346592818 L 776.105801951431 721.6496813011513 Z"/></g></g><g><g><rect fill="white" stroke="none" x="448.97853861469923" y="739.3461515428179" width="294.1846033483984" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="451.42881910969925" y="754.0478345128179" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Show available Analysis Sets and Urgencies</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 760.5819158328179 L 749.0438151510976 760.5819158328179" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,760.5819158328179) translate(-762.4931325347643,-760.5819158328179)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 748.8804631180976 753.7755811244846 L 762.4931325347643 760.5819158328179 L 748.8804631180976 767.3882505411513 Z"/></g></g><g><g><rect fill="white" stroke="none" x="781.823123106431" y="785.0847207828178" width="132.83178962769531" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="784.273403601431" y="799.7864037528178" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Select the samples </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 806.3204850728179 L 827.8339457347643 806.3204850728179 L 827.8339457347643 827.5562493628179 L 775.942449918431 827.5562493628179" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,827.5562493628179) translate(-762.4931325347643,-827.5562493628179)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 776.105801951431 820.7499146544845 L 762.4931325347643 827.5562493628179 L 776.105801951431 834.3625840711512 Z"/></g></g><g><g><rect fill="white" stroke="none" x="781.823123106431" y="852.0590543128178" width="211.08514656128906" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="784.273403601431" y="866.7607372828178" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Select the needed analysis sets</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 873.2948186028178 L 827.8339457347643 873.2948186028178 L 827.8339457347643 894.5305828928178 L 775.942449918431 894.5305828928178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,894.5305828928178) translate(-762.4931325347643,-894.5305828928178)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 776.105801951431 887.7242481844845 L 762.4931325347643 894.5305828928178 L 776.105801951431 901.3369176011512 Z"/></g></g><g><g><rect fill="white" stroke="none" x="493.7923966469258" y="919.0333878428178" width="204.55688728394531" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="496.2426771419258" y="933.7350708128178" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Store/Save the labassignment </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 940.2691521328178 L 443.09786542669923 940.2691521328178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,940.2691521328178) translate(-429.6485480430326,-940.2691521328178)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 933.4628174244845 L 429.6485480430326 940.2691521328178 L 443.26121745969925 947.0754868411511 Z"/></g></g><g><g><rect fill="white" stroke="none" x="544.3077622475117" y="964.7719570828177" width="103.52615608277344" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="546.7580427425117" y="979.4736400528177" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Send to the lab</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 986.0077213728177 L 443.09786542669923 986.0077213728177" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,986.0077213728177) translate(-429.6485480430326,-986.0077213728177)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 979.2013866644844 L 429.6485480430326 986.0077213728177 L 443.26121745969925 992.8140560811511 Z"/></g></g><g><g><rect fill="white" stroke="none" x="448.97853861469923" y="1010.5105263228177" width="262.4308954626562" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="451.42881910969925" y="1025.2122092928178" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Generate SIKB0101 Labassignment file</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1031.7462906128178 L 494.9893612430326 1031.7462906128178 L 494.9893612430326 1052.9820549028177 L 443.09786542669923 1052.9820549028177" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1052.9820549028177) translate(-429.6485480430326,-1052.9820549028177)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 1046.1757201944845 L 429.6485480430326 1052.9820549028177 L 443.26121745969925 1059.788389611151 Z"/></g></g><g><g><rect fill="white" stroke="none" x="168.26704891056514" y="1077.4848598528179" width="131.2355219275" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="170.71732940556512" y="1092.186542822818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Send file to the Lab</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1098.7206241428178 L 51.570389089264324 1098.7206241428178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(38.12107170559766,1098.7206241428178) translate(-38.12107170559766,-1098.7206241428178)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 51.73374112226433 1091.9142894344845 L 38.12107170559766 1098.7206241428178 L 51.73374112226433 1105.526958851151 Z"/></g></g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 23.419388735597657 1123.2234290928177 L 429.6485480430326 1123.2234290928177 L 444.35023101303256 1137.9251120628178 L 444.35023101303256 1160.7943966828177 L 23.419388735597657 1160.7943966828177 L 23.419388735597657 1123.2234290928177 M 429.6485480430326 1123.2234290928177 L 429.6485480430326 1137.9251120628178 L 444.35023101303256 1137.9251120628178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="205.36298217656122" y="1146.0927137128178" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Option A</text></g><g><g><rect fill="white" stroke="none" x="123.46393306583856" y="1185.2972016328179" width="220.84175361695313" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="125.91421356083856" y="1199.998884602818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Acknowledge a success received</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 1206.5329659228178 L 416.1992306593659 1206.5329659228178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1206.5329659228178) translate(-429.6485480430326,-1206.5329659228178)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 416.0358786263659 1199.7266312144845 L 429.6485480430326 1206.5329659228178 L 416.0358786263659 1213.339300631151 Z"/></g></g><g><g><rect fill="white" stroke="none" x="448.97853861469923" y="1231.0357708728177" width="81.50038398804688" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="451.42881910969925" y="1245.7374538428178" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Save status</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1252.2715351628178 L 494.9893612430326 1252.2715351628178 L 494.9893612430326 1273.5072994528177 L 443.09786542669923 1273.5072994528177" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1273.5072994528177) translate(-429.6485480430326,-1273.5072994528177)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 1266.7009647444845 L 429.6485480430326 1273.5072994528177 L 443.26121745969925 1280.313634161151 Z"/></g></g><g><g><rect fill="white" stroke="none" x="466.08303080219923" y="1298.010104402818" width="259.9756189733984" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="468.53331129719925" y="1312.711787372818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Show status and prevent further editing</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1319.2458686928178 L 749.0438151510976 1319.2458686928178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,1319.2458686928178) translate(-762.4931325347643,-1319.2458686928178)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 748.8804631180976 1312.4395339844846 L 762.4931325347643 1319.2458686928178 L 748.8804631180976 1326.052203401151 Z"/></g></g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 23.419388735597657 1343.7486736428177 L 429.6485480430326 1343.7486736428177 L 444.35023101303256 1358.4503566128178 L 444.35023101303256 1381.3196412328177 L 23.419388735597657 1381.3196412328177 L 23.419388735597657 1343.7486736428177 M 429.6485480430326 1343.7486736428177 L 429.6485480430326 1358.4503566128178 L 444.35023101303256 1358.4503566128178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="205.36298217656122" y="1366.6179582628179" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Option B</text></g><g><g><rect fill="white" stroke="none" x="154.0401354584167" y="1405.8224461828179" width="159.68934883179688" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="156.4904159534167" y="1420.524129152818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Return Order price PDF</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 1427.0582104728178 L 416.1992306593659 1427.0582104728178" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1427.0582104728178) translate(-429.6485480430326,-1427.0582104728178)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 416.0358786263659 1420.2518757644846 L 429.6485480430326 1427.0582104728178 L 416.0358786263659 1433.864545181151 Z"/></g></g><g><g><rect fill="white" stroke="none" x="525.5855027260274" y="1451.561015422818" width="140.9706751257422" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="528.0357832210274" y="1466.262698392818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Show Price and PDF</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1472.7967797128179 L 749.0438151510976 1472.7967797128179" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,1472.7967797128179) translate(-762.4931325347643,-1472.7967797128179)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 748.8804631180976 1465.9904450044846 L 762.4931325347643 1472.7967797128179 L 748.8804631180976 1479.603114421151 Z"/></g></g><g><g><rect fill="white" stroke="none" x="545.5461350502461" y="1497.299584662818" width="101.04941047730469" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="547.9964155452461" y="1512.001267632818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Approve Order</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 1518.535348952818 L 443.09786542669923 1518.535348952818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1518.535348952818) translate(-429.6485480430326,-1518.535348952818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 1511.7290142444847 L 429.6485480430326 1518.535348952818 L 443.26121745969925 1525.3416836611511 Z"/></g></g><g><g><rect fill="white" stroke="none" x="183.3601046356628" y="1543.038153902818" width="101.04941047730469" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="185.81038513066278" y="1557.7398368728182" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Approve Order</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1564.273918192818 L 51.570389089264324 1564.273918192818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(38.12107170559766,1564.273918192818) translate(-38.12107170559766,-1564.273918192818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 51.73374112226433 1557.4675834844847 L 38.12107170559766 1564.273918192818 L 51.73374112226433 1571.0802529011512 Z"/></g></g><g><g><rect fill="white" stroke="none" x="123.46393306583856" y="1588.7767231428181" width="220.84175361695313" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="125.91421356083856" y="1603.4784061128182" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Acknowledge a success received</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 1610.012487432818 L 416.1992306593659 1610.012487432818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1610.012487432818) translate(-429.6485480430326,-1610.012487432818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 416.0358786263659 1603.2061527244848 L 429.6485480430326 1610.012487432818 L 416.0358786263659 1616.8188221411513 Z"/></g></g><g><g><rect fill="white" stroke="none" x="448.97853861469923" y="1634.515292382818" width="81.50038398804688" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="451.42881910969925" y="1649.216975352818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Save status</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1655.751056672818 L 494.9893612430326 1655.751056672818 L 494.9893612430326 1676.986820962818 L 443.09786542669923 1676.986820962818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1676.986820962818) translate(-429.6485480430326,-1676.986820962818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 1670.1804862544848 L 429.6485480430326 1676.986820962818 L 443.26121745969925 1683.7931556711512 Z"/></g></g><g><g><rect fill="white" stroke="none" x="466.08303080219923" y="1701.4896259128182" width="259.9756189733984" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="468.53331129719925" y="1716.1913088828182" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Show status and prevent further editing</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1722.725390202818 L 749.0438151510976 1722.725390202818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,1722.725390202818) translate(-762.4931325347643,-1722.725390202818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 748.8804631180976 1715.9190554944848 L 762.4931325347643 1722.725390202818 L 748.8804631180976 1729.5317249111513 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 8.16760165 1760.5686111811515 L 989.83239835 1760.5686111811515 M 8.16760165 1766.013678947818 L 989.83239835 1766.013678947818 M 8.16760165 1771.4587467144847 L 989.83239835 1771.4587467144847" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 439.06199742345706 1747.228195152818 L 558.938002576543 1747.228195152818 L 558.938002576543 1784.799162742818 L 439.06199742345706 1784.799162742818 Z" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="bold" text-decoration="normal" x="461.93128204345703" y="1770.0974797728181" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Labresults</text></g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 23.419388735597657 1809.301967692818 L 762.4931325347643 1809.301967692818 L 777.1948155047643 1824.003650662818 L 777.1948155047643 1846.872935282818 L 23.419388735597657 1846.872935282818 L 23.419388735597657 1809.301967692818 M 762.4931325347643 1809.301967692818 L 762.4931325347643 1824.003650662818 L 777.1948155047643 1824.003650662818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="202.35803595807158" y="1832.171252312818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">TerraIndex retrieves the 'results' so the user can order report.</text></g><g><g><rect fill="white" stroke="none" x="57.45106227726434" y="1871.375740232818" width="352.86749519410154" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="59.90134277226434" y="1886.0774232028182" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Requests the Changed assignments since last asking</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1892.611504522818 L 51.570389089264324 1892.611504522818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(38.12107170559766,1892.611504522818) translate(-38.12107170559766,-1892.611504522818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 51.73374112226433 1885.8051698144848 L 38.12107170559766 1892.611504522818 L 51.73374112226433 1899.4178392311512 Z"/></g></g><g><g><rect fill="white" stroke="none" x="110.42169673771356" y="1917.1143094728181" width="246.92622627320313" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="112.87197723271356" y="1931.8159924428182" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">return the changed orders with status</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 1938.350073762818 L 416.1992306593659 1938.350073762818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,1938.350073762818) translate(-429.6485480430326,-1938.350073762818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 416.0358786263659 1931.5437390544848 L 429.6485480430326 1938.350073762818 L 416.0358786263659 1945.1564084711513 Z"/></g></g><g><g><rect fill="white" stroke="none" x="111.64574153751825" y="1962.8528787128182" width="244.47813667359375" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="114.09602203251825" y="1977.5545616828183" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Request the results of a Ready order</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 1984.0886430028181 L 51.570389089264324 1984.0886430028181" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(38.12107170559766,1984.0886430028181) translate(-38.12107170559766,-1984.0886430028181)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 51.73374112226433 1977.282308294485 L 38.12107170559766 1984.0886430028181 L 51.73374112226433 1990.8949777111513 Z"/></g></g><g><g><rect fill="white" stroke="none" x="98.20982845158075" y="2008.5914479528183" width="271.3499628454687" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="100.66010894658075" y="2023.2931309228184" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">return the Analysisresults SIKB0101 File.</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 38.12107170559766 2029.8272122428182 L 416.1992306593659 2029.8272122428182" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,2029.8272122428182) translate(-429.6485480430326,-2029.8272122428182)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 416.0358786263659 2023.020877534485 L 429.6485480430326 2029.8272122428182 L 416.0358786263659 2036.6335469511514 Z"/></g></g><g><g><rect fill="white" stroke="none" x="448.97853861469923" y="2054.3300171928186" width="244.47813667359375" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="451.42881910969925" y="2069.0317001628187" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Store and import into User database.</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 2075.5657814828182 L 494.9893612430326 2075.5657814828182 L 494.9893612430326 2096.8015457728184 L 443.09786542669923 2096.8015457728184" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(429.6485480430326,2096.8015457728184) translate(-429.6485480430326,-2096.8015457728184)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 443.26121745969925 2089.995211064485 L 429.6485480430326 2096.8015457728184 L 443.26121745969925 2103.607880481152 Z"/></g></g><g><g><rect fill="white" stroke="none" x="593.6205597938985" y="2121.304350722818" width="4.90056099" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="596.0708402888985" y="2136.006033692818" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve"></text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 429.6485480430326 2142.540115012818 L 749.0438151510976 2142.540115012818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,2142.540115012818) translate(-762.4931325347643,-2142.540115012818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 748.8804631180976 2135.7337803044848 L 762.4931325347643 2142.540115012818 L 748.8804631180976 2149.3464497211517 Z"/></g></g><g><g><rect fill="white" stroke="none" x="781.823123106431" y="2167.0429199628184" width="208.60125984253906" height="21.23576429"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="784.273403601431" y="2181.7446029328185" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Asessments and Report results</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 762.4931325347643 2188.278684252818 L 827.8339457347643 2188.278684252818 L 827.8339457347643 2209.514448542818 L 775.942449918431 2209.514448542818" stroke-miterlimit="10" stroke-width="1.3612669416666667" stroke-dasharray=""/><g transform="translate(762.4931325347643,2209.514448542818) translate(-762.4931325347643,-2209.514448542818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 776.105801951431 2202.7081138344847 L 762.4931325347643 2209.514448542818 L 776.105801951431 2216.3207832511516 Z"/></g></g></g><g/><g/><g/></g></svg>
Lab exchange.txt
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.RobinHuisman
Size
... ... @@ -1,1 +1,0 @@
1 -2.2 KB
Content
... ... @@ -1,50 +1,0 @@
1 -title Digital Lab exchange Process
2 -
3 -participant Lab
4 -participant TerraIndex
5 -participant TerraIndex_User
6 -
7 -
8 -==**Labdelivery data**==
9 -note over Lab,TerraIndex_User:TerraIndex retrieves the 'menu-card' so the user can order analysis.
10 -TerraIndex->Lab:Request the Client codes for a Customer
11 -Lab->TerraIndex:return the active Client codes
12 -TerraIndex->Lab:LabDelivery Data/File for a Customer Client Code
13 -Lab->TerraIndex:return the Labdelivery SIKB0101 File.
14 -TerraIndex->TerraIndex:Store and import into User database.
15 -
16 -==**Labassignment**==
17 -note over Lab,TerraIndex_User:TerraIndex sends the 'order' so the lab can process the samples.
18 -TerraIndex->TerraIndex_User:Show available Lab and Client codes
19 -TerraIndex_User->TerraIndex_User:Select Lab and Client code
20 -TerraIndex->TerraIndex_User:Show available Analysis Sets and Urgencies
21 -TerraIndex_User->TerraIndex_User:Select the samples
22 -TerraIndex_User->TerraIndex_User:Select the needed analysis sets
23 -TerraIndex_User->TerraIndex:Store/Save the labassignment
24 -TerraIndex_User->TerraIndex:Send to the lab
25 -TerraIndex->TerraIndex:Generate SIKB0101 Labassignment file
26 -TerraIndex->Lab:Send file to the Lab
27 -note over Lab,TerraIndex:Option A
28 -Lab->TerraIndex:Acknowledge a success received
29 -TerraIndex->TerraIndex:Save status
30 -TerraIndex->TerraIndex_User:Show status and prevent further editing
31 -note over Lab,TerraIndex:Option B
32 -Lab->TerraIndex:Return Order price PDF
33 -TerraIndex->TerraIndex_User:Show Price and PDF
34 -TerraIndex_User->TerraIndex:Approve Order
35 -TerraIndex->Lab:Approve Order
36 -Lab->TerraIndex:Acknowledge a success received
37 -TerraIndex->TerraIndex:Save status
38 -TerraIndex->TerraIndex_User:Show status and prevent further editing
39 -
40 -==**Labresults**==
41 -note over Lab,TerraIndex_User:TerraIndex retrieves the 'results' so the user can order report.
42 -TerraIndex->Lab:Requests the Changed assignments since last asking
43 -Lab->TerraIndex:return the changed orders with status
44 -TerraIndex->Lab:Request the results of a Ready order
45 -Lab->TerraIndex:return the Analysisresults SIKB0101 File.
46 -TerraIndex->TerraIndex:Store and import into User database.
47 -TerraIndex->TerraIndex_User:
48 -TerraIndex_User->TerraIndex_User:Asessments and Report results
49 -
50 -