@oimlsmart/primmel-packages 0.1.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.
Files changed (460) hide show
  1. package/AGENTS.md +60 -0
  2. package/LICENSE +21 -0
  3. package/README.md +68 -0
  4. package/acme-cgm-200/model/cgm200.prl +284 -0
  5. package/acme-cgm-200/model/r144-map.prl +337 -0
  6. package/acme-cgm-200/package.primmel +39 -0
  7. package/acme-cgm-system/model/cgm-system.prl +125 -0
  8. package/acme-cgm-system/model/r144-map.prl +75 -0
  9. package/acme-cgm-system/model/sample-line.prl +42 -0
  10. package/acme-cgm-system/package.primmel +23 -0
  11. package/acme-lc500/model/lc500.prl +218 -0
  12. package/acme-lc500/model/passport.prl +43 -0
  13. package/acme-lc500/model/r60-map.prl +161 -0
  14. package/acme-lc500/model/twin-cert-map.prl +114 -0
  15. package/acme-lc500/package.primmel +35 -0
  16. package/acme-md3xx/model/md350.prl +317 -0
  17. package/acme-md3xx/model/r129-map.prl +346 -0
  18. package/acme-md3xx/package.primmel +49 -0
  19. package/acme-rs180/model/r91-map.prl +234 -0
  20. package/acme-rs180/model/rs180.prl +236 -0
  21. package/acme-rs180/package.primmel +47 -0
  22. package/ims-demo/model/ims.prl +23 -0
  23. package/ims-demo/model/isms-map.prl +60 -0
  24. package/ims-demo/model/qms-map.prl +73 -0
  25. package/ims-demo/package.primmel +42 -0
  26. package/isms-ref/model/isms.prl +34 -0
  27. package/isms-ref/package.primmel +35 -0
  28. package/iso-iec-17000/package.primmel +8 -0
  29. package/iso-iec-17000/terminology.prl +268 -0
  30. package/iso-iec-17025/package.primmel +10 -0
  31. package/iso-iec-17025/specification/requirements/lab.prl +474 -0
  32. package/iso-iec-17025/terminology.prl +72 -0
  33. package/iso-iec-17065/package.primmel +10 -0
  34. package/iso-iec-17065/specification/requirements/body.prl +446 -0
  35. package/iso-iec-17065/terminology.prl +103 -0
  36. package/iso-iec-17067/package.primmel +10 -0
  37. package/iso-iec-17067/specification/requirements/scheme-content.prl +300 -0
  38. package/iso-iec-17067/terminology.prl +24 -0
  39. package/oiml-cs/package.primmel +10 -0
  40. package/oiml-cs/specification/discrepancies.prl +26 -0
  41. package/oiml-cs/specification/requirements/cs.prl +515 -0
  42. package/oiml-cs-dataspace/.primmel-allowlist.prl +25 -0
  43. package/oiml-cs-dataspace/package.primmel +9 -0
  44. package/oiml-cs-dataspace/specification/dataspace.prl +73 -0
  45. package/oiml-cs-dataspace/specification/policies.prl +68 -0
  46. package/oiml-integrated-ref/model/probe-pairing.prl +71 -0
  47. package/oiml-integrated-ref/package.primmel +10 -0
  48. package/oiml-r129/.primmel-allowlist.prl +2 -0
  49. package/oiml-r129/evaluation/processes.prl +152 -0
  50. package/oiml-r129/evaluation/workflow.prl +48 -0
  51. package/oiml-r129/execution/forms/admin/adjustments-modifications.prl +30 -0
  52. package/oiml-r129/execution/forms/admin/checklist.prl +70 -0
  53. package/oiml-r129/execution/forms/admin/configuration.prl +31 -0
  54. package/oiml-r129/execution/forms/admin/equipment-info.prl +27 -0
  55. package/oiml-r129/execution/forms/admin/general-info.prl +63 -0
  56. package/oiml-r129/execution/forms/admin/identification.prl +49 -0
  57. package/oiml-r129/execution/forms/admin/sample-selection.prl +30 -0
  58. package/oiml-r129/execution/forms/admin/summary-results.prl +50 -0
  59. package/oiml-r129/execution/forms/emc/bursts.prl +88 -0
  60. package/oiml-r129/execution/forms/emc/esd.prl +66 -0
  61. package/oiml-r129/execution/forms/emc/low-voltage-battery.prl +58 -0
  62. package/oiml-r129/execution/forms/emc/rf-immunity-conducted.prl +59 -0
  63. package/oiml-r129/execution/forms/emc/rf-immunity-radiated.prl +59 -0
  64. package/oiml-r129/execution/forms/emc/surge.prl +61 -0
  65. package/oiml-r129/execution/forms/emc/voltage-dips.prl +62 -0
  66. package/oiml-r129/execution/forms/emc/voltage-variation.prl +58 -0
  67. package/oiml-r129/execution/forms/env/damp-heat-cyclic.prl +43 -0
  68. package/oiml-r129/execution/forms/env/damp-heat-steady.prl +50 -0
  69. package/oiml-r129/execution/forms/env/static-temperatures.prl +61 -0
  70. package/oiml-r129/execution/forms/shared/headers.prl +86 -0
  71. package/oiml-r129/execution/forms/tests/acoustics.prl +44 -0
  72. package/oiml-r129/execution/forms/tests/ambient-light.prl +46 -0
  73. package/oiml-r129/execution/forms/tests/construction-examination.prl +46 -0
  74. package/oiml-r129/execution/forms/tests/examination-checklist.prl +51 -0
  75. package/oiml-r129/execution/forms/tests/object-shape.prl +43 -0
  76. package/oiml-r129/execution/forms/tests/orientation-position.prl +31 -0
  77. package/oiml-r129/execution/forms/tests/repeatability.prl +65 -0
  78. package/oiml-r129/execution/forms/tests/speed-movement.prl +59 -0
  79. package/oiml-r129/execution/forms/tests/surface-characteristics.prl +44 -0
  80. package/oiml-r129/execution/forms/tests/warm-up-time.prl +35 -0
  81. package/oiml-r129/execution/subforms/dimension-measurement.prl +93 -0
  82. package/oiml-r129/layers.prl +50 -0
  83. package/oiml-r129/model/attributes.prl +243 -0
  84. package/oiml-r129/model/behaviors.prl +79 -0
  85. package/oiml-r129/model/capabilities.prl +29 -0
  86. package/oiml-r129/model/characteristics.prl +8 -0
  87. package/oiml-r129/model/conditions.prl +23 -0
  88. package/oiml-r129/model/instrument.prl +67 -0
  89. package/oiml-r129/model/state.prl +22 -0
  90. package/oiml-r129/model/twin.prl +23 -0
  91. package/oiml-r129/package.primmel +15 -0
  92. package/oiml-r129/payload/application.yaml +40 -0
  93. package/oiml-r129/payload/conditions-common-test.yaml +8 -0
  94. package/oiml-r129/payload/formulas-variants.yaml +33 -0
  95. package/oiml-r129/payload/promises.yaml +102 -0
  96. package/oiml-r129/payload/sample-data.yaml +300 -0
  97. package/oiml-r129/references.prl +306 -0
  98. package/oiml-r129/sources-prd/coverage.json +59 -0
  99. package/oiml-r129/sources-prd/r129-1.sentences.json +4238 -0
  100. package/oiml-r129/sources-prd/r129-2.sentences.json +1139 -0
  101. package/oiml-r129/sources-prd/r129-3.sentences.json +3809 -0
  102. package/oiml-r129/sources-prd/r129-4.sentences.json +1227 -0
  103. package/oiml-r129/specification/calculations.prl +83 -0
  104. package/oiml-r129/specification/conformance/disturbance-tests.prl +212 -0
  105. package/oiml-r129/specification/conformance/effect-tests.prl +70 -0
  106. package/oiml-r129/specification/conformance/examinations.prl +83 -0
  107. package/oiml-r129/specification/conformance/metrological-tests.prl +178 -0
  108. package/oiml-r129/specification/formulas.prl +9 -0
  109. package/oiml-r129/specification/requirements/electronic.prl +46 -0
  110. package/oiml-r129/specification/requirements/metrological.prl +83 -0
  111. package/oiml-r129/specification/requirements/object-limitations.prl +99 -0
  112. package/oiml-r129/specification/requirements/software.prl +57 -0
  113. package/oiml-r129/specification/requirements/technical.prl +134 -0
  114. package/oiml-r129/specification/symbols.prl +187 -0
  115. package/oiml-r129/specification/tables.prl +74 -0
  116. package/oiml-r129/terminology.prl +415 -0
  117. package/oiml-r129/value-types.prl +40 -0
  118. package/oiml-r144/.primmel-allowlist.prl +2 -0
  119. package/oiml-r144/entities/instrument.prl +360 -0
  120. package/oiml-r144/entities/test-execution.prl +228 -0
  121. package/oiml-r144/entities/workflow.prl +2075 -0
  122. package/oiml-r144/evaluation/processes.prl +152 -0
  123. package/oiml-r144/evaluation/workflow.prl +48 -0
  124. package/oiml-r144/execution/forms/sec-3-report/03-01-laboratory-info.prl +19 -0
  125. package/oiml-r144/execution/forms/sec-3-report/03-02-test-location.prl +14 -0
  126. package/oiml-r144/execution/forms/sec-3-report/03-03-manufacturer-info.prl +18 -0
  127. package/oiml-r144/execution/forms/sec-3-report/03-04-applicant-info.prl +19 -0
  128. package/oiml-r144/execution/forms/sec-3-report/03-05-type-identification.prl +80 -0
  129. package/oiml-r144/execution/forms/sec-3-report/03-06-type-composition.prl +31 -0
  130. package/oiml-r144/execution/forms/sec-3-report/03-07-visual-examination.prl +46 -0
  131. package/oiml-r144/execution/forms/sec-3-report/03-08-test-conclusions.prl +46 -0
  132. package/oiml-r144/execution/forms/sec-3-report/03-09-general-conclusion.prl +19 -0
  133. package/oiml-r144/execution/forms/sec-3-report/03-10-responsible-persons.prl +27 -0
  134. package/oiml-r144/execution/forms/sec-tests/ambient-pressure-test.prl +59 -0
  135. package/oiml-r144/execution/forms/sec-tests/bursts-mains-test.prl +52 -0
  136. package/oiml-r144/execution/forms/sec-tests/bursts-signal-test.prl +55 -0
  137. package/oiml-r144/execution/forms/sec-tests/cold-test.prl +48 -0
  138. package/oiml-r144/execution/forms/sec-tests/cross-sensitivity-test.prl +92 -0
  139. package/oiml-r144/execution/forms/sec-tests/damp-heat-test.prl +50 -0
  140. package/oiml-r144/execution/forms/sec-tests/documentation-examination.prl +52 -0
  141. package/oiml-r144/execution/forms/sec-tests/drift-test.prl +83 -0
  142. package/oiml-r144/execution/forms/sec-tests/dry-heat-test.prl +53 -0
  143. package/oiml-r144/execution/forms/sec-tests/error-determination.prl +37 -0
  144. package/oiml-r144/execution/forms/sec-tests/esd-test.prl +53 -0
  145. package/oiml-r144/execution/forms/sec-tests/flow-spillover-test.prl +83 -0
  146. package/oiml-r144/execution/forms/sec-tests/leakproofness-test.prl +41 -0
  147. package/oiml-r144/execution/forms/sec-tests/low-battery-test.prl +48 -0
  148. package/oiml-r144/execution/forms/sec-tests/power-reduction-test.prl +49 -0
  149. package/oiml-r144/execution/forms/sec-tests/power-supply-test.prl +57 -0
  150. package/oiml-r144/execution/forms/sec-tests/repeatability-test.prl +60 -0
  151. package/oiml-r144/execution/forms/sec-tests/response-time-test.prl +43 -0
  152. package/oiml-r144/execution/forms/sec-tests/rf-emf-test.prl +47 -0
  153. package/oiml-r144/execution/forms/sec-tests/shock-test.prl +50 -0
  154. package/oiml-r144/execution/forms/sec-tests/surge-test.prl +52 -0
  155. package/oiml-r144/execution/forms/sec-tests/vibration-test.prl +58 -0
  156. package/oiml-r144/execution/forms/sec-tests/warm-up-time-test.prl +69 -0
  157. package/oiml-r144/execution/forms/shared/headers.prl +132 -0
  158. package/oiml-r144/execution/subforms/cgm-point.prl +99 -0
  159. package/oiml-r144/layers.prl +44 -0
  160. package/oiml-r144/model/attributes.prl +679 -0
  161. package/oiml-r144/model/behaviors.prl +117 -0
  162. package/oiml-r144/model/capabilities.prl +99 -0
  163. package/oiml-r144/model/characteristics.prl +27 -0
  164. package/oiml-r144/model/conditions.prl +46 -0
  165. package/oiml-r144/model/instrument.prl +85 -0
  166. package/oiml-r144/model/state.prl +18 -0
  167. package/oiml-r144/model/twin.prl +25 -0
  168. package/oiml-r144/package.primmel +15 -0
  169. package/oiml-r144/payload/application.yaml +80 -0
  170. package/oiml-r144/payload/attributes-pair-list.yaml +18 -0
  171. package/oiml-r144/payload/conditions-common-test.yaml +74 -0
  172. package/oiml-r144/payload/formulas-variants.yaml +32 -0
  173. package/oiml-r144/payload/promises.yaml +118 -0
  174. package/oiml-r144/payload/sample-data.yaml +643 -0
  175. package/oiml-r144/references.prl +594 -0
  176. package/oiml-r144/sources-prd/coverage.json +114 -0
  177. package/oiml-r144/sources-prd/r144-1.sentences.json +2797 -0
  178. package/oiml-r144/sources-prd/r144-2.sentences.json +1627 -0
  179. package/oiml-r144/sources-prd/r144-3.sentences.json +838 -0
  180. package/oiml-r144/specification/calculations.prl +123 -0
  181. package/oiml-r144/specification/conformance/examination.prl +87 -0
  182. package/oiml-r144/specification/conformance/performance-tests.prl +755 -0
  183. package/oiml-r144/specification/formulas.prl +37 -0
  184. package/oiml-r144/specification/reference-materials.prl +87 -0
  185. package/oiml-r144/specification/requirements/controls.prl +51 -0
  186. package/oiml-r144/specification/requirements/metrological.prl +299 -0
  187. package/oiml-r144/specification/requirements/report.prl +35 -0
  188. package/oiml-r144/specification/requirements/technical.prl +455 -0
  189. package/oiml-r144/specification/symbols.prl +357 -0
  190. package/oiml-r144/specification/tables.prl +95 -0
  191. package/oiml-r144/specification/test-point-sets.prl +15 -0
  192. package/oiml-r144/terminology.prl +308 -0
  193. package/oiml-r144/value-types.prl +49 -0
  194. package/oiml-r60/.primmel-allowlist.prl +2 -0
  195. package/oiml-r60/entities/workflow.prl +2079 -0
  196. package/oiml-r60/evaluation/processes.prl +152 -0
  197. package/oiml-r60/evaluation/workflow.prl +48 -0
  198. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-01-authority-info.prl +76 -0
  199. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-02-synopsis.prl +20 -0
  200. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-03-01-examinations.prl +27 -0
  201. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-03-02-a-performance-general.prl +81 -0
  202. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-03-02-b-performance-digital.prl +104 -0
  203. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-04-01-manufacturer.prl +21 -0
  204. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-04-02-applicant.prl +44 -0
  205. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-04-03-testing-laboratories.prl +69 -0
  206. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-05-load-cell-type-info.prl +83 -0
  207. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-06-accessories.prl +41 -0
  208. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-07-sample-selection.prl +71 -0
  209. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-01-general-info.prl +103 -0
  210. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-02-performance-info.prl +66 -0
  211. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-03-digital-info.prl +35 -0
  212. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-04-photographs.prl +12 -0
  213. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-05-documentation.prl +27 -0
  214. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-06-inscriptions.prl +126 -0
  215. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-07-model-range.prl +143 -0
  216. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-12-previous-tests.prl +26 -0
  217. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-01-force-generating-system.prl +89 -0
  218. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-02-weights.prl +61 -0
  219. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-03-temperature-chamber.prl +96 -0
  220. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-04-climate-chamber.prl +96 -0
  221. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-05-indicator.prl +92 -0
  222. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-06-terminal.prl +86 -0
  223. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-07-barometric-pressure-meter.prl +62 -0
  224. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-08-thermometer.prl +62 -0
  225. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-09-moisture-analyser.prl +62 -0
  226. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-10-additional-test-equipment.prl +69 -0
  227. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-11-remarks.prl +11 -0
  228. package/oiml-r60/execution/forms/sec-4-evaluation-report/test-usage-matrix.prl +85 -0
  229. package/oiml-r60/execution/forms/sec-5-examination/documentation-examination.prl +53 -0
  230. package/oiml-r60/execution/forms/sec-5-examination/marking-examination.prl +104 -0
  231. package/oiml-r60/execution/forms/sec-5-examination/software-examination.prl +86 -0
  232. package/oiml-r60/execution/forms/sec-5-examination/suitability-examination.prl +56 -0
  233. package/oiml-r60/execution/forms/sec-6-performance-tests/barometric-pressure.prl +176 -0
  234. package/oiml-r60/execution/forms/sec-6-performance-tests/bursts.prl +129 -0
  235. package/oiml-r60/execution/forms/sec-6-performance-tests/conducted-emc.prl +170 -0
  236. package/oiml-r60/execution/forms/sec-6-performance-tests/creep-dr.prl +327 -0
  237. package/oiml-r60/execution/forms/sec-6-performance-tests/emc-susceptibility.prl +115 -0
  238. package/oiml-r60/execution/forms/sec-6-performance-tests/esd.prl +224 -0
  239. package/oiml-r60/execution/forms/sec-6-performance-tests/humidity-ch.prl +300 -0
  240. package/oiml-r60/execution/forms/sec-6-performance-tests/humidity-sh.prl +235 -0
  241. package/oiml-r60/execution/forms/sec-6-performance-tests/initial-tests.prl +129 -0
  242. package/oiml-r60/execution/forms/sec-6-performance-tests/load-cell-errors.prl +280 -0
  243. package/oiml-r60/execution/forms/sec-6-performance-tests/load-test.prl +29 -0
  244. package/oiml-r60/execution/forms/sec-6-performance-tests/performance-test-summary.prl +82 -0
  245. package/oiml-r60/execution/forms/sec-6-performance-tests/power-voltage.prl +166 -0
  246. package/oiml-r60/execution/forms/sec-6-performance-tests/repeatability.prl +189 -0
  247. package/oiml-r60/execution/forms/sec-6-performance-tests/short-time-power.prl +98 -0
  248. package/oiml-r60/execution/forms/sec-6-performance-tests/span-stability.prl +242 -0
  249. package/oiml-r60/execution/forms/sec-6-performance-tests/surge.prl +142 -0
  250. package/oiml-r60/execution/forms/sec-6-performance-tests/temperature-mdlo.prl +180 -0
  251. package/oiml-r60/execution/forms/sec-6-performance-tests/warm-up-time.prl +207 -0
  252. package/oiml-r60/execution/forms/shared/headers.prl +255 -0
  253. package/oiml-r60/execution/subforms/load-test-row.prl +55 -0
  254. package/oiml-r60/execution/subforms/test-procedures.prl +33 -0
  255. package/oiml-r60/layers.prl +46 -0
  256. package/oiml-r60/model/attributes.prl +642 -0
  257. package/oiml-r60/model/behaviors.prl +165 -0
  258. package/oiml-r60/model/capabilities.prl +57 -0
  259. package/oiml-r60/model/characteristics.prl +27 -0
  260. package/oiml-r60/model/conditions.prl +50 -0
  261. package/oiml-r60/model/instrument.prl +96 -0
  262. package/oiml-r60/model/processes.prl +54 -0
  263. package/oiml-r60/model/state.prl +22 -0
  264. package/oiml-r60/model/twin.prl +16 -0
  265. package/oiml-r60/package.primmel +16 -0
  266. package/oiml-r60/payload/annexes-part4.yaml +122 -0
  267. package/oiml-r60/payload/application.yaml +83 -0
  268. package/oiml-r60/payload/conditions-common-test.yaml +121 -0
  269. package/oiml-r60/payload/formulas-variants.yaml +55 -0
  270. package/oiml-r60/payload/promises.yaml +224 -0
  271. package/oiml-r60/payload/sample-data.yaml +5025 -0
  272. package/oiml-r60/payload/symbols-formula-notes.yaml +21 -0
  273. package/oiml-r60/references.prl +549 -0
  274. package/oiml-r60/sources-prd/coverage.json +740 -0
  275. package/oiml-r60/sources-prd/r60-1.sentences.json +2173 -0
  276. package/oiml-r60/sources-prd/r60-2.sentences.json +2961 -0
  277. package/oiml-r60/sources-prd/r60-3.sentences.json +4212 -0
  278. package/oiml-r60/sources-prd/r60-a.sentences.json +3361 -0
  279. package/oiml-r60/specification/calculations.prl +318 -0
  280. package/oiml-r60/specification/conformance/class-specific.prl +1120 -0
  281. package/oiml-r60/specification/conformance/electronic.prl +483 -0
  282. package/oiml-r60/specification/conformance/examination.prl +183 -0
  283. package/oiml-r60/specification/conformance/metrological.prl +478 -0
  284. package/oiml-r60/specification/constraints.prl +58 -0
  285. package/oiml-r60/specification/formulas-used.prl +43 -0
  286. package/oiml-r60/specification/formulas.prl +20 -0
  287. package/oiml-r60/specification/requirements/class-specific.prl +655 -0
  288. package/oiml-r60/specification/requirements/classification.prl +114 -0
  289. package/oiml-r60/specification/requirements/electronic.prl +222 -0
  290. package/oiml-r60/specification/requirements/metrological.prl +381 -0
  291. package/oiml-r60/specification/requirements/technical.prl +146 -0
  292. package/oiml-r60/specification/symbols.prl +599 -0
  293. package/oiml-r60/specification/tables.prl +182 -0
  294. package/oiml-r60/specification/test-sequences.prl +72 -0
  295. package/oiml-r60/terminology.prl +920 -0
  296. package/oiml-r60/value-types.prl +46 -0
  297. package/oiml-r91/.primmel-allowlist.prl +3 -0
  298. package/oiml-r91/entities/instrument.prl +359 -0
  299. package/oiml-r91/entities/workflow.prl +2075 -0
  300. package/oiml-r91/evaluation/processes.prl +152 -0
  301. package/oiml-r91/evaluation/workflow.prl +48 -0
  302. package/oiml-r91/execution/forms/evidence-file.prl +41 -0
  303. package/oiml-r91/execution/forms/report-evaluation/appraisal.prl +30 -0
  304. package/oiml-r91/execution/forms/report-evaluation/checklist-summary.prl +43 -0
  305. package/oiml-r91/execution/forms/report-evaluation/checklist.prl +76 -0
  306. package/oiml-r91/execution/forms/report-evaluation/configuration-samples.prl +22 -0
  307. package/oiml-r91/execution/forms/report-evaluation/corrective-actions.prl +24 -0
  308. package/oiml-r91/execution/forms/report-evaluation/descriptions.prl +47 -0
  309. package/oiml-r91/execution/forms/report-evaluation/evaluation-identification.prl +219 -0
  310. package/oiml-r91/execution/forms/report-evaluation/test-report-summary.prl +33 -0
  311. package/oiml-r91/execution/forms/report-general/adjustments.prl +12 -0
  312. package/oiml-r91/execution/forms/report-general/alignment-aiming.prl +17 -0
  313. package/oiml-r91/execution/forms/report-general/checking-facility.prl +17 -0
  314. package/oiml-r91/execution/forms/report-general/configuration.prl +12 -0
  315. package/oiml-r91/execution/forms/report-general/identification.prl +216 -0
  316. package/oiml-r91/execution/forms/report-general/indications-controls.prl +17 -0
  317. package/oiml-r91/execution/forms/report-general/sealing.prl +21 -0
  318. package/oiml-r91/execution/forms/report-general/software-description.prl +26 -0
  319. package/oiml-r91/execution/forms/report-general/summary-environmental.prl +35 -0
  320. package/oiml-r91/execution/forms/report-general/summary-tests.prl +35 -0
  321. package/oiml-r91/execution/forms/report-general/test-equipment.prl +36 -0
  322. package/oiml-r91/execution/forms/report-general/test-interface.prl +16 -0
  323. package/oiml-r91/execution/forms/report-tests/01-01-field-test.prl +84 -0
  324. package/oiml-r91/execution/forms/report-tests/01-02-statistical-analysis.prl +76 -0
  325. package/oiml-r91/execution/forms/report-tests/01-03-image-evidence.prl +30 -0
  326. package/oiml-r91/execution/forms/report-tests/02-01-dynamic-performance.prl +92 -0
  327. package/oiml-r91/execution/forms/report-tests/02-02-speed-linearity.prl +23 -0
  328. package/oiml-r91/execution/forms/report-tests/02-03-distance-linearity.prl +67 -0
  329. package/oiml-r91/execution/forms/report-tests/02-04-angle-linearity.prl +59 -0
  330. package/oiml-r91/execution/forms/report-tests/03-01-dry-heat-operating.prl +38 -0
  331. package/oiml-r91/execution/forms/report-tests/03-02-dry-heat-storage.prl +48 -0
  332. package/oiml-r91/execution/forms/report-tests/03-03-cold-operating.prl +40 -0
  333. package/oiml-r91/execution/forms/report-tests/03-04-cold-storage.prl +48 -0
  334. package/oiml-r91/execution/forms/report-tests/03-05-damp-heat-cyclic.prl +40 -0
  335. package/oiml-r91/execution/forms/report-tests/03-06-water.prl +48 -0
  336. package/oiml-r91/execution/forms/report-tests/03-07-sand-and-dust.prl +48 -0
  337. package/oiml-r91/execution/forms/report-tests/03-08-salt-mist.prl +48 -0
  338. package/oiml-r91/execution/forms/report-tests/03-09-vibration-random.prl +40 -0
  339. package/oiml-r91/execution/forms/report-tests/03-10-mechanical-shock.prl +48 -0
  340. package/oiml-r91/execution/forms/report-tests/03-11-dc-mains-voltage-variation.prl +40 -0
  341. package/oiml-r91/execution/forms/report-tests/03-12-ripple-on-dc-mains.prl +47 -0
  342. package/oiml-r91/execution/forms/report-tests/03-13-ac-mains-voltage-variation.prl +40 -0
  343. package/oiml-r91/execution/forms/report-tests/03-14-ac-mains-frequency-variation.prl +40 -0
  344. package/oiml-r91/execution/forms/report-tests/03-15-dc-mains-voltage-dips.prl +46 -0
  345. package/oiml-r91/execution/forms/report-tests/03-16-ac-mains-voltage-dips.prl +46 -0
  346. package/oiml-r91/execution/forms/report-tests/03-17-ac-mains-frequency-harmonics.prl +47 -0
  347. package/oiml-r91/execution/forms/report-tests/03-18-vlf-lf-disturbances.prl +46 -0
  348. package/oiml-r91/execution/forms/report-tests/03-19-bursts-ac-dc-mains.prl +44 -0
  349. package/oiml-r91/execution/forms/report-tests/03-20-surges-ac-dc-mains.prl +45 -0
  350. package/oiml-r91/execution/forms/report-tests/03-21-bursts-signal-lines.prl +45 -0
  351. package/oiml-r91/execution/forms/report-tests/03-22-surges-signal-lines.prl +46 -0
  352. package/oiml-r91/execution/forms/report-tests/03-23-ac-mains-magnetic-field.prl +45 -0
  353. package/oiml-r91/execution/forms/report-tests/03-24-conducted-rf-common-mode.prl +46 -0
  354. package/oiml-r91/execution/forms/report-tests/03-25-rf-electromagnetic-fields.prl +49 -0
  355. package/oiml-r91/execution/forms/report-tests/03-26-electrostatic-discharges.prl +47 -0
  356. package/oiml-r91/execution/forms/report-tests/03-27-internal-battery-low-voltage.prl +40 -0
  357. package/oiml-r91/execution/forms/report-tests/03-28-road-vehicle-battery.prl +40 -0
  358. package/oiml-r91/execution/forms/report-tests/03-29-transient-supply-lines.prl +47 -0
  359. package/oiml-r91/execution/forms/report-tests/03-30-transient-other-lines.prl +45 -0
  360. package/oiml-r91/execution/forms/report-tests/03-31-battery-cranking.prl +45 -0
  361. package/oiml-r91/execution/forms/report-tests/03-32-load-dump.prl +47 -0
  362. package/oiml-r91/execution/forms/report-tests/03-33-acceleration.prl +66 -0
  363. package/oiml-r91/execution/forms/report-tests/03-34-further-influence.prl +60 -0
  364. package/oiml-r91/execution/forms/report-tests/03-35-installation-alignment.prl +29 -0
  365. package/oiml-r91/execution/forms/report-tests/04-01-doppler-radar.prl +43 -0
  366. package/oiml-r91/execution/forms/report-tests/04-02-range-finding.prl +42 -0
  367. package/oiml-r91/execution/forms/report-tests/04-03-average-speed.prl +41 -0
  368. package/oiml-r91/execution/forms/report-tests/04-04-fixed-distance.prl +40 -0
  369. package/oiml-r91/execution/forms/report-tests/04-05-image-based.prl +41 -0
  370. package/oiml-r91/execution/forms/report-tests/04-06-across-road.prl +42 -0
  371. package/oiml-r91/execution/forms/report-tests/05-01-moving-field-test.prl +29 -0
  372. package/oiml-r91/execution/forms/report-tests/05-02-ego-field-test.prl +57 -0
  373. package/oiml-r91/execution/forms/report-tests/05-03-moving-traffic-simulation.prl +31 -0
  374. package/oiml-r91/execution/forms/report-tests/06-01-software-general.prl +25 -0
  375. package/oiml-r91/execution/forms/report-tests/06-02-software-protection.prl +25 -0
  376. package/oiml-r91/execution/forms/report-tests/06-03-software-hardware-support.prl +24 -0
  377. package/oiml-r91/execution/forms/report-tests/06-04-software-separation.prl +25 -0
  378. package/oiml-r91/execution/forms/report-tests/06-05-software-maintenance.prl +24 -0
  379. package/oiml-r91/execution/forms/report-tests/07-general-remarks.prl +11 -0
  380. package/oiml-r91/execution/forms/shared/header-a.prl +63 -0
  381. package/oiml-r91/execution/subforms/software-matrix-row.prl +30 -0
  382. package/oiml-r91/execution/subforms/speed-measurement-row.prl +38 -0
  383. package/oiml-r91/layers.prl +46 -0
  384. package/oiml-r91/model/artifacts.prl +29 -0
  385. package/oiml-r91/model/attributes.prl +698 -0
  386. package/oiml-r91/model/behaviors.prl +142 -0
  387. package/oiml-r91/model/capabilities.prl +88 -0
  388. package/oiml-r91/model/characteristics.prl +27 -0
  389. package/oiml-r91/model/conditions.prl +37 -0
  390. package/oiml-r91/model/instrument.prl +147 -0
  391. package/oiml-r91/model/state.prl +22 -0
  392. package/oiml-r91/model/twin.prl +17 -0
  393. package/oiml-r91/package.primmel +14 -0
  394. package/oiml-r91/payload/application.yaml +201 -0
  395. package/oiml-r91/payload/conditions-common-test.yaml +19 -0
  396. package/oiml-r91/payload/promises.yaml +142 -0
  397. package/oiml-r91/payload/sample-data.yaml +464 -0
  398. package/oiml-r91/references.prl +72 -0
  399. package/oiml-r91/sources-prd/coverage.json +106 -0
  400. package/oiml-r91/sources-prd/r91-1.sentences.json +4696 -0
  401. package/oiml-r91/sources-prd/r91-2.sentences.json +2067 -0
  402. package/oiml-r91/sources-prd/r91-3.sentences.json +5210 -0
  403. package/oiml-r91/sources-prd/r91-4.sentences.json +474 -0
  404. package/oiml-r91/specification/calculations.prl +26 -0
  405. package/oiml-r91/specification/conformance/influence-disturbance.prl +1792 -0
  406. package/oiml-r91/specification/conformance/metrological.prl +906 -0
  407. package/oiml-r91/specification/formulas.prl +10 -0
  408. package/oiml-r91/specification/requirements/class-specific.prl +308 -0
  409. package/oiml-r91/specification/requirements/metrological.prl +176 -0
  410. package/oiml-r91/specification/requirements/technical.prl +173 -0
  411. package/oiml-r91/specification/symbols.prl +323 -0
  412. package/oiml-r91/specification/tables.prl +136 -0
  413. package/oiml-r91/terminology.prl +535 -0
  414. package/oiml-r91/value-types.prl +26 -0
  415. package/oiml-smart-core/entities/comments.prl +101 -0
  416. package/oiml-smart-core/entities/cs-operations.prl +492 -0
  417. package/oiml-smart-core/entities/cs-participants.prl +470 -0
  418. package/oiml-smart-core/entities/engagement.prl +323 -0
  419. package/oiml-smart-core/entities/instrument.prl +359 -0
  420. package/oiml-smart-core/entities/module-b.prl +214 -0
  421. package/oiml-smart-core/entities/operated-schemes.prl +141 -0
  422. package/oiml-smart-core/entities/parties.prl +429 -0
  423. package/oiml-smart-core/entities/payment-records.prl +92 -0
  424. package/oiml-smart-core/entities/verification.prl +187 -0
  425. package/oiml-smart-core/entities/workflow.prl +2075 -0
  426. package/oiml-smart-core/evaluation/roles.prl +65 -0
  427. package/oiml-smart-core/evaluation/state-machines.prl +1157 -0
  428. package/oiml-smart-core/package.primmel +10 -0
  429. package/oiml-smart-core/specification/competence-kinds.prl +64 -0
  430. package/oiml-smart-core/specification/constraints.prl +40 -0
  431. package/oiml-smart-core/specification/invariants.prl +90 -0
  432. package/oiml-smart-core/specification/predicates.prl +116 -0
  433. package/oiml-smart-module-emc-disturbances/package.primmel +10 -0
  434. package/oiml-smart-module-env-iec60068/package.primmel +10 -0
  435. package/oiml-smart-module-examination-docs/package.primmel +10 -0
  436. package/oiml-smart-module-reference-materials/package.primmel +10 -0
  437. package/oiml-smart-module-report-headers/package.primmel +10 -0
  438. package/oiml-smart-module-software-d31/package.primmel +10 -0
  439. package/oiml-smart-module-specimen-governance/entities/test-execution.prl +228 -0
  440. package/oiml-smart-module-specimen-governance/package.primmel +10 -0
  441. package/oiml-twin-cert/documents/tw-1/document.yaml +454 -0
  442. package/oiml-twin-cert/evaluation/roles.prl +15 -0
  443. package/oiml-twin-cert/execution/forms/probe-creep.prl +179 -0
  444. package/oiml-twin-cert/execution/forms/probe.prl +99 -0
  445. package/oiml-twin-cert/execution/forms/static-conformance.prl +50 -0
  446. package/oiml-twin-cert/model/attributes.prl +243 -0
  447. package/oiml-twin-cert/model/behaviors.prl +8 -0
  448. package/oiml-twin-cert/model/characteristics.prl +18 -0
  449. package/oiml-twin-cert/model/monitors.prl +16 -0
  450. package/oiml-twin-cert/package.primmel +16 -0
  451. package/oiml-twin-cert/specification/conformance/twin-fidelity.prl +176 -0
  452. package/oiml-twin-cert/specification/requirements/twin-fidelity.prl +137 -0
  453. package/oiml-twin-cert/specification/symbols.prl +36 -0
  454. package/oiml-twin-cert/terminology.prl +8 -0
  455. package/oimlsmart-primmel-packages-0.1.0.tgz +0 -0
  456. package/package.json +17 -0
  457. package/qms-ref/model/qms.prl +31 -0
  458. package/qms-ref/package.primmel +38 -0
  459. package/quarry-belt-scale/model/ops.prl +115 -0
  460. package/quarry-belt-scale/package.primmel +36 -0
@@ -0,0 +1,643 @@
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