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

From version 1.2
edited by Roelof Zwaan
on 2021/11/23 10:03
Change comment: There is no comment for this version
To version 17.1
edited by Robin Huisman
on 2024/04/05 16:20
Change comment: There is no comment for this version

Summary

Details

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