Last modified by Robin Huisman on 2024/12/18 14:57

Show last authors
1 = Creating a Delivery file and binding them to a customer =
2
3 This chapter contains the information needed to understand the lab delivery file. A Lab delivery file only has to be updated when there are changes. Otherwise, TerraIndex will always show the last imported file.
4
5 {{warning}}
6 Latest version can be found here: [[https:~~/~~/www.sikb.nl/datastandaarden/sikb0101-bodembeheer>>url:https://www.sikb.nl/datastandaarden/sikb0101-bodembeheer]]
7 {{/warning}}
8
9 == What is a lab delivery file? ==
10
11 A lab delivery file contains the Customer code of the customer that will be sending the lab assignment. It also contains the analyses that can be requested from the lab by the customer. A Lab delivery file needs to be custom for every user and needs to be an XML file. This file will be available for the customer to choose their options for requesting and ordering an analysis at the lab. It's the Menu-card of the Lab, the user can choose from.
12
13 **Example files**:  [[attach:Labdeliveryfile.xml||rel="noopener noreferrer" target="_blank"]]
14
15 **XSD**:  [[attach:LabDelivery_v14.8.0.xsd||rel="noopener noreferrer" target="_blank"]]
16
17 **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]]
18 extracted from: **[[https:~~/~~/codes.sikb.nl>>url:https://codes.sikb.nl/]] 
19 \\Translations English to Dutch:  **[[attach:LabdeliveryFile_14.8.0_ENG_NL.xslt||rel="noopener noreferrer" target="_blank"]]
20
21
22 {{toc/}}
23
24
25 [[image:1722464591905-118.png]]
26
27 == File structure ==
28
29 In the image below, the main structure of the XML file is shown. Every table is described in more detail later on in this chapter.
30
31 (% class="table-hover" %)
32 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**Unit**
33 |(% colspan="1" rowspan="1" %)**version**|(% colspan="1" rowspan="1" %)SIKB version. This must be: **14.8.0**|(% colspan="1" rowspan="1" %)string
34 |(% colspan="1" %)**versionDeliveryData**|(% colspan="1" %)A lab indication of the version of the delivered data for this user. Could be a generation date with version: '12-7-2024' or a version 'v12.1'|(% colspan="1" %)string
35 |(% colspan="1" rowspan="1" %)**laboratory**|(% colspan="1" rowspan="1" %)A number given by SIKB/TerraIndex to the lab when requesting to connect to TerraIndex
36 [[Domaintable: Meetinstantie>>https://codes.sikb.nl/tablet/domain-table-details/4e270f0a-cefe-446e-9d4d-6666c91180a8]]|(% colspan="1" rowspan="1" %)integer
37 |(% colspan="1" rowspan="1" %)**language**|(% colspan="1" rowspan="1" %)(((
38 The language of the Delivery file content, like the package names, urgencies etc, in a three-letter ISO-639-2 code:
39
40 - dut = Dutch
41 - eng = English
42 - fra = French
43 - spa = Spanish
44 - ita = Italian
45 - deu = German
46 )))|(% colspan="1" rowspan="1" %)string
47 |(% colspan="1" rowspan="1" %)**Links**|(% colspan="1" rowspan="1" %)A table to connect the “AnalysisSet” and the “Clients”|(% colspan="1" rowspan="1" %)-
48 |(% colspan="1" rowspan="1" %)**AnalysisSets**|(% colspan="1" rowspan="1" %)A table containing the name and lab code of analysis set|(% colspan="1" rowspan="1" %)-
49 |(% colspan="1" rowspan="1" %)**Categories**|(% colspan="1" rowspan="1" %)A table containing all the possible lab categories|(% colspan="1" rowspan="1" %)-
50 |(% colspan="1" rowspan="1" %)**AnalysisLinks**|(% colspan="1" rowspan="1" %)A table containing all the analyses for an analysis set|(% colspan="1" rowspan="1" %)-
51 |(% colspan="1" rowspan="1" %)**Clients**|(% colspan="1" rowspan="1" %)A table of all the customer codes that are available for the company|(% colspan="1" rowspan="1" %)-
52 |(% colspan="1" rowspan="1" %)**LabSampleMatrices**|(% colspan="1" rowspan="1" %)A table of all the Lab sample Matrices a lab would like to have selectable.|(% colspan="1" rowspan="1" %)-
53 |(% colspan="1" rowspan="1" %)**SpecialAppointments**|(% colspan="1" rowspan="1" %)A table of all the special price agreements besides the default quote.|(% colspan="1" %)-
54 |(% colspan="1" rowspan="1" %)**Urgencies**|(% colspan="1" rowspan="1" %)A table containing a list of time frames in which the lab results need to be returned|(% colspan="1" %)-
55 |(% colspan="1" rowspan="1" %)//StoragePeriods//|(% colspan="1" rowspan="1" %)-not in use-|(% colspan="1" rowspan="1" %)
56 |(% colspan="1" rowspan="1" %)//Reports//|(% colspan="1" rowspan="1" %)-not in use-|(% colspan="1" rowspan="1" %)
57 |(% colspan="1" rowspan="1" %)//FractionLinks//|(% colspan="1" rowspan="1" %)-not in use-|(% colspan="1" rowspan="1" %)
58
59 == Structure explanation AnalysisSets ==
60
61 This table contains all the analyses sets or packages that your lab supports. The “AnalysisSetId” is your own identification code for the analysis packages.
62
63 It will be the chosen analysis and name, showed in the interface of TerraIndex:
64 \\[[image:1712163759805-731.png]]
65
66 [[image:1712163688142-709.png||height="443" width="599"]]
67
68 (% class="table-hover" %)
69 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**Unit**
70 |(% colspan="1" rowspan="1" %)**AnalysisSetId**|(% colspan="1" rowspan="1" %)The identification code of the lab for the analyses Set or package|(% colspan="1" rowspan="1" %)string
71 |(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)The name/description of the analysis content of the set (This will also be shown in the user interface)|(% colspan="1" rowspan="1" %)string
72 |(% colspan="1" rowspan="1" %)//Sequence//|(% colspan="1" rowspan="1" %)-not in use-|(% colspan="1" rowspan="1" %)string
73 |(% colspan="1" rowspan="1" %)//MinimalDeliveryTime//|(% colspan="1" rowspan="1" %)-not in use-|(% colspan="1" rowspan="1" %)string
74
75 == Structure explanation Categories ==
76
77 “Category” does not need a lot of explanation. A category is a group defined by the lab where certain values in the “koppeltabel” can be grouped under. A category is determined by the lab and can be used in the “Links”.
78
79 In TerraIndex, it will be shown as Header/Group:
80 [[image:1712162927138-349.png]]
81
82
83 [[image:1712162765631-966.png||height="504" width="609"]]
84
85
86 (% class="table-hover" %)
87 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**Unit**
88 |(% colspan="1" rowspan="1" %)**CategorieId**|(% colspan="1" rowspan="1" %)The code/Id of the category or group given by the lab|(% colspan="1" rowspan="1" %)string
89 |(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)The name/description of the category (This will also be shown in the user interface, in alphabtical order) |(% colspan="1" rowspan="1" %)string
90 |(% colspan="1" rowspan="1" %)**Sequence**|(% colspan="1" rowspan="1" %)The field to assign an order/serquence for the presentation of the category in the interface of TerraIndex|(% colspan="1" rowspan="1" %)integer
91
92 == Structure explanation AnalysisLink and Analysis ==
93
94 This table contains all the analyses that an analysis package can contain. Be sure the “analysepakketcode” corresponds to a code in the table: “analysepakketten”. The analysecode is your own identification code for the analyses.
95 \\[[image:1712163145392-331.png]]
96 \\[[image:1712163459761-326.png||height="488" width="799"]]
97
98 (% class="table-hover" %)
99 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**Unit**
100 |(% colspan="1" rowspan="1" %)**AnalysisSetId**|(% colspan="1" rowspan="1" %)The analysis set code that corresponds to a code in the “//AnalysisSets//”|(% colspan="1" rowspan="1" %)string
101 |(% colspan="1" rowspan="1" %)**Analysis**|(% colspan="1" rowspan="1" %)A table containing all the analyses that should be in this analysis set or package|(% colspan="1" rowspan="1" %)-
102
103 === __Analysis__ ===
104
105 (% class="table-hover" %)
106 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**Unit**
107 |(% colspan="1" rowspan="1" %)**AnalysisId**|(% colspan="1" rowspan="1" %)The identification code of the lab for the analyses|(% colspan="1" rowspan="1" %)string
108 |(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)The name/description of the analysis content of the set (This will also be shown in the user interface)|(% colspan="1" rowspan="1" %)string
109 |(% colspan="1" rowspan="1" %)//MinimalDeliveryTime//|(% colspan="1" rowspan="1" %)-not in use-|(% colspan="1" rowspan="1" %)string
110 |(% colspan="1" rowspan="1" %)//Observation//|(% colspan="1" rowspan="1" %)-not in use-|(% colspan="1" rowspan="1" %)
111
112 == Structure explanation Clients ==
113
114 A customer can have multiple “clients”. There always needs to be one “client” so that a lab assignment can be sent. But for example, when there is a price agreement for a certain project, a new “Client” can be added. Or when a company has multiple offices, every office can have its own “Client”.
115 \\It will be shown in the interface of TerraIndex, and needs to be chosen before selecting analysis sets:
116 [[image:1712163957735-690.png]]
117 \\[[image:1712163986350-364.png||height="409" width="544"]]
118
119 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**Unit**
120 |(% colspan="1" rowspan="1" %)**ClientId**|(% colspan="1" rowspan="1" %)The customer identification code(s) for the company or office|(% colspan="1" rowspan="1" %)string
121 |(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)The name\description of the customer code, as shown in the interface, and will be invoiced.|(% colspan="1" rowspan="1" %)string
122
123 == Structure explanation LabSampleMatrices ==
124
125 The “LabSampleMatrices” is an important section of the XML. The “matrix” defines the main type of sample for the lab, and can contain multiple or predefined additional pretreatments of preservatives. Without a sample type in this table, a customer will not be able to send in lab assignments to the laboratory.
126
127 It needs to be chosen in the interface of TerraIndex, before any analysis set can be chosen:
128 \\[[image:1712164314258-543.png]]
129
130
131 [[image:1712164255757-638.png||height="556" width="716"]]
132
133 (% class="table-hover" %)
134 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**unit**
135 |(% colspan="1" rowspan="1" %)**CompartimentId**|(% colspan="1" rowspan="1" %)An SIKB ID that determines to which matrix the analyses belongs.
136 Domaintable: [[Compartment/Matrix>>https://codes.sikb.nl/tablet/domain-table-details/6134f3bb-6048-431d-a130-01290d84172c]]|(% colspan="1" rowspan="1" %)int
137 |(% colspan="1" rowspan="1" %)//CompartimentCode//|(% colspan="1" rowspan="1" %)-not in use-|(% colspan="1" rowspan="1" %)
138 |(% colspan="1" rowspan="1" %)**LabSampleMatrixCode**|(% colspan="1" rowspan="1" %)The laboratory matrix- or compartment-code of the lab, that will be also be sent in the Labassignment to the lab|(% colspan="1" %)string
139 |(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)The name\description of the matrix or compartment of the lab, as shown in the interface.|(% colspan="1" rowspan="1" %)string
140
141 == Structure explanation SpecialAppointment ==
142
143 The “SpecialAppointment" contains the names of the price catalogs, the default quote or the special project quote. This way, extra discount options are possible. It will be sent in the labassignment to the lab.
144
145 It needs to be chosen in the interface of TerraIndex, before any analysis set can be chosen, and empty means 'default quote':
146
147 [[image:1712164853683-202.png]]
148
149 [[image:1712165258813-987.png||height="619" width="697"]]
150
151
152 (% class="table-hover" %)
153 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**unit**
154 |(% colspan="1" rowspan="1" %)**SpecialAppointmentId**|(% colspan="1" rowspan="1" %)An identification code from the lab that will be sent in the Labassignment to the lab.|(% colspan="1" rowspan="1" %)string
155 |(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)The name\description of the matrix or compartment of the lab, as shown in the interface.|(% colspan="1" rowspan="1" %)string
156 |(% colspan="1" rowspan="1" %)//startdate//|(% colspan="1" rowspan="1" %)-not in use-|(% colspan="1" rowspan="1" %)
157 |(% colspan="1" rowspan="1" %)//finaldate//|(% colspan="1" rowspan="1" %)-not in use-|(% colspan="1" rowspan="1" %)
158 |(% colspan="1" rowspan="1" %)**AppointmentTypeCode**|(% colspan="1" rowspan="1" %)The type of appointment, like: total pricelist, default quotation or special project agreement.
159 Domaintable: [[PriceAgreement Type>>https://codes.sikb.nl/tablet/domain-table-details/60028a8a-f386-47bf-bf2e-f46af49b7b56]]|(% colspan="1" rowspan="1" %)int
160
161 == Structure explanation Links ==
162
163 The “Links” is one of the most important sections of the XML. The “Link” defines the combination of Analysespackages, customer/clientcode, categories and sampletype. Without a combination in this table, a customer will not be able to send in lab assignments to the laboratory.
164 [[image:1712158823685-514.png||height="563" width="531"]]
165
166
167 (% class="table-hover" %)
168 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**unit**
169 |(% colspan="1" rowspan="1" %)**AnalysisSetId**|(% colspan="1" rowspan="1" %)The AnalysisSet code that corresponds to a code in the AnalysisSets table|(% colspan="1" rowspan="1" %)string
170 |(% colspan="1" rowspan="1" %)**ClientId**|(% colspan="1" rowspan="1" %)The code that corresponds to a code in Clients table|(% colspan="1" rowspan="1" %)string
171 |(% colspan="1" %)**SpecialAppointmentId**|(% colspan="1" %)The code that corresponds to a code in SpecialAppointments table|(% colspan="1" %)
172 |(% colspan="1" rowspan="1" %)**LabSampleMatrixCode**|(% colspan="1" rowspan="1" %)The code that corresponds to a code in LabSampleMatrix table|(% colspan="1" rowspan="1" %)(((
173 integer
174
175
176 )))
177 |(% colspan="1" %)Price|(% colspan="1" %)The optional Price indication for this combination of the Analysis|(% colspan="1" %)decimal
178 |(% colspan="1" %)CertificationId|(% colspan="1" %)The optional code that corresponds to the way of Sample and analysis handling as described in a certification.
179 Some other labs have this arranged by the LabSampleMatrix types.
180 Domaintable: [[CertificeringsCode >>https://codes.sikb.nl/tablet/domain-table-details/df7ffd7c-192c-44f7-ae9f-0461d9266b30]]|(% colspan="1" %)int
181 |(% colspan="1" rowspan="1" %)**CategoryId**|(% colspan="1" rowspan="1" %)The code that corresponds to a category code in Categories table|(% colspan="1" rowspan="1" %)string
182 |(% colspan="1" rowspan="1" %)//Accredited//|(% colspan="1" rowspan="1" %)-not in use-|(% colspan="1" rowspan="1" %)bool
183
184 == Structure explanation Urgencies ==
185
186 This table contains a list with different delivery times for analyses results. For example, 5 work days, overnight, within 48 hours and so on. The “UrgencyId” is a code given by the lab.
187
188 [[image:1712324236054-772.png||height="372" width="511"]]
189
190 (% class="table-hover" %)
191 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**Unit**
192 |(% colspan="1" rowspan="1" %)**UrgencyId**|(% colspan="1" rowspan="1" %)The code of the lab for when the analysis results need to be returned to the customer|(% colspan="1" rowspan="1" %)string
193 |(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)The name/ description of the urgency, to show in the interface.|(% colspan="1" rowspan="1" %)string
194
195 == Structure explanation StoragePeriods ==
196
197 This table contains a list with different storage periods for the storage of the delivered Samples and its containers. For example, '1 month', '5 weeks', 'customer agreement' and so on. The “StoragePeriodId” is a code given by the lab.
198
199 [[image:1712324393233-546.png||height="359" width="519"]]
200
201 (% class="table-hover" %)
202 |(% colspan="1" rowspan="1" %)**Attribute name**|(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)**Unit**
203 |(% colspan="1" rowspan="1" %)**StoragePeriodId**|(% colspan="1" rowspan="1" %)The code of the lab for when the analysis results need to be returned to the customer|(% colspan="1" rowspan="1" %)string
204 |(% colspan="1" rowspan="1" %)**Description**|(% colspan="1" rowspan="1" %)The name/ description of the Storage Period, to show in the interface.|(% colspan="1" rowspan="1" %)string