Version 35.1 by Robin Huisman on 2024/07/31 23:08

Show last authors
1 = Exporting lab results to TerraIndex for a customer =
2
3 The file that is used for the examples: [[Example file>>attach:LabResults.xml]]
4
5 {{toc/}}
6
7 {{warning}}
8 SIKB Version 9 is obsolete, and replaced with version 13 or version 14. Latest version can be found here: [[https:~~/~~/www.sikb.nl/datastandaarden/sikb0101-bodembeheer>>url:https://www.sikb.nl/datastandaarden/sikb0101-bodembeheer]]
9 {{/warning}}
10
11 == What is a Lab result file? ==
12
13 A lab result file is an XML file contains all the lab results. The results are mapped tot their analyses samples. A lab result will be matched to the corresponding analyses sample based on the: “Labassignment Guid/SIKB-ID, projectCode, AnalysisSample Guid/SIKB-ID”
14
15
16 **Example files**: [[attach:labresultaat_MengmonsterGr.xml||rel="noopener noreferrer" target="_blank"]], [[attach:labresultaat_IndividueelGr.xml||rel="noopener noreferrer" target="_blank"]], [[attach:labresultaat_IndividueelGw.xml||rel="noopener noreferrer" target="_blank"]]
17
18 **XSD**: Ask or SIKB Members can download from: [[https:~~/~~/www.sikb.nl/datastandaarden/richtlijnen/sikb0101>>url:https://www.sikb.nl/datastandaarden/richtlijnen/sikb0101]]
19
20 **Controle XSLT**:
21
22 **Domaintable files**: [[immetingen lookup v14.8.0.xml>>url:https://wiki.terraindex.com/bin/download/Implementation%20documentation/Setting%20up%20Lab%20communication%20by%20REST%20services%20with%20TerraIndex/Lab%20assignment%20file/WebHome/immetingen%20lookup%20v14.8.0.xml?rev=1.2]]   [[imsikb0101 lookup v14.8.0.xml>>url:https://wiki.terraindex.com/bin/download/Implementation%20documentation/Setting%20up%20Lab%20communication%20by%20REST%20services%20with%20TerraIndex/Lab%20assignment%20file/WebHome/imsikb0101%20lookup%20v14.8.0.xml?rev=1.1]]
23 extracted from: **[[https:~~/~~/codes.sikb.nl>>url:https://codes.sikb.nl/]] **
24
25
26
27 [[image:IMSIKB0101 - Labresults.png]]
28
29 == File structure ==
30
31
32 (% class="table-hover" %)
33 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**Unit**
34 |(% colspan="1" rowspan="1" %)**Versie**|(% colspan="1" rowspan="1" %)The SIKB version of the lab assignment. This must be: **9.0.0**|(% colspan="1" rowspan="1" %)string
35 |(% colspan="1" rowspan="1" %)**Applicatiecode**|(% colspan="1" rowspan="1" %)This is the application code of your LIMS system that you will get from TerraIndex. Be careful this is not the same code as your laboratory number|(% colspan="1" rowspan="1" %)Integer
36 |(% colspan="1" rowspan="1" %)**Datum**|(% colspan="1" rowspan="1" %)The date on which the lab result file was made|(% colspan="1" rowspan="1" %)(((
37 date
38
39 yyyy-mm-dd
40 )))
41 |(% colspan="1" rowspan="1" %)**Klantcode**|(% colspan="1" rowspan="1" %)This should be the customer code in the “//klantcode//” in the lab assignment|(% colspan="1" rowspan="1" %)string
42 |(% colspan="1" rowspan="1" %)**Laboratorium**|(% colspan="1" rowspan="1" %)The number you get from TerraIndex. This needs to be the same as the laboratorium number in the lab delivery file|(% colspan="1" rowspan="1" %)integer
43 |(% colspan="1" rowspan="1" %)**Taal**|(% colspan="1" rowspan="1" %)(((
44 The language of the lab results this depends on the XSD used.
45
46 dut = dutch
47
48 eng = English
49 )))|(% colspan="1" rowspan="1" %)string
50 |(% colspan="1" rowspan="1" %)**Projectgegevens**|(% colspan="1" rowspan="1" %)This section contains all the result information|(% colspan="1" rowspan="1" %)-
51
52 = Questions from Luca to Robin =
53
54 1. Do I need to add any other classes to the filestructure description apart from the ones below (those related to the IMMetingen::Result Class) ?
55 1. uit de mail van Robin : "Je kunt de Labassignment pagina als basis gebruiken, en de extra klasses vanuit de Voorbeeld bestand LabResult aan toevoegen."
56 11. De link naar een "LabResult" voorbeeld bestand wijst naar een directory. Daar staat wel een directory met naam "Example XML 14.8.01". maar die folder bevat niet 1 maar 4 verschillende "labresult_*" XMLs. Welke moet ik hebben? allemaal? en hoe moet ik afleiden welke klasses "extra" zijn? welke tool zou je aanbevelen om xml te lezen. ik heb er nog nooit mee gewerkt.
57 1. Do i need to add screenshots of the xml classes as in the labassignment and labdelivery pages? if so, what software did you use?
58 1. In Validation: ValidationScore. What are STOWA Protocols? is it Stichting Toegepast Onderzoek Waterbeheer?
59 1. What to do with the domain tables refered to in the descriptions? Does it make sense to reference them? Should i translate the names of the domain tables or is that static? are they translated already? who manages these? is it SIKB stuff?
60 1. in the section MeasureUncertainty > link to pdf file in description is invalid. What should it be?
61 1. SIKB 14 Parameter result combinations> first sentence makes no sense to me. Please review so i can translate.
62 1. What should i do with the sections from "Structure projectgegevens" to "What to exchange to store the right results?"? Is this a result of a copy paste and can they be discarded? If not, what classes do they refer to and where can i find the descriptions to be translated?
63
64 (% class="wikigeneratedid" %)
65 ~==== Added by luca: all Classes related to "IMMetingen::Results"
66
67 ==== MeasureResult ====
68
69
70 |**Attribute Name**|**Description**
71 |(((
72 **numericValue** Measure
73 )))|Numeric Value - the numerical value of the observation. When no unit for the measurement is known, the unit 'Dimensionless' should be used.
74 |(((
75 **valueProcessingMethod** GenericName
76 )))|(((
77 Value Processing Method - a mathematical/statistical operation that is applied while the method of value determination/analysis standard remains unchanged.
78
79 The operation can be applied to a series of measurement values with the same parameter (quantity/component or typing or taxon or object) or to a series of measurement values with the same analysis method that are summed up to a sum parameter.
80
81 Domain table: Value Processing Method
82 )))
83 |(((
84 **qualityIndicatorType** GenericName
85 )))|(((
86 Quality Indicator/Judgement -> Detection limit, etc.
87
88 Domain table: Quality Judgement
89 )))
90
91 ==== Accuracy ====
92
93
94 |**Attribute Name**|**Description**|**Unit**
95 |(((
96 **recovery** Float
97 )))|(((
98 The part (percentage) of material that is recovered in an analysis.
99 )))|Percentage [%]
100 |(((
101 **spread** Float
102 )))|Spread = the error measured (in %) in multiple repeated measurements of the same sample/situation (and by the same laboratory technician/measuring device).|Percentage [%]
103 |(((
104 **measurementUncertainty** Float
105 )))|Measurement uncertainty = the total error in the analysis (in %), considering sample collection, variation in measuring equipment/lab technician, and repeated measurements. It practically represents the value indicating the uncertainty of the measurement result.|Percentage [%]
106 |(((
107 **zScore** Float
108 )))|This is an optional value that indicates how the measurement value scores in relation to other techniques or laboratories. This could be from interlaboratory comparisons or comparisons between different measuring equipment.|
109 |(((
110 **drift** Float
111 )))|This is the degree of sensor drift over time (in %/year). Sensors will age over time and experience more or less drift depending on the conditions. This drift can be quantified and depends partly on age. This is especially true for online sensors.|Percentage [%]
112
113 ==== ====
114
115 ==== Validation ====
116
117
118 This DataClass contains optional attributes and indicates which validation steps the measureResult (measurement value) has undergone.
119
120
121 |**Attribute Name**|**Description**
122 |(((
123 **automatedControl** GenericName
124 )))|(((
125 The first-line control is often an automated check of whether the measurement value is correct. It uses a domain table: ValidationSteps.
126
127 Various steps can be distinguished. For example, a check on hard/soft limits, ion balance, bandwidth, and dissolved not exceeding total analysis (chemistry) are part of the first-line control. The control can be approved or disapproved (see quality judgment). Different possible values are described in the domain table ValidationSteps. Example: pH of 78 and water temperature of 123 degrees Celsius are hard limits (not possible); pH=10.0 is a soft limit because the value is extremely high (but not impossible).
128
129 Domain table: ValidationSteps
130 )))
131 |(((
132 **expertControl** GenericName
133 )))|(((
134 The second-line control (ExpertControl) is often a specialist check of whether the measurement value is correct. It also uses a domain table: ValidationSteps. Here, different steps can be distinguished as well. This analysis usually does not follow immediately after arrival but is performed periodically. Controls on correlation between measurement stations, history, correlations between parameters, and specialist expertise belong to the second-line control. The control can be approved or disapproved (see quality judgment). Different possible values are described in the domain table ValidationSteps.
135
136 Domain table: ValidationSteps
137 )))
138 |(((
139 **validationScore** GenericName
140 )))|(((
141 Score of the validation steps followed, according to the __**STOWA protocols**__. The attribute uses the domain table ValidationScore. The score value ranges from 0 to 5
142
143 Domain table: ValidationScore
144 )))
145
146 ==== ====
147
148 ==== AnalyticResult ====
149
150
151 The analyzed result of an observation, typically originating from a laboratory.
152
153
154 |=**Attribute Name**|=**Description**
155 |(((
156 **limitSymbol** CharacterString
157 )))|(((
158 LimietSymbool, allowed values: '<' en '>'.
159
160 '<' stands for 'less than the lowest threshold'
161
162 '>' stands for 'greater than the highest threshold'
163
164 The boundary for the limit symbol can be specified in the DeterminationLimits (LimitSymbolReferenceCode) as a reference with the actual value of the limit. The value can be included in the exchange in two ways:
165
166 1) as a CData block: <![CDATA[<]]> or <![CDATA[>]]>
167
168 2) as HTML code: '&amp; lt;' or '&amp; gt;'
169 )))
170 |(((
171 **alphanumericValue** CharacterString
172 )))|Textual value associated with an analysis result
173
174 ==== ====
175
176 ==== MeasureUncertainty ====
177
178
179 Measurement uncertainty in the result. This is the expanded measuring uncertainty as described in the document: [[http:~~/~~/www.nordicinnovation.net/nordtestfiler/tec537.pdf>>http://www.nordicinnovation.net/nordtestfiler/tec537.pdf]]
180
181
182 |=**Attribute Name**|=**Description**
183 |(((
184 **distributionType** GenericName
185 )))|(((
186 The type of statistical distribution associated with the observation.
187
188 Domain table: ProbabilityDistribution
189 )))
190 |(((
191 **statisticalParameter** Measure
192 )))|(((
193 Parameters that determine the shape and size of the statistical distribution.
194
195 Domain table: StatisticalParameter
196 )))
197
198 ==== ====
199
200 ==== DeterminationLimits ====
201
202
203 |=**Attribute Name**|=**Description**
204 |(((
205 **detectionLimit** Measure
206 )))|(((
207 The smallest value of the measured content or the observed value of the parameter in a sample, which can still be determined with a certain reliability by the laboratory. Conventionally, this is the amount that corresponds to three times the standard deviation at that level (thus, relative standard deviation is 33%).
208
209
210 The standard deviation is established under (intra-lab) reproducibility. Also known in English as 'LOD' (Limit of Detection). See also: [[Wikipedia on Detection Limit>>url:https://en.wikipedia.org/wiki/Detection_limit]]
211 )))
212 |(((
213 **reportingLimit** Measure
214 )))|The smallest value of the measured content or the observed value of the parameter in a sample, agreed upon with the client by the executing laboratory, which is reported to the client. The reporting limit is at least the detection limit and is sometimes specified in an accreditation scheme like AS3000.
215 |(((
216 **limitSymbolReferenceCode **GenericName
217 )))|(((
218 The threshold value that the limitSymbol of AnalyticResult refers to.
219
220 Domain table: LimitSymbolReference
221 )))
222 |(((
223 **quantitationLimit** Measure
224 )))|The smallest value of the measured content or the observed value of the parameter in a sample, which can still be determined with a certain reliability by the laboratory. Conventionally, this is the amount that corresponds to ten times the standard deviation at that level (thus, relative standard deviation is 10%). Also known in English as 'LOQ' (Limit of Quantitation). At this value, the rate of 'false negatives' is less than 1%.
225
226 === ===
227
228 === Structure projectgegevens ===
229
230 (% style="text-align:center" %)
231 [[image:1637656734277-997.png]]
232
233
234 (% class="table-hover" %)
235 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**Unit**
236 |(% colspan="1" rowspan="1" %)**idopdracht**|(% colspan="1" rowspan="1" %)The TerraIndex id of the lab assignment the result belongs to.|(% colspan="1" rowspan="1" %)-
237 |(% colspan="1" rowspan="1" %)**projectcode**|(% colspan="1" rowspan="1" %)The project code of the project as it was delivered in the lab assignment|(% colspan="1" rowspan="1" %)string
238 |(% colspan="1" rowspan="1" %)**projectnaam**|(% colspan="1" rowspan="1" %)The name of the project as it was delivered in the lab assignment.|(% colspan="1" rowspan="1" %)string
239 |(% colspan="1" rowspan="1" %)**ordernummer**|(% colspan="1" rowspan="1" %)Not relevant. The order in which the lab result could be shown|(% colspan="1" rowspan="1" %)string
240 |(% colspan="1" rowspan="1" %)**projectleider**|(% colspan="1" rowspan="1" %)The project leader of the customer. This needs the be the “contactpersoon” from the lab assignment with the code PL|(% colspan="1" rowspan="1" %)string
241 |(% colspan="1" rowspan="1" %)**status**|(% colspan="1" rowspan="1" %)The status of the lab assignment. See Labstatus Codegroup 76 in the attachments for all the options.|(% colspan="1" rowspan="1" %)integer
242 |(% colspan="1" rowspan="1" %)**datumverwacht**|(% colspan="1" rowspan="1" %)The date on which the lab expects the certificate to be available|(% colspan="1" rowspan="1" %)Date
243 yyyy-mm-dd
244 |(% colspan="1" rowspan="1" %)**certificaatnummer**|(% colspan="1" rowspan="1" %)The number of the certificate that will be send to the user.|(% colspan="1" rowspan="1" %)string
245 |(% colspan="1" rowspan="1" %)(((
246 **analysemonsters**
247
248
249
250 )))|(% colspan="1" rowspan="1" %)A table containing all the analysis sample with their corresponding results|(% colspan="1" rowspan="1" %)-
251
252 == Structure analysemonsters ==
253
254 (% style="text-align:center" %)
255 [[image:1637656914799-534.png]]
256
257 (% class="table-hover" %)
258 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**Unit**
259 |(% colspan="1" rowspan="1" %)**Idanlmons**|(% colspan="1" rowspan="1" %)The unique identification code of the analyses sample as given in the lab assignment file|(% colspan="1" rowspan="1" %)string
260 |(% colspan="1" rowspan="1" %)**Anlmons**|(% colspan="1" rowspan="1" %)The name of the analyses sample as given in the lab assignment file|(% colspan="1" rowspan="1" %)string
261 |(% colspan="1" rowspan="1" %)**Certificaat**|(% colspan="1" rowspan="1" %)The way the name of the sample should be on the certificate. This is also given in the lab assignment|(% colspan="1" rowspan="1" %)string
262 |(% colspan="1" rowspan="1" %)**Monstersoort**|(% colspan="1" rowspan="1" %)The code referencing the type the sample is. Check the attachment: Sample type codegroup 51 for all the options|(% colspan="1" rowspan="1" %)integer
263 |(% colspan="1" rowspan="1" %)**Status**|(% colspan="1" rowspan="1" %)The status of the sample. See Labstatus Codegroup 76 in the attachments.|(% colspan="1" rowspan="1" %)integer
264 |(% colspan="1" rowspan="1" %)**Datumverwacht**|(% colspan="1" rowspan="1" %)The date on which the results for the sample are expected|(% colspan="1" rowspan="1" %)(((
265 date
266
267 yyyy-mm-dd
268 )))
269 |(% colspan="1" rowspan="1" %)**Volgorde**|(% colspan="1" rowspan="1" %)Is a unused field in TerraIndex|(% colspan="1" rowspan="1" %)integer
270 |(% colspan="1" rowspan="1" %)**analyseresultaten**|(% colspan="1" rowspan="1" %)A table containing all the measurement values of the analysis samples.|(% colspan="1" rowspan="1" %)-
271
272 == Structure analyseresultaten ==
273
274 (% style="text-align:center" %)
275 [[image:1637657248973-790.png]]
276
277 (% class="table-hover" %)
278 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**Unit**
279 |(% colspan="1" rowspan="1" %)**componentcode**|(% colspan="1" rowspan="1" %)The SIKB component code. See ComponentCode Codegroup 52 in the attachements for all possible options.|(% colspan="1" rowspan="1" %)integer
280 |(% colspan="1" rowspan="1" %)**meetwaarde**|(% colspan="1" rowspan="1" %)What the measured value is for the analyses|(% colspan="1" rowspan="1" %)float
281 |(% colspan="1" rowspan="1" %)**meetwaardeomschrijving**|(% colspan="1" rowspan="1" %)Alpha numerical description of the result|(% colspan="1" rowspan="1" %)string
282 |(% colspan="1" rowspan="1" %)**eenheidcode**|(% colspan="1" rowspan="1" %)The unit of the measured value. See Unit CodeGroup 40 in the attachements for all possible options|(% colspan="1" rowspan="1" %)integer
283 |(% colspan="1" rowspan="1" %)**referentiecode**|(% colspan="1" rowspan="1" %)This defines what the reference for the measurement value is. See ReferenceType CodeGroup 41 for all the possible options|(% colspan="1" rowspan="1" %)integer
284 |(% colspan="1" rowspan="1" %)**analysenorm**|(% colspan="1" rowspan="1" %)Against which standard the analysis has been tested. See Laboratory method Codegroup 57 in the attachments for all the option. I your standard is not in the list leave this empty|(% colspan="1" rowspan="1" %)integer
285 |(% colspan="1" rowspan="1" %)**datummonstervoorbehandeling**|(% colspan="1" rowspan="1" %)The date on which the sample was pre-treated. We don’t do anything with this value|(% colspan="1" rowspan="1" %)(((
286 date
287
288 yyyy-mm-dd
289 )))
290 |(% colspan="1" rowspan="1" %)**opmerking**|(% colspan="1" rowspan="1" %)A remark for this result|(% colspan="1" rowspan="1" %)string
291 |(% colspan="1" rowspan="1" %)**certificering**|(% colspan="1" rowspan="1" %)Under which certificate the analyses has been done. See CertificateCode Codegroup 48 for all the possible options. If you do not find you code leave this field empty|(% colspan="1" rowspan="1" %)integer
292 |(% colspan="1" rowspan="1" %)**status**|(% colspan="1" rowspan="1" %)The status of the labresult in the labassignemnt. See Labstatus Codegroep 76 in the attachments|(% colspan="1" rowspan="1" %)integer
293 |(% colspan="1" rowspan="1" %)**datumverwacht**|(% colspan="1" rowspan="1" %)Date on which the analyses results are expected.|(% colspan="1" rowspan="1" %)date
294
295 = =
296
297 = What to exchange to store the right results? =
298
299 The data stream ‘Lab Result’ is the feedback of analysis results on the requested lab assignment at a laboratory.
300
301 **Important fields:**
302
303 |=Entity|=Fixed value|=Remark
304 |**Project**|lokaalID (GUID)|As submitted in the Lab assignment XML
305 | |projectCode|As submitted in the Lab assignment XML
306 |**Labassignment**|lokaalID (GUID)|As submitted in the Lab assignment XML
307 |**Sample (analysis sample)**|lokaalID (GUID)|As submitted in the Lab assignment XML, if assignment in SIKB<11, but results in >=11; fill with old BISNR/IDANLMONS.
308 | |Name|As submitted in the Lab assignment XML
309 |**Sample (field sample)**|(((
310 lokaalID (GUID)
311 )))|Only if this entity is included, which is optional.
312
313 **Remarks:**
314
315 * The entity ‘Analysis Result’ does not yet have a fixed lokaalID (GUID), connected laboratories cannot yet guarantee that a unique ID will be generated.
316 * For Asbestos and Asphalt, new samples are also created at the Lab, which are therefore fed back with a reference to the sample from which they are derived.
317 * There is still a desire to feedback from a lab whether an analysis sample has been modified at the lab in terms of sub-samples. For example, if a jar has broken and been replaced with another jar. This has not yet been included in current practices.
318
319 **Importing the data can be done based on the following steps:**
320
321 * Search Project with Project.lokaalID (as placed in the Lab assignment XML).
322 * Search Project with Project.ProjectCode (as placed in the Lab assignment XML) if searching on Project.LokaalID yields no results.
323 * Search Project and Lab assignment with Labassignment.LokaalID (as placed in the Lab assignment XML) if the Project has not yet been found.
324 * Search Project (if Project not yet found) and Analysis Sample with Sample.LokaalID as GUID (as placed in the Lab assignment XML, version 11 and higher).
325 * Search Project (if Project not yet found) and Analysis Sample with Sample.LokaalID as BISNR (as placed in the Lab assignment XML, versions lower than 11, 'old' idanlmons/BISNR).
326 * Search Analysis Sample with Sample.Name within the project, if the Analysis Sample has not been found but the project has.
327
328 **What can be imported?**
329
330 * If an Analysis Sample is found, the Analysis Results are always updated or added.
331 * If Project is found, but the analysis sample is not; then this analysis sample is imported as a new analysis sample with all results.
332 * (If it concerns water samples, a new fictional/temporary measuring point and filter could be created.)
333
334 = SIKB 14 Parameter result combinations =
335
336 In the SIKB0101 version 14 exchange of **__labresults is combination needed __**for exchanging the result parameters of the Lab analysis.
337 It's based on PhysicalProperty, the combination of Quantity, Parameter and Condition.
338 \\[[image:1713183008796-215.png]]
339 *small remark, condition will be used as: [0..1]
340
341 The combinations are defined for different compartiments like soil/ground, groundwater, wastewater.
342 Below are some examples, and some attachments included to support all combinations.
343
344 **2 Examples for Soil:**
345
346 |__**Parameter Name**__|__**Parameter ID**__|__**Quantity ID**__|__**Quantity name**__|__**Condition ID**__|__**Condition Name**__
347 |lood|1116|2725|Massafractie|1|t.o.v. drooggewicht
348 |minerale olie|1200|2725|Massafractie|93|koolwaterstoffractie C10-C40 / drooggewicht
349
350 **2 Examples for Groundwater:**
351
352 |__**Parameter Name**__|__**Parameter ID**__|__**Quantity ID**__|__**Quantity name**__|__**Condition ID**__|__**Condition Name**__|
353 |cyanide-complex|2595|2720|(massa)Concentratie|9|opgeloste fractie (bijv. na filtratie)
354 |som 29 dioxines (Bbk, 1-10-2010, als TEQ)|2160|2720|(massa)Concentratie|10|uitgedrukt in Toxiciteit equivalenten
355
356 **2 Examples for Wastewater:**
357
358 |__**Parameter Name**__|__**Parameter ID**__|__**Quantity ID**__|__**Quantity name**__|__**Condition ID**__|__**Condition Name**__|
359 |cyanide-complex|2595|2720|(massa)Concentratie|8|Niet van toepassing
360 |som 29 dioxines (Bbk, 1-10-2010, als TEQ)|2160|2720|(massa)Concentratie|10|uitgedrukt in Toxiciteit equivalenten
361
362 __**Full combinations sheet:  **__[[attach:Full List of AnalysisResult combinations 04-2024.xlsx||rel="noopener noreferrer" target="_blank"]]
363
364
365
366
TerraIndex
asd