Wiki source code of Lab result file - SIKB0101 v14

Last modified by Robin Huisman on 2025/02/27 09:44

Show last authors
1 = Reporting lab results to TerraIndex for a customer =
2
3 Returning the labresults to the client, that requested the analysis on samples.
4
5 (% class="box infomessage" %)
6 (((
7 More information about SIKB0101 can be found here: [[https:~~/~~/www.sikb.nl/datastandaarden/sikb0101-bodembeheer>>url:https://www.sikb.nl/datastandaarden/sikb0101-bodembeheer]]
8 )))
9
10
11 {{toc/}}
12
13 == What is a Lab result file? ==
14
15 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”
16
17
18 **Example files**: [[attach:labresult_IndividualGw.xml||rel="noopener noreferrer" target="_blank"]], [[attach:labresult_IndividualGr.xml||rel="noopener noreferrer" target="_blank"]], [[attach:labresult_MixedSampleGr.xml||rel="noopener noreferrer" target="_blank"]]
19
20 **XSD**: Ask or SIKB Members can download from: [[https:~~/~~/www.sikb.nl/datastandaarden/richtlijnen/sikb0101>>url:https://www.sikb.nl/datastandaarden/richtlijnen/sikb0101]]
21
22 **Controle XSLT**: [[attach:Labresult_Controle.xsl||rel="noopener noreferrer" target="_blank"]]
23
24 **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]]
25 extracted from: **[[https:~~/~~/codes.sikb.nl>>url:https://codes.sikb.nl/]] **
26
27
28 {{toc/}}
29
30
31 == Model Structure ==
32
33 [[image:IMSIKB0101 - Labresults.png]]
34
35 === Metadata ===
36
37
38 (% class="table-hover" %)
39 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**Unit**
40 |(% colspan="1" rowspan="1" %)**version**|(% colspan="1" rowspan="1" %)The SIKB version of the lab results file. This must be: **14.8.0 or 14.9.0**|(% colspan="1" rowspan="1" %)string
41 |(% colspan="1" rowspan="1" %)**application**|(% 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. Your applicationcode can be requested of found here: [[https:~~/~~/codes.sikb.nl/tablet/domain-table-details/50be26c9-5e66-46c9-9373-9d402762876f>>https://codes.sikb.nl/tablet/domain-table-details/50be26c9-5e66-46c9-9373-9d402762876f]] |(% colspan="1" rowspan="1" %)Integer
42 |(% colspan="1" rowspan="1" %)**reportDate**|(% colspan="1" rowspan="1" %)The date on which the lab result file was made|(% colspan="1" rowspan="1" %)(((
43 date
44
45 yyyy-mm-dd
46 )))
47 |(% colspan="1" rowspan="1" %)**supplier**|(% 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. Your supplier code can be requested of found here: [[https:~~/~~/codes.sikb.nl/tablet/domain-table-details/dc2ad4df-f958-4146-aee8-31f8c2f1c74b>>https://codes.sikb.nl/tablet/domain-table-details/dc2ad4df-f958-4146-aee8-31f8c2f1c74b]]|(% colspan="1" rowspan="1" %)string
48 |(% colspan="1" rowspan="1" %)**dataflow**|(% colspan="1" rowspan="1" %)Should be '1' in this case, what stands voor 'AnalysisResults'. Other option can be found here: [[https:~~/~~/codes.sikb.nl/tablet/domain-table-details/79365ded-f56a-4f10-ba45-16bac69752d9>>https://codes.sikb.nl/tablet/domain-table-details/79365ded-f56a-4f10-ba45-16bac69752d9]]|(% colspan="1" rowspan="1" %)integer
49
50 === Labassignment ===
51
52 The labassignment is the same as in the labassignment file: [[Lab assignment file - SIKB0101 v14>>https://wiki.terraindex.com/bin/view/Implementation%20documentation/Setting%20up%20Lab%20communication%20by%20REST%20services%20with%20TerraIndex/Lab%20assignment%20file/#]]
53
54 With 3 differences/additions:
55
56 * Status on the labassignment itself
57 * Status on the labassignment.sample link
58 * The labassignment Report number can be send in: LabAssignmentCertificate
59
60 |**Attribute**|**Notes**
61 |(((
62 **identification** NEN3610ID
63 )))|(((
64 A unique code that is created when the object is created for the first time.
65 )))
66 |(((
67 **operatingLab** GenericName
68
69
70 )))|(((
71 Code of the laboratory to which the assignment is assigned.
72
73 Domaintable: [[Meetinstantie / Measuring Company>>url:https://codes.sikb.nl/tablet/domain-table-details/4e270f0a-cefe-446e-9d4d-6666c91180a8]]
74 )))
75 |(((
76 **startTime** DateTime
77 )))|Dispatch date of the lab assignment
78 |(((
79 **customerCode** CharacterString
80 )))|Client code or debtor number of the client as known by the laboratory
81
82 === LabAssignmentStatus ===
83
84 |**Attribute Name**|**Description**
85 |(((
86 **statusType **GenericName
87 )))|(((
88 The status of the lab assignment.
89
90 Use the value '5' for final reported results.
91 Use other values, or '4', for conceptual values.
92
93 Domain table: [[Labassignment Status>>https://codes.sikb.nl/tablet/domain-table-details/5c6ab373-693e-4039-af8d-93206ce4ebb4]]
94 )))
95 |(((
96 **dateExpected **DateTime
97 )))|(((
98 The date the results can be expected, in case of conceptual results.
99
100 If final, fill with datetime.now.
101 )))
102
103 === LabAssignmentCertificate ===
104
105 |**Attribute Name**|**Description**
106 |(((
107 **labCertificateNumber **CharacterString
108 )))|The number of the certificate that will be send to the user/client, and what is used in the PDF file as order or report number of the laboratory.
109 |(((
110 **certification **GenericName
111 )))|(((
112 Under which certificate the analyses has been done. If you do not find you code leave this field empty
113
114 Domain table: [[Certification Coding>>https://codes.sikb.nl/tablet/domain-table-details/df7ffd7c-192c-44f7-ae9f-0461d9266b30]]
115 )))
116
117 === LabAssignmentRequest ===
118
119 The connection between the labassignment and the samples with analysisrequests, as send in the labassignment.
120
121 If not retreived in a labassignment, make it yourself so we can import is as new samples.
122 Just fill what you can fill, otherwise leave field empty, based on documentation here: [[Labassignment file - SIKB0101 v14>>https://wiki.terraindex.com/bin/view/Implementation%20documentation/Setting%20up%20Lab%20communication%20by%20REST%20services%20with%20TerraIndex/Lab%20assignment%20file/#]]
123
124
125 === Project ===
126
127 Activity that leads to the collection of soil data, as send in the labassignment.
128 It will be used to search the correct project/investiation to bind or create the samples.
129
130 |**Attribute**|**Notes**
131 |(((
132 **identification** NEN3610ID
133 )))|The unique identifier of the Project in TerraIndex and in the whole Exchange Chain, as send in the labassignment
134 |(((
135 **name** CharacterString
136
137 [0..1]
138 )))|The name of the project where the lab results are for, as send in the labassignment
139 |(((
140 **projectCode** CharacterString
141 )))|The project code of the project where the lab results are for, as send in the labassignment
142
143 === Sample (AnalysisSample) ===
144
145 The analysissamples with analysisrequests, as send in the labassignment. The fieldsamples form the labassignment can be skipped in the results file.
146
147 If not retreived in a labassignment, make it yourself so we can import is as new analysissamples.
148 Just fill what you can fill, based on documentation here: [[Labassignment file - SIKB0101 v14>>https://wiki.terraindex.com/bin/view/Implementation%20documentation/Setting%20up%20Lab%20communication%20by%20REST%20services%20with%20TerraIndex/Lab%20assignment%20file/#]]
149
150 (% class="box infomessage" %)
151 (((
152 Please keep these scenario's in mind: [[Analysissample scenario's>>https://wiki.terraindex.com/bin/view/Implementation%20documentation/Setting%20up%20Lab%20communication%20by%20REST%20services%20with%20TerraIndex/Lab%20assignment%20file/#HWhatsamplescenario27sareexchanged3F]]
153 )))
154
155 |**Attribute**|**Notes**
156 |(((
157 **identification** NEN3610ID
158 )))|The unique identifier of TerraIndex for the analyses sample, to keep this value unique forever in the whole exchange chain.
159 |(((
160 **name** CharacterString
161
162 [0..1]
163 )))|Name given to the sample
164 |(((
165 **specimenType** GenericName
166
167 [0..1]
168 )))|(((
169 Type of Sample- Fieldsample, Analysissample
170
171 For analysissamples fill with value '10'.
172
173 Domaintable: [[MonsterType / SampleType>>url:https://codes.sikb.nl/tablet/domain-table-details/9f956093-baad-4adb-b74d-20c00cef6ab4]]
174 )))
175 |(((
176 **materialClass** GenericName
177
178
179 )))|(((
180 An SIKB code for the matrix type. Soil, Groundwater etc..
181
182 Domaintable: [[Compartiment / Matrix>>url:https://codes.sikb.nl/tablet/domain-table-details/6134f3bb-6048-431d-a130-01290d84172c]]
183 )))
184
185 === Analysis ===
186
187 The measured parameter with it's value and process.
188
189 |**Attribute Name**|**Description**
190 |(((
191 **identification** NEN3610ID
192 )))|The unique identifier of the AnalysisResult, to keep this value unique forever in the whole exchange chain.
193 If not possible to store this in the Lims, generate on the fly.
194 (% class="info" %)|(((
195 **physicalProperty **PhysicalProperty
196 )))|(((
197 The combination of Quantity, Parameter and Condition to provide the parameter that has been measured.
198 **[[See this chapter for the combinations, and the CAS-NR's. >>https://wiki.terraindex.com/bin/view/Implementation%20documentation/Setting%20up%20Lab%20communication%20by%20REST%20services%20with%20TerraIndex/Lab%20result%20file/#HSIKB14Parameterresultcombinations]]**
199
200
201 )))
202 |**result **AnalyticResult|The result of the analysis, see next chapter.
203 |**procedure **AnalysisProcess|The process that has been used to measure/determine the result, see next chapter.
204
205 === AnalyticResult (inherited from MeasureResult) ===
206
207 The actual reported value, result of detection limit.
208
209 |**Attribute Name**|**Description**
210 |(((
211 **numericValue** Measure
212 )))|(((
213 Numeric Value - the numerical value of the observation. When no unit for the measurement is known, the unit 'Dimensionless' should be used.
214
215 Domaintable for Units: [[Eenheid>>https://codes.sikb.nl/tablet/domain-table-details/04f4f467-021b-4218-baa8-9742ed977c61]]
216 )))
217 |(((
218 **valueProcessingMethod** GenericName
219 )))|(((
220 Value Processing Method - a mathematical/statistical operation that is applied while the method of value determination/analysis standard remains unchanged.
221
222 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.
223 \\Default the value '5' meaning 'Not available' can and should be used, besides leaving it empty.
224
225 Domain table: [[Value Processing Method>>https://codes.sikb.nl/tablet/domain-table-details/a2310c26-065f-4aec-9440-74892ec77753]]
226 )))
227 |(((
228 **qualityIndicatorType** GenericName
229 )))|(((
230 Quality Indicator/Judgement -> Detection limit, etc.
231 \\Default the value '0' meaning 'Not available' can and should be used, besides leaving it empty.
232 If there is a detectionlimit/reportinglimit, use: '4', meaning 'determenated with full detection limit'
233
234 Domain table: [[Quality Judgement>>https://codes.sikb.nl/tablet/domain-table-details/1e17d9e6-4e0e-4f88-8fe5-c71f6a7931db]]
235 )))
236
237 |(((
238 **limitSymbol** CharacterString
239 )))|(((
240 LimietSymbool, allowed values: '<' en '>'.
241
242 '<' stands for 'less than the lowest threshold'
243
244 '>' stands for 'greater than the highest threshold'
245
246 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:
247
248 1) as a CData block: <![CDATA[<]]> or <![CDATA[>]]>
249
250 2) as HTML code: '&amp; lt;' or '&amp; gt;'
251 \\Default the value is leaving it empty.
252 If there is a detectionlimit/reportinglimit, use: '<'
253 )))
254 |(((
255 **alphanumericValue** CharacterString
256 )))|Textual value associated with an analysis result
257
258 === AnalysisProcess ===
259
260 The process that has been used to detemine the measured value or result.
261
262 |**Attribute Name**|**Description**
263 |(((
264 **identification** NEN3610ID
265 )))|The unique identifier of the AnalysisProcess, it can be bound to multiple results at once.
266 |**analyticalTechnique **GenericName|(((
267 The used analytical technique to detemine the result.
268
269 Domain table: [[AnalyticalTechnique>>https://codes.sikb.nl/tablet/domain-table-details/04be2365-3d05-4903-a53e-edafef7111e8]]
270 )))
271 |**certification **GenericName|(((
272 The used certification to detemine the result.
273
274 Domain table: [[CertificationCode>>https://codes.sikb.nl/tablet/domain-table-details/04be2365-3d05-4903-a53e-edafef7111e8]]
275 )))
276 |**valuationMethod **GenericName|(((
277 The used valuation method to detemine the result.
278
279 Domain table: [[ValuationMethod>>https://codes.sikb.nl/tablet/domain-table-details/04be2365-3d05-4903-a53e-edafef7111e8]]
280 )))
281
282 = What to exchange to bind the results to the correct sample? =
283
284 The data stream ‘Lab Result’ is the feedback of analysis results on the requested lab assignment at a laboratory. At import we need to bind it onto the correct sample.
285
286 This requires importand field to match the samples in the xml to the samples in our database.
287
288 **Important fields:**
289
290 |=Entity|=Fixed value|=Remark
291 |**Project**|lokaalID (GUID)|As submitted in the Lab assignment XML
292 | |projectCode|As submitted in the Lab assignment XML
293 |**Labassignment**|lokaalID (GUID)|As submitted in the Lab assignment XML
294 |**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.
295 | |Name|As submitted in the Lab assignment XML
296 |**Sample (field sample)**|(((
297 lokaalID (GUID)
298 )))|Only if this entity is included, which is optional.
299
300 **Remarks:**
301
302 * The entity ‘Analysis Result’ does not yet have a fixed lokaalID (GUID), connected laboratories cannot yet guarantee that a unique ID will be generated.
303 * 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.
304 * 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.
305
306 **Importing the data will be done based on the following steps:**
307
308 * Search Project with Project.lokaalID (as placed in the Lab assignment XML).
309 * Search Project with Project.ProjectCode (as placed in the Lab assignment XML) if searching on Project.LokaalID yields no results.
310 * Search Project and Lab assignment with Labassignment.LokaalID (as placed in the Lab assignment XML) if the Project has not yet been found.
311 * 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).
312 * 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).
313 * Search Analysis Sample with Sample.Name within the project, if the Analysis Sample has not been found but the project has.
314
315 **What can be imported?**
316
317 * If an Analysis Sample is found, the Analysis Results are always updated or added.
318 * If Project is found, but the analysis sample is not; then this analysis sample is imported as a new analysis sample with all results.
319 * (If it concerns water samples, a new fictional/temporary measuring point and filter could be created.)
320
321 = SIKB 14 Parameter result combinations =
322
323 In the SIKB0101 version 14 exchange of **__labresults is combination needed __**for exchanging the result parameters of the Lab analysis.
324 It's based on PhysicalProperty, the combination of Quantity, Parameter and Condition.
325 \\[[image:1713183008796-215.png]]
326 *small remark, condition will be used as: [0..1]
327
328 Domaintables bound to these fields:
329
330 * Quantity -[[ Parameter, but only group/groep: Grootheid (Quantity)>>https://codes.sikb.nl/tablet/domain-table-details/0eafa483-2875-4c94-890d-66258a6b4d88]]
331 * Parameter -[[ Parameter, but mainly group/groep: Chemische Stof (Chemical substance)>>https://codes.sikb.nl/tablet/domain-table-details/0eafa483-2875-4c94-890d-66258a6b4d88]]
332 * Condition - Condition, but not group/groeps that refer to Chemical substance.
333
334 The combinations are defined for different compartiments like soil/ground, groundwater, wastewater.
335 Below are some examples, and some attachments included to support all combinations.
336
337 **2 Examples for Soil:**
338
339 |__**Parameter Name**__|__**Parameter ID**__|__**Quantity ID**__|__**Quantity name**__|__**Condition ID**__|__**Condition Name**__
340 |lood
341 (lead)|1116|2725|Massafractie
342 (Massfraction)|1|t.o.v. drooggewicht
343 (relative to dry weight)
344 |minerale olie
345 (minerale oil)|1200|2725|Massafractie
346 (Massfraction)|93|koolwaterstoffractie C10-C40 / drooggewicht
347 (hydrocarbon fraction C10-C40 / dry weight)
348
349 **2 Examples for Groundwater:**
350
351 |__**Parameter Name**__|__**Parameter ID**__|__**Quantity ID**__|__**Quantity name**__|__**Condition ID**__|__**Condition Name**__|
352 |cyanide-complex|2595|2720|(massa)Concentratie|9|opgeloste fractie (bijv. na filtratie)
353 |som 29 dioxines (TEQ)|2160|2720|(massa)Concentratie|10|uitgedrukt in Toxiciteit equivalenten
354
355 **2 Examples for Wastewater:**
356
357 |__**Parameter Name**__|__**Parameter ID**__|__**Quantity ID**__|__**Quantity name**__|__**Condition ID**__|__**Condition Name**__|
358 |cyanide-complex|2595|2720|(massa)Concentratie|8|Niet van toepassing
359 |som 29 dioxines (TEQ)|2160|2720|(massa)Concentratie|10|uitgedrukt in Toxiciteit equivalenten
360
361 (% class="box successmessage" %)
362 (((
363 **DOWNLOAD EXCELSHEET**
364 \\Full combinations sheet:** [[attach:Full List of AnalysisResult combinations 02-2025.xlsx||rel="noopener noreferrer" target="_blank"]]**
365 )))
366
367 We can help you with the right combinations and mappings to your own codes.
368
369
370 = Samples with their Types =
371
372 For different compartments, the links between samples and analysisResults can differ a little bit.
373 Below the way the enitity Sample can be filled in the xml.
374
375 |(% colspan="4" %)**Soil Samples**| | | |
376 |(% colspan="8" %)-          **FieldSample – BO01-1**, matrix = GR     (SampleType = 1)
377 |(% colspan="7" %)o   Container – Jar BO01-1, barcode: fdmsakfds|
378 |(% colspan="6" %)o   Link to AnalysisSample: M1| |
379 |(% colspan="8" %)-          **AnalysisSample – M1**, matrix = GR     (SampleType = 10)
380 |(% colspan="6" %)o   Link  to SubSample: BO01-1| |
381 |(% colspan="4" %)o   Labanalysis Requests| | | |
382 |(% colspan="4" %)o   LabResults| | | |
383 | | | | | | | |
384 |(% colspan="5" %)**Water Samples (with multiple bottles) / Air Sample**| | |
385 |(% colspan="8" %)-          **FieldSample – WA1**, matrix = GW     (SampleType = 1)
386 |(% colspan="7" %)o   Container – Bottle WA1-1, barcode: dfsfdslasd|
387 |(% colspan="7" %)o   Container – Bottle WA1-2, barcode: fdsvfdsvfs|
388 |(% colspan="7" %)o   Container – Bottle WA1-3, barcode: kjhgfvvxx|
389 |(% colspan="7" %)o   Link to AnalysisSample: WA1_Sample|
390 |(% colspan="8" %)-          **AnalysisSample – WA1_Sample**, matrix = GW     (SampleType = 10)
391 |(% colspan="6" %)o  Link  to SubSample: WA1| |
392 |(% colspan="4" %)o   Labanalysis Requests| | | |
393 |(% colspan="4" %)o   LabResults| | | |
TerraIndex
asd