Skill Tracer
Skills › Scientific Agent Skills › iso-standards-readiness › _catalog.py

_catalog.py

248 lines · skills/iso-standards-readiness/scripts/_catalog.py at 5f2bc03

1#!/usr/bin/env python3
2"""Per-standard process labels and scope vocabulary used by the local checks.
3
4The labels are workflow topics. They are not clause text from any standard, not a
5clause map, and not a substitute for an authorized copy. Listing a standard here
6does not decide that the standard applies to an organization, and the profiles
7carry no assurance meaning: selecting an accreditation profile does not make a
8result an accreditation outcome.
9"""
11from __future__ import annotations
13from dataclasses import dataclass
15# --- Scope vocabulary ------------------------------------------------------
17DEVICE_LIFECYCLE_ACTIVITIES = (
18 "design-and-development",
19 "manufacturing",
20 "contract-manufacturing",
21 "sterilization",
22 "packaging-and-labeling",
23 "storage",
24 "distribution",
25 "installation",
26 "servicing",
27 "software-development",
28 "complaint-handling",
29 "postmarket-surveillance",
30 "regulatory-reporting",
33LABORATORY_ACTIVITIES = (
34 "sampling",
35 "testing",
36 "calibration",
37 "examination",
38 "point-of-care-testing",
39 "specimen-collection-and-transport",
40 "method-development-and-validation",
41 "interpretation-and-advice",
42 "subcontracted-activity",
43 "storage-and-retention",
44 "data-and-reporting",
47# --- Process/evidence domains ---------------------------------------------
49# Retained under its original name: the device QMS domain set stays the default
50# vocabulary for manifests written against earlier versions of this skill.
51PROCESS_DOMAINS = (
52 "scope-and-roles",
53 "document-and-record-control",
54 "risk-management",
55 "design-and-development",
56 "supplier-controls",
57 "production-and-service",
58 "process-and-software-validation",
59 "identification-and-traceability",
60 "complaints-and-feedback",
61 "postmarket-and-vigilance",
62 "nonconformity-and-capa",
63 "internal-audit",
64 "management-review",
65 "training-and-competence",
66 "change-control",
69RISK_MANAGEMENT_DOMAINS = (
70 "risk-management-plan",
71 "risk-management-file",
72 "competence-and-authority",
73 "intended-use-and-characteristics",
74 "hazard-identification",
75 "risk-estimation-and-evaluation",
76 "risk-control-option-analysis",
77 "risk-control-implementation-and-verification",
78 "risk-control-side-effects-review",
79 "residual-risk-evaluation",
80 "benefit-risk-analysis",
81 "overall-residual-risk-evaluation",
82 "risk-management-review-and-report",
83 "production-and-postproduction-information",
84 "change-control",
87TESTING_LABORATORY_DOMAINS = (
88 "scope-and-impartiality",
89 "organizational-structure-and-management",
90 "personnel-competence",
91 "facilities-and-environmental-conditions",
92 "equipment-and-calibration",
93 "metrological-traceability",
94 "externally-provided-products-and-services",
95 "review-of-requests-and-contracts",
96 "method-selection-verification-and-validation",
97 "sampling",
98 "handling-of-items",
99 "technical-records",
100 "measurement-uncertainty",
101 "validity-of-results-and-proficiency-testing",
102 "reporting-and-decision-rules",
103 "complaints",
104 "nonconforming-work",
105 "data-and-information-management",
106 "internal-audit",
107 "management-review",
108 "corrective-action-and-improvement",
111MEDICAL_LABORATORY_DOMAINS = (
112 "scope-and-impartiality",
113 "organizational-structure-and-governance",
114 "personnel-competence",
115 "facilities-and-safety",
116 "equipment-and-calibration",
117 "metrological-traceability",
118 "reagents-and-consumables",
119 "externally-provided-products-and-services",
120 "pre-examination-processes",
121 "examination-methods-verification-and-validation",
122 "measurement-uncertainty",
123 "validity-of-results-and-external-quality-assessment",
124 "point-of-care-testing",
125 "post-examination-and-reporting",
126 "laboratory-information-management",
127 "complaints",
128 "nonconformity-and-corrective-action",
129 "risk-management-and-improvement",
130 "internal-audit",
131 "management-review",
132 "continuity-and-emergency-preparedness",
135# --- Scope-item field sets -------------------------------------------------
137DEVICE_PRODUCT_FIELDS = (
138 ("family", 300),
139 ("intended_use", 2_000),
140 ("classification_or_rationale", 1_000),
143CALIBRATION_SCOPE_FIELDS = (
144 ("discipline", 300),
145 ("method_or_procedure", 500),
146 ("measurand_or_property", 500),
147 ("range_and_uncertainty", 500),
150EXAMINATION_SCOPE_FIELDS = (
151 ("discipline", 300),
152 ("examination_or_measurand", 500),
153 ("method_or_procedure", 500),
154 ("primary_sample_type", 300),
158@dataclass(frozen=True)
159class StandardProfile:
160 """Declared vocabulary for one standard. Carries no conformity meaning."""
162 key: str
163 label: str
164 assurance_lane: str
165 activities_section: str
166 scope_activities: tuple[str, ...]
167 scope_item_section: str
168 scope_item_fields: tuple[tuple[str, int], ...]
169 process_domains: tuple[str, ...]
172STANDARDS: dict[str, StandardProfile] = {
173 "iso-13485": StandardProfile(
174 key="iso-13485",
175 label="ISO 13485 medical device quality management system",
176 assurance_lane="third-party certification",
177 activities_section="lifecycle_activities",
178 scope_activities=DEVICE_LIFECYCLE_ACTIVITIES,
179 scope_item_section="products",
180 scope_item_fields=DEVICE_PRODUCT_FIELDS,
181 process_domains=PROCESS_DOMAINS,
182 ),
183 "iso-14971": StandardProfile(
184 key="iso-14971",
185 label="ISO 14971 application of risk management to medical devices",
186 assurance_lane="risk evidence assessed inside a declared assurance lane",
187 activities_section="lifecycle_activities",
188 scope_activities=DEVICE_LIFECYCLE_ACTIVITIES,
189 scope_item_section="products",
190 scope_item_fields=DEVICE_PRODUCT_FIELDS,
191 process_domains=RISK_MANAGEMENT_DOMAINS,
192 ),
193 "iso-17025": StandardProfile(
194 key="iso-17025",
195 label="ISO/IEC 17025 competence of testing and calibration laboratories",
196 assurance_lane="accreditation by an accreditation body",
197 activities_section="laboratory_activities",
198 scope_activities=LABORATORY_ACTIVITIES,
199 scope_item_section="scope_items",
200 scope_item_fields=CALIBRATION_SCOPE_FIELDS,
201 process_domains=TESTING_LABORATORY_DOMAINS,
202 ),
203 "iso-15189": StandardProfile(
204 key="iso-15189",
205 label="ISO 15189 quality and competence of medical laboratories",
206 assurance_lane="accreditation by an accreditation body",
207 activities_section="laboratory_activities",
208 scope_activities=LABORATORY_ACTIVITIES,
209 scope_item_section="scope_items",
210 scope_item_fields=EXAMINATION_SCOPE_FIELDS,
211 process_domains=MEDICAL_LABORATORY_DOMAINS,
212 ),
215STANDARD_KEYS = tuple(sorted(STANDARDS))
216DEFAULT_STANDARD = "iso-13485"
218# --- Lane-specific catalogs ------------------------------------------------
220QMSR_TRANSITION_ITEMS = (
221 "qmsr-source-basis",
222 "applicability-owner",
223 "fda-supplemental-provisions",
224 "legacy-qsr-reference-disposition",
225 "pre-effective-date-record-review",
226 "inspection-accessible-records",
227 "inspection-process-training",
228 "qsit-retirement",
229 "complaint-and-servicing-records",
230 "labeling-and-packaging-controls",
231 "software-validation-impact",
232 "supplier-and-outsourced-process-controls",
233 "certificate-claims-review",
234 "change-control-approval",
237TRACEABILITY_LINKS = (
238 "intended_use",
239 "hazard_or_signal",
240 "risk_evaluation",
241 "risk_control",
242 "design_input",
243 "design_output",
244 "verification",
245 "validation",
246 "production_control",
247 "postmarket_source",