@oimlsmart/primmel-packages 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,643 +0,0 @@
1
- # OIML R 144 Sample Data — 2 evaluation flows
2
- # Modelled on data/r60/sample-data.yaml's shape:
3
- # MeasuringInstrumentModelFamily -> MeasuringInstrumentModel
4
- # -> MeasuringInstrumentSample (NO groups — R 144 defines no group level)
5
- # plus workflow entities (Application, TestRequest, TestReport, EvaluationReport,
6
- # Certificate) with re-typed FKs (model_family_id, model_ids, sample_ids,
7
- # model_id). standard_id is oiml-r144 on every record.
8
- # classification maps use dimension ids (measurand_components,
9
- # measuring_principle, sampling_approach, adjustment_means, power_supply) with
10
- # dimension enum values; parameters maps use attribute ids with { value, unit? }
11
- # entries (QuantityValue, INV-1).
12
- #
13
- # Flow 1: extractive CO+NOx CEMS (NDIR + chemiluminescence, automatic
14
- # adjustment, AC mains, data interface) — full program incl. drift,
15
- # gas handling, and signal-line disturbance tests.
16
- # Flow 2: extractive CO-only electrochemical system (semi-automatic
17
- # adjustment, AC + battery, no data interface) — exercises the
18
- # low-battery conditional form and skips the signal-line forms.
19
- standard: oiml-r144
20
- description: >
21
- Two OIML R 144 type evaluation flows for gas analytical systems
22
- (instruments for continuous measurement of CO, NOx in stationary source
23
- emissions). Each flow: 1 manufacturer -> 1 model family -> 1 model -> 1
24
- physical sample (the unit representing the definitive type, R 144-1,
25
- 7.1.2), then application -> test_request -> test_report -> evaluation ->
26
- certificate.
27
-
28
- flows:
29
- # ════════════════════════════════════════════════════════════════════
30
- # FLOW 1 — ACME CGM-200 extractive CO/NO/NO2/NOx CEMS
31
- # ════════════════════════════════════════════════════════════════════
32
- - name: "EX1/Example TL — ACME CGM-200 Series"
33
- id_prefix: sample-de1-acme-cgm200
34
- party:
35
- laboratory_id: "21"
36
- authority_id: EX1
37
- subject:
38
- manufacturer:
39
- id: mfr-horiba
40
- standard_id: oiml-r144
41
- company: "ACME GmbH"
42
- street: "Hauptstraße 138"
43
- city: "Oberursel"
44
- postalCode: "61440"
45
- country: "Germany"
46
- phone: "+49 6171 2966-0"
47
- created: "2025-04-01"
48
- modified: "2025-11-01"
49
- family:
50
- id: fam-acme-cgm200
51
- standard_id: oiml-r144
52
- family_designation: "CGM-200 Series"
53
- manufacturer_id: mfr-horiba
54
- classification:
55
- measuring_principle: combined # NDIR (CO) + chemiluminescence (NOx)
56
- sampling_approach: extractive
57
- parameters:
58
- t_min: { value: 5, unit: degC }
59
- t_max: { value: 40, unit: degC }
60
- rh_max: { value: 90, unit: "%" }
61
- p_atm_min: { value: 86, unit: kPa }
62
- p_atm_max: { value: 106, unit: kPa }
63
- wetted_materials: { value: "Stainless steel 316L, PTFE, Viton" }
64
- created: "2025-04-01"
65
- modified: "2025-11-01"
66
- models:
67
- - id: mod-acme-cgm200-5000
68
- standard_id: oiml-r144
69
- model_designation: "CGM-200"
70
- manufacturer_id: mfr-horiba
71
- family_id: fam-acme-cgm200
72
- classification:
73
- measurand_components: [co, "no", no2]
74
- adjustment_means: automatic
75
- power_supply: ac-mains
76
- parameters:
77
- co_range_min: { value: 10, unit: ppm }
78
- co_range_max: { value: 5000, unit: ppm }
79
- no_range_min: { value: 10, unit: ppm }
80
- no_range_max: { value: 2000, unit: ppm }
81
- no2_range_min: { value: 10, unit: ppm }
82
- no2_range_max: { value: 500, unit: ppm }
83
- response_time: { value: 90, unit: s }
84
- warm_up_time: { value: 30, unit: min }
85
- supply_voltage: { value: 230, unit: V }
86
- supply_frequency: { value: 50, unit: Hz }
87
- probe_gas_temp_max: { value: 600, unit: degC }
88
- analyzer_gas_temp_max: { value: 200, unit: degC }
89
- probe_particulate_max: { value: 1000, unit: mg/m3 }
90
- analyzer_particulate_max: { value: 10, unit: mg/m3 }
91
- gas_flow_rate_nominal: { value: 1.5, unit: L/min }
92
- gas_flow_rate_min: { value: 0.8, unit: L/min }
93
- gas_flow_rate_max: { value: 2.5, unit: L/min }
94
- vibration_severity: { value: "OIML D 11 level 1 (random vibration)" }
95
- interfering_components:
96
- value:
97
- - { component: co2, max_concentration: { value: 20, unit: "%" } }
98
- - { component: h2o, max_concentration: { value: 30, unit: "%" } }
99
- - { component: so2, max_concentration: { value: 200, unit: ppm } }
100
- - { component: ch4, max_concentration: { value: 100, unit: ppm } }
101
- indication_unit: { value: "ppm" }
102
- storage_t_min: { value: -20, unit: degC }
103
- storage_t_max: { value: 60, unit: degC }
104
- display_device: { value: "Backlit LCD digital display, 4 channels" }
105
- adjustment_facilities: { value: "Automatic zero/span adjustment with internal reference; code-protected" }
106
- interfaces: { value: "RS-485 Modbus, 4-20 mA outputs, Ethernet" }
107
- printing_device: { value: "Thermal printer, 58 mm" }
108
- computing_device: { value: "Integrated data processing unit, mass emission per EN 14181" }
109
- alarm_device: { value: "Threshold alarm relays, 2 channels" }
110
- software_identification: { value: "CGM-200 firmware v3.2" }
111
- capabilities: [gas-analytical-system, co-channel, nox-channel, extractive-sampling, data-interface, computing-device, alarm-system, automatic-adjustment]
112
- created: "2025-04-01"
113
- modified: "2025-11-01"
114
- samples:
115
- - id: smp-acme-cgm200-001
116
- standard_id: oiml-r144
117
- serial_number: "CGM-2025-00471"
118
- model_id: mod-acme-cgm200-5000
119
- manufacturer_id: mfr-horiba
120
- application_id: app-acme-cgm200
121
- status: TESTING_COMPLETE
122
- condition: NEW
123
- # TODO.roadmap/07 + task 29 — the sample's operational state (R 144-1,
124
- # 4.7 warm-up pattern; machine declared in model/state.yaml). Ready
125
- # keeps the state-gated drift test (R 144-2, 1.3) valid.
126
- operational_state:
127
- machine: gas_analyzer_operational
128
- current: ready
129
- trajectory:
130
- - { state: warming_up, at: "2025-05-06T07:32:00Z", fired_by: "Example Test Laboratory" }
131
- - { state: ready, at: "2025-05-06T08:02:00Z", fired_by: "Example Test Laboratory" }
132
- custody_events:
133
- - { date: "2025-05-05", type: RECEIVED, actor: "Example Test Laboratory", notes: "Sample received from manufacturer" }
134
- - { date: "2025-09-30", type: TESTING_COMPLETE, actor: "Example Test Laboratory", notes: "Type evaluation tests complete (incl. 7-day drift)" }
135
- - { date: "2025-11-01", type: RETURNED, actor: "EX1", notes: "Sample returned to manufacturer after certificate issue" }
136
- created: "2025-04-10"
137
- modified: "2025-11-01"
138
- application:
139
- id: app-acme-cgm200
140
- standard_id: oiml-r144
141
- application_number: "EX-ACM-2025-CGM200"
142
- date_of_application: "2025-04-10"
143
- status: ACCEPTED
144
- applicant:
145
- company: "ACME GmbH"
146
- representative: "Dr. Stefan Hofmann"
147
- address: "Hauptstraße 138, 61440 Oberursel, Germany"
148
- contact: "+49 6171 2966-0"
149
- reference: "ACM-2025-CGM200"
150
- date_of_application: "2025-04-10"
151
- application_number: "EX-ACM-2025-CGM200"
152
- authorisedByManufacturer: true
153
- noConcurrentApplication: true
154
- model_family_id: fam-acme-cgm200
155
- model_ids: [mod-acme-cgm200-5000]
156
- sample_ids: [smp-acme-cgm200-001]
157
- documentation:
158
- - { name: "Technical documentation", description: "Complete technical file per R 144-1, 7.1.1", submitted: true, reference: "TD-CGM-2025" }
159
- - { name: "Drawings", description: "Gas handling system drawings (Figure 1 layout)", submitted: true }
160
- - { name: "Operating manual", description: "CGM-200 operating manual DE/EN", submitted: true }
161
- - { name: "Software documentation", description: "Firmware v3.2 information", submitted: true }
162
- - { name: "Manufacturer test results", description: "Factory test report FTR-2025-118", submitted: true }
163
- submitted_date: "2025-04-10"
164
- reviewed_date: "2025-04-25"
165
- reviewer: "Example TL Department 1.3"
166
- review_notes: "Complete documentation. Extractive CEMS: NDIR for CO, chemiluminescence for NO/NOx, UV for NO2. Automatic adjustment."
167
- test_request:
168
- id: trq-acme-cgm200-01
169
- standard_id: oiml-r144
170
- request_number: "TRQ-EX-ACM-2025-CGM200-01"
171
- application_id: app-acme-cgm200
172
- requesting_authority_id: EX1
173
- assigned_laboratory_id: "21"
174
- status: COMPLETED
175
- scheme: A
176
- issued_date: "2025-04-28"
177
- issued_by: "Example TL Department 1.3"
178
- test_conditions:
179
- temperature_range: "+5/+40"
180
- pressure_range: "86–106 kPa"
181
- assignments:
182
- - { id: asg-horiba-laboratory-info-001, form_id: 03-01-laboratory-info, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
183
- - { id: asg-horiba-test-location-001, form_id: 03-02-test-location, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
184
- - { id: asg-horiba-manufacturer-info-001, form_id: 03-03-manufacturer-info, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
185
- - { id: asg-horiba-applicant-info-001, form_id: 03-04-applicant-info, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
186
- - { id: asg-horiba-type-identification-001, form_id: 03-05-type-identification, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
187
- - { id: asg-horiba-type-composition-001, form_id: 03-06-type-composition, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
188
- - { id: asg-horiba-documentation-examination-001, form_id: documentation-examination, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
189
- - { id: asg-horiba-visual-examination-001, form_id: 03-07-visual-examination, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
190
- - { id: asg-horiba-error-determination-001, form_id: error-determination, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
191
- - { id: asg-horiba-error-determination-002, form_id: error-determination, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
192
- - { id: asg-horiba-error-determination-003, form_id: error-determination, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
193
- - { id: asg-horiba-repeatability-test-001, form_id: repeatability-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
194
- - { id: asg-horiba-repeatability-test-002, form_id: repeatability-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
195
- - { id: asg-horiba-repeatability-test-003, form_id: repeatability-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
196
- - { id: asg-horiba-drift-test-001, form_id: drift-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
197
- - { id: asg-horiba-drift-test-002, form_id: drift-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
198
- - { id: asg-horiba-drift-test-003, form_id: drift-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
199
- - { id: asg-horiba-cross-sensitivity-test-001, form_id: cross-sensitivity-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
200
- - { id: asg-horiba-dry-heat-test-001, form_id: dry-heat-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
201
- - { id: asg-horiba-cold-test-001, form_id: cold-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
202
- - { id: asg-horiba-damp-heat-test-001, form_id: damp-heat-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
203
- - { id: asg-horiba-ambient-pressure-test-001, form_id: ambient-pressure-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
204
- - { id: asg-horiba-power-supply-test-001, form_id: power-supply-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
205
- - { id: asg-horiba-vibration-test-001, form_id: vibration-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
206
- - { id: asg-horiba-shock-test-001, form_id: shock-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
207
- - { id: asg-horiba-power-reduction-test-001, form_id: power-reduction-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
208
- - { id: asg-horiba-bursts-mains-test-001, form_id: bursts-mains-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
209
- - { id: asg-horiba-bursts-signal-test-001, form_id: bursts-signal-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
210
- - { id: asg-horiba-surge-test-001, form_id: surge-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
211
- - { id: asg-horiba-esd-test-001, form_id: esd-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
212
- - { id: asg-horiba-rf-emf-test-001, form_id: rf-emf-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
213
- - { id: asg-horiba-warm-up-time-test-001, form_id: warm-up-time-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
214
- - { id: asg-horiba-response-time-test-001, form_id: response-time-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
215
- - { id: asg-horiba-response-time-test-002, form_id: response-time-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
216
- - { id: asg-horiba-response-time-test-003, form_id: response-time-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
217
- - { id: asg-horiba-flow-spillover-test-001, form_id: flow-spillover-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
218
- - { id: asg-horiba-leakproofness-test-001, form_id: leakproofness-test, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
219
- - { id: asg-horiba-test-conclusions-001, form_id: 03-08-test-conclusions, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
220
- - { id: asg-horiba-general-conclusion-001, form_id: 03-09-general-conclusion, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
221
- - { id: asg-horiba-responsible-persons-001, form_id: 03-10-responsible-persons, sample_id: smp-acme-cgm200-001, model_id: mod-acme-cgm200-5000, status: COMPLETED }
222
- test_report:
223
- id: trp-acme-cgm200
224
- standard_id: oiml-r144
225
- report_number: "ETL-1.3-2025-TR-0471"
226
- test_request_id: trq-acme-cgm200-01
227
- application_id: app-acme-cgm200
228
- laboratory_id: "21"
229
- model_family_id: fam-acme-cgm200
230
- sample_ids: [smp-acme-cgm200-001]
231
- status: ACCEPTED
232
- evaluator: "Example Test Laboratory"
233
- submitted_date: "2025-09-30"
234
- forms:
235
- - 03-01-laboratory-info
236
- - 03-02-test-location
237
- - 03-03-manufacturer-info
238
- - 03-04-applicant-info
239
- - 03-05-type-identification
240
- - 03-06-type-composition
241
- - documentation-examination
242
- - 03-07-visual-examination
243
- - error-determination
244
- - repeatability-test
245
- - drift-test
246
- - cross-sensitivity-test
247
- - dry-heat-test
248
- - cold-test
249
- - damp-heat-test
250
- - ambient-pressure-test
251
- - power-supply-test
252
- - vibration-test
253
- - shock-test
254
- - power-reduction-test
255
- - bursts-mains-test
256
- - bursts-signal-test
257
- - surge-test
258
- - esd-test
259
- - rf-emf-test
260
- - warm-up-time-test
261
- - response-time-test
262
- - flow-spillover-test
263
- - leakproofness-test
264
- - 03-08-test-conclusions
265
- - 03-09-general-conclusion
266
- - 03-10-responsible-persons
267
- form_default_result: PASS
268
- form_overrides:
269
- error-determination:
270
- - component_under_test: CO
271
- calibration_characteristic: linear
272
- test_points: ["110 ppm", "2505 ppm", "4500 ppm"]
273
- errors_observed: ["+0.8", "-1.2", "+0.4"]
274
- mpe_applied: ["5.5", "125.3", "225.0"]
275
- result: PASS
276
- - component_under_test: "NO"
277
- calibration_characteristic: linear
278
- test_points: ["60 ppm", "1200 ppm", "2400 ppm"]
279
- errors_observed: ["+0.6", "-0.9", "+0.3"]
280
- mpe_applied: ["3.0", "60.0", "120.0"]
281
- result: PASS
282
- - component_under_test: NO2
283
- calibration_characteristic: linear
284
- test_points: ["30 ppm", "250 ppm", "450 ppm"]
285
- errors_observed: ["+0.4", "-0.5", "+0.2"]
286
- mpe_applied: ["1.5", "12.5", "22.5"]
287
- result: PASS
288
- repeatability-test:
289
- - component_under_test: CO
290
- cgm_reference: "2505 ppm"
291
- runs: 20
292
- standard_deviation: "1.9"
293
- max_permitted: "41.8"
294
- result: PASS
295
- - component_under_test: "NO"
296
- cgm_reference: "1200 ppm"
297
- runs: 20
298
- standard_deviation: "1.1"
299
- max_permitted: "20.0"
300
- result: PASS
301
- - component_under_test: NO2
302
- cgm_reference: "250 ppm"
303
- runs: 20
304
- standard_deviation: "0.3"
305
- max_permitted: "4.2"
306
- result: PASS
307
- response-time-test:
308
- - component_under_test: CO
309
- t90_measured: "72 s"
310
- max_permitted: "240 s"
311
- result: PASS
312
- - component_under_test: "NO"
313
- t90_measured: "65 s"
314
- max_permitted: "240 s"
315
- result: PASS
316
- - component_under_test: NO2
317
- t90_measured: "70 s"
318
- max_permitted: "240 s"
319
- result: PASS
320
- drift-test:
321
- - component_under_test: CO
322
- period: "7 days"
323
- max_error_observed: "+2.1 ppm at 110 ppm"
324
- mpe_applied: "5.5 ppm"
325
- result: PASS
326
- - component_under_test: "NO"
327
- period: "7 days"
328
- max_error_observed: "+1.8 ppm at 60 ppm"
329
- mpe_applied: "3.0 ppm"
330
- result: PASS
331
- - component_under_test: NO2
332
- period: "7 days"
333
- max_error_observed: "+1.2 ppm at 30 ppm"
334
- mpe_applied: "1.5 ppm"
335
- result: PASS
336
- evaluation:
337
- id: eva-acme-cgm200
338
- standard_id: oiml-r144
339
- application_id: app-acme-cgm200
340
- authority_id: EX1
341
- test_report_ids: [trp-acme-cgm200]
342
- model_id: mod-acme-cgm200-5000
343
- reviewer_name: "Example TL Department 1.3"
344
- review_date: "2025-10-20"
345
- overall_decision: APPROVED
346
- conditions:
347
- - "The system shall be calibrated with certified calibration gas mixtures at intervals not exceeding 6 months."
348
- - "The heated sampling line shall be maintained at 180 °C ± 10 °C to prevent condensation."
349
- review_notes: "All performance tests passed within the specified limits, including the 7-day drift test. Type evaluation satisfactory."
350
- certificate:
351
- id: crt-acme-cgm200
352
- standard_id: oiml-r144
353
- model_family_id: fam-acme-cgm200
354
- evaluation_id: eva-acme-cgm200
355
- test_report_ids: [trp-acme-cgm200]
356
- status: ACTIVE
357
- certificate_number: "R144/2013-A-EX1-25.01"
358
- scheme: A
359
- edition_year: 2013
360
- oiml_member_state: GERMANY
361
- issue_date: "2025-11-01"
362
- expiry_date: "2030-11-01"
363
- periodicity_years: 5
364
- type_description: "Extractive gas analytical system (CEMS) for continuous measurement of CO, NO, NO2 and NOx in stationary source emissions: NDIR for CO, chemiluminescence for NO/NOx, UV for NO2. Automatic adjustment."
365
- test_reports:
366
- - { report_number: "ETL-1.3-2025-TR-0471", date: "2025-09-30", pages: 48 }
367
- conditions:
368
- - "The system shall be calibrated with certified calibration gas mixtures at intervals not exceeding 6 months."
369
- - "The heated sampling line shall be maintained at 180 °C ± 10 °C to prevent condensation."
370
- classifications:
371
- - { label: "Carbon monoxide+Nitric oxide+Nitrogen dioxide-combined", characteristics: { measurand_components: [co, "no", no2], measuring_principle: combined, sampling_approach: extractive, co_range: "10–5000 ppm", no_range: "10–2000 ppm", no2_range: "10–500 ppm", response_time: "90 s", warm_up_time: "30 min", rated_conditions: "+5/+40 °C" } }
372
- json_data:
373
- standard: "OIML R 144:2013"
374
- certificate_number: "R144/2013-A-EX1-25.01"
375
- scheme: A
376
- # ════════════════════════════════════════════════════════════════════
377
- # FLOW 2 — ACME-PA CGM-100-CO extractive CO-only electrochemical system
378
- # ════════════════════════════════════════════════════════════════════
379
- - name: "EX1/Example TL — ACME-PA CGM-100-CO"
380
- id_prefix: sample-de1-acme-cgm100
381
- party:
382
- laboratory_id: "21"
383
- authority_id: EX1
384
- subject:
385
- manufacturer:
386
- id: mfr-sick
387
- standard_id: oiml-r144
388
- company: "ACME Process Analytics GmbH"
389
- street: "Erwin-Sick-Str. 1"
390
- city: "Waldkirch"
391
- postalCode: "79183"
392
- country: "Germany"
393
- phone: "+49 7681 202-0"
394
- created: "2025-05-01"
395
- modified: "2026-01-15"
396
- family:
397
- id: fam-acme-cgm100
398
- standard_id: oiml-r144
399
- family_designation: "CGM-100 Series"
400
- manufacturer_id: mfr-sick
401
- classification:
402
- measuring_principle: electrochemistry
403
- sampling_approach: extractive
404
- parameters:
405
- t_min: { value: 5, unit: degC }
406
- t_max: { value: 40, unit: degC }
407
- rh_max: { value: 90, unit: "%" }
408
- p_atm_min: { value: 86, unit: kPa }
409
- p_atm_max: { value: 106, unit: kPa }
410
- wetted_materials: { value: "PVDF, PTFE, FKM" }
411
- created: "2025-05-01"
412
- modified: "2026-01-15"
413
- models:
414
- - id: mod-acme-cgm100100e-co
415
- standard_id: oiml-r144
416
- model_designation: "CGM-100-CO"
417
- manufacturer_id: mfr-sick
418
- family_id: fam-acme-cgm100
419
- classification:
420
- measurand_components: [co]
421
- adjustment_means: semi-automatic
422
- power_supply: ac-and-battery
423
- parameters:
424
- co_range_min: { value: 10, unit: ppm }
425
- co_range_max: { value: 1000, unit: ppm }
426
- response_time: { value: 60, unit: s }
427
- warm_up_time: { value: 15, unit: min }
428
- supply_voltage: { value: 230, unit: V }
429
- supply_frequency: { value: 50, unit: Hz }
430
- battery_voltage_min: { value: 10.8, unit: V }
431
- probe_gas_temp_max: { value: 400, unit: degC }
432
- analyzer_gas_temp_max: { value: 50, unit: degC }
433
- probe_particulate_max: { value: 500, unit: mg/m3 }
434
- analyzer_particulate_max: { value: 5, unit: mg/m3 }
435
- gas_flow_rate_nominal: { value: 1.0, unit: L/min }
436
- gas_flow_rate_min: { value: 0.5, unit: L/min }
437
- gas_flow_rate_max: { value: 1.8, unit: L/min }
438
- vibration_severity: { value: "OIML D 11 level 1 (random vibration)" }
439
- interfering_components:
440
- value:
441
- - { component: h2, max_concentration: { value: 1000, unit: ppm } }
442
- - { component: co2, max_concentration: { value: 25, unit: "%" } }
443
- - { component: "no", max_concentration: { value: 500, unit: ppm } }
444
- indication_unit: { value: "ppm" }
445
- storage_t_min: { value: -10, unit: degC }
446
- storage_t_max: { value: 55, unit: degC }
447
- display_device: { value: "LED-illuminated digital display" }
448
- adjustment_facilities: { value: "Semi-automatic zero/span adjustment; CGM entered manually; code-protected" }
449
- software_identification: { value: "CGM-100 firmware v1.8" }
450
- capabilities: [gas-analytical-system, co-channel, extractive-sampling, battery-powered, electrochemical-sensor]
451
- created: "2025-05-01"
452
- modified: "2026-01-15"
453
- samples:
454
- - id: smp-acme-cgm100-001
455
- standard_id: oiml-r144
456
- serial_number: "MCS-2025-01132"
457
- model_id: mod-acme-cgm100100e-co
458
- manufacturer_id: mfr-sick
459
- application_id: app-acme-cgm100
460
- status: TESTING_COMPLETE
461
- condition: NEW
462
- custody_events:
463
- - { date: "2025-06-10", type: RECEIVED, actor: "Example Test Laboratory", notes: "Sample received from manufacturer" }
464
- - { date: "2025-11-20", type: TESTING_COMPLETE, actor: "Example Test Laboratory", notes: "Type evaluation tests complete (incl. low battery test)" }
465
- - { date: "2026-01-15", type: RETURNED, actor: "EX1", notes: "Sample returned to manufacturer after certificate issue" }
466
- created: "2025-05-20"
467
- modified: "2026-01-15"
468
- application:
469
- id: app-acme-cgm100
470
- standard_id: oiml-r144
471
- application_number: "EX-ACM-2025-CGM100CO"
472
- date_of_application: "2025-05-20"
473
- status: ACCEPTED
474
- applicant:
475
- company: "ACME Process Analytics GmbH"
476
- representative: "Ms. Martina Weiss"
477
- address: "Erwin-Sick-Str. 1, 79183 Waldkirch, Germany"
478
- contact: "+49 7681 202-0"
479
- reference: "ACM-2025-CGM-100"
480
- date_of_application: "2025-05-20"
481
- application_number: "EX-ACM-2025-CGM100CO"
482
- authorisedByManufacturer: true
483
- noConcurrentApplication: true
484
- model_family_id: fam-acme-cgm100
485
- model_ids: [mod-acme-cgm100100e-co]
486
- sample_ids: [smp-acme-cgm100-001]
487
- documentation:
488
- - { name: "Technical documentation", description: "Complete technical file per R 144-1, 7.1.1", submitted: true, reference: "TD-MCS-2025" }
489
- - { name: "Drawings", description: "Sampling probe and gas path drawings", submitted: true }
490
- - { name: "Operating manual", description: "CGM-100-CO operating manual DE/EN", submitted: true }
491
- - { name: "Software documentation", description: "Firmware v1.8 information", submitted: true }
492
- submitted_date: "2025-05-20"
493
- reviewed_date: "2025-06-05"
494
- reviewer: "Example TL Department 1.3"
495
- review_notes: "Complete documentation. CO-only electrochemical system with battery backup; sensor expiry warning fitted per R 144-1, 5.5.4."
496
- test_request:
497
- id: trq-acme-cgm100-01
498
- standard_id: oiml-r144
499
- request_number: "TRQ-DE-SIC-2025-CGM100CO-01"
500
- application_id: app-acme-cgm100
501
- requesting_authority_id: EX1
502
- assigned_laboratory_id: "21"
503
- status: COMPLETED
504
- scheme: A
505
- issued_date: "2025-06-08"
506
- issued_by: "Example TL Department 1.3"
507
- test_conditions:
508
- temperature_range: "+5/+40"
509
- pressure_range: "86–106 kPa"
510
- assignments:
511
- - { id: asg-sick-laboratory-info-001, form_id: 03-01-laboratory-info, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
512
- - { id: asg-sick-test-location-001, form_id: 03-02-test-location, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
513
- - { id: asg-sick-manufacturer-info-001, form_id: 03-03-manufacturer-info, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
514
- - { id: asg-sick-applicant-info-001, form_id: 03-04-applicant-info, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
515
- - { id: asg-sick-type-identification-001, form_id: 03-05-type-identification, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
516
- - { id: asg-sick-type-composition-001, form_id: 03-06-type-composition, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
517
- - { id: asg-sick-documentation-examination-001, form_id: documentation-examination, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
518
- - { id: asg-sick-visual-examination-001, form_id: 03-07-visual-examination, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
519
- - { id: asg-sick-error-determination-001, form_id: error-determination, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
520
- - { id: asg-sick-repeatability-test-001, form_id: repeatability-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
521
- - { id: asg-sick-drift-test-001, form_id: drift-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
522
- - { id: asg-sick-cross-sensitivity-test-001, form_id: cross-sensitivity-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
523
- - { id: asg-sick-dry-heat-test-001, form_id: dry-heat-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
524
- - { id: asg-sick-cold-test-001, form_id: cold-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
525
- - { id: asg-sick-damp-heat-test-001, form_id: damp-heat-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
526
- - { id: asg-sick-ambient-pressure-test-001, form_id: ambient-pressure-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
527
- - { id: asg-sick-power-supply-test-001, form_id: power-supply-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
528
- - { id: asg-sick-vibration-test-001, form_id: vibration-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
529
- - { id: asg-sick-shock-test-001, form_id: shock-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
530
- - { id: asg-sick-power-reduction-test-001, form_id: power-reduction-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
531
- - { id: asg-sick-bursts-mains-test-001, form_id: bursts-mains-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
532
- - { id: asg-sick-esd-test-001, form_id: esd-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
533
- - { id: asg-sick-rf-emf-test-001, form_id: rf-emf-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
534
- - { id: asg-sick-low-battery-test-001, form_id: low-battery-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
535
- - { id: asg-sick-warm-up-time-test-001, form_id: warm-up-time-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
536
- - { id: asg-sick-response-time-test-001, form_id: response-time-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
537
- - { id: asg-sick-flow-spillover-test-001, form_id: flow-spillover-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
538
- - { id: asg-sick-leakproofness-test-001, form_id: leakproofness-test, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
539
- - { id: asg-sick-test-conclusions-001, form_id: 03-08-test-conclusions, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
540
- - { id: asg-sick-general-conclusion-001, form_id: 03-09-general-conclusion, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
541
- - { id: asg-sick-responsible-persons-001, form_id: 03-10-responsible-persons, sample_id: smp-acme-cgm100-001, model_id: mod-acme-cgm100100e-co, status: COMPLETED }
542
- test_report:
543
- id: trp-acme-cgm100
544
- standard_id: oiml-r144
545
- report_number: "ETL-1.3-2025-TR-1132"
546
- test_request_id: trq-acme-cgm100-01
547
- application_id: app-acme-cgm100
548
- laboratory_id: "21"
549
- model_family_id: fam-acme-cgm100
550
- sample_ids: [smp-acme-cgm100-001]
551
- status: ACCEPTED
552
- evaluator: "Example Test Laboratory"
553
- submitted_date: "2025-11-20"
554
- forms:
555
- - 03-01-laboratory-info
556
- - 03-02-test-location
557
- - 03-03-manufacturer-info
558
- - 03-04-applicant-info
559
- - 03-05-type-identification
560
- - 03-06-type-composition
561
- - documentation-examination
562
- - 03-07-visual-examination
563
- - error-determination
564
- - repeatability-test
565
- - drift-test
566
- - cross-sensitivity-test
567
- - dry-heat-test
568
- - cold-test
569
- - damp-heat-test
570
- - ambient-pressure-test
571
- - power-supply-test
572
- - vibration-test
573
- - shock-test
574
- - power-reduction-test
575
- - bursts-mains-test
576
- - esd-test
577
- - rf-emf-test
578
- - low-battery-test
579
- - warm-up-time-test
580
- - response-time-test
581
- - flow-spillover-test
582
- - leakproofness-test
583
- - 03-08-test-conclusions
584
- - 03-09-general-conclusion
585
- - 03-10-responsible-persons
586
- form_default_result: PASS
587
- form_overrides:
588
- error-determination:
589
- component_under_test: CO
590
- calibration_characteristic: linear
591
- test_points: ["110 ppm", "505 ppm", "900 ppm"]
592
- errors_observed: ["+1.1", "-0.9", "+0.6"]
593
- mpe_applied: ["5.5", "25.3", "45.0"]
594
- result: PASS
595
- low-battery-test:
596
- battery_voltage_min_declared: "10.8 V"
597
- cutoff_voltage: "10.2 V"
598
- result: PASS
599
- response-time-test:
600
- component_under_test: CO
601
- t90_measured: "48 s"
602
- max_permitted: "240 s"
603
- result: PASS
604
- evaluation:
605
- id: eva-acme-cgm100
606
- standard_id: oiml-r144
607
- application_id: app-acme-cgm100
608
- authority_id: EX1
609
- test_report_ids: [trp-acme-cgm100]
610
- model_id: mod-acme-cgm100100e-co
611
- reviewer_name: "Example TL Department 1.3"
612
- review_date: "2025-12-15"
613
- overall_decision: APPROVED
614
- conditions:
615
- - "The electrochemical CO sensor shall be replaced before the expiry signalled by the sensor lifetime warning (R 144-1, 5.5.4)."
616
- - "The system shall be calibrated with certified calibration gas mixtures at intervals not exceeding 3 months."
617
- review_notes: "All performance tests passed, including the low battery voltage test. Sensor expiry warning verified. Type evaluation satisfactory."
618
- certificate:
619
- id: crt-acme-cgm100
620
- standard_id: oiml-r144
621
- model_family_id: fam-acme-cgm100
622
- evaluation_id: eva-acme-cgm100
623
- test_report_ids: [trp-acme-cgm100]
624
- status: ACTIVE
625
- certificate_number: "R144/2013-A-EX1-26.01"
626
- scheme: A
627
- edition_year: 2013
628
- oiml_member_state: GERMANY
629
- issue_date: "2026-01-15"
630
- expiry_date: "2031-01-15"
631
- periodicity_years: 5
632
- type_description: "Extractive gas analytical system for continuous measurement of CO in stationary source emissions, electrochemical sensor, semi-automatic adjustment, AC mains with battery backup."
633
- test_reports:
634
- - { report_number: "ETL-1.3-2025-TR-1132", date: "2025-11-20", pages: 41 }
635
- conditions:
636
- - "The electrochemical CO sensor shall be replaced before the expiry signalled by the sensor lifetime warning (R 144-1, 5.5.4)."
637
- - "The system shall be calibrated with certified calibration gas mixtures at intervals not exceeding 3 months."
638
- classifications:
639
- - { label: "Carbon monoxide-electrochemistry", characteristics: { measurand_components: [co], measuring_principle: electrochemistry, sampling_approach: extractive, co_range: "10–1000 ppm", response_time: "60 s", warm_up_time: "15 min", power_supply: "AC mains + battery", rated_conditions: "+5/+40 °C" } }
640
- json_data:
641
- standard: "OIML R 144:2013"
642
- certificate_number: "R144/2013-A-EX1-26.01"
643
- scheme: A