====== 3.1 ENIVERSPIMS — Prüfwesen ====== //Stand: 2026-03-05// Übergeordnet: [[de:int:wvdsshell:notes:03-pims:start|PIMS-Architektur — Gesamtübersicht]] Verwandt: [[de:int:wvdsshell:notes:03-pims:work-orders|3.2 Arbeitsaufträge]] | [[de:int:wvdsshell:notes:03-pims:legacy-analysis|3.4 Legacy-Analyse]] ===== Konzept ===== Das Prüfwesen besteht aus drei Schichten: - **Prüfdefinition** — Was ist zu prüfen, wie oft, von wem? (''inspection.rule'' + ''inspection.prerequisite'') - **Prüfplanung** — Der geplante Termin als ''work.order'' (Typ ''U'' — Überprüfung) - **Prüfergebnis** — Das Protokoll nach der Durchführung (''inspection.result'' + ''inspection.measurement'') Prüftypen werden **nicht** hart kodiert — sie leben in ''inspection.discipline_type'' (erweiterbare Tabelle). ===== inspection.discipline_type — Prüftypen ===== Ersetzt das fehlende ''rule_type''-Konzept aus WIS (WIS hat keinen Prüftyp — er ergibt sich implizit aus dem Quellsystem + GP + BZ). In ENIVERSPIMS führen wir ihn explizit ein. CREATE TABLE inspection.discipline_type ( id INT NOT NULL IDENTITY PRIMARY KEY, code VARCHAR(30) NOT NULL, -- 'EMR_WIS', 'BGV_A3', 'BLITZSCHUTZ', ... label NVARCHAR(100) NOT NULL, description NVARCHAR(MAX) NULL, gp_code VARCHAR(10) NULL, -- WIS GP-Code falls zutreffend sort_order SMALLINT NOT NULL DEFAULT 0, is_active BIT NOT NULL DEFAULT 1, CONSTRAINT UQ_discipline_type_code UNIQUE (code) ) ==== Seed-Daten (aus AMED-Quellcode-Analyse: 39 EZA-Module + WIS) ==== ^ code ^ label ^ GP-Code ^ Quelle ^ | ''EMR_WIS'' | EMR-Prüfung (WIS/TimeTrain) | A | WIS (APPMASTER, GP=A) | | ''MECH_WIS'' | Mechanische Prüfung (WIS) | A | WIS (APPMASTER, MECH) | | ''BETRIEB_WIS'' | Betriebliche Prüfung (WIS) | BETRIEB | WIS (Betriebspersonal) | | ''BGV_A3'' | BGV A3 — Elektrische Prüfung | — | AMED Amed.Win.MsrEzA.BGV | | ''BLITZSCHUTZ'' | Blitzschutzanlage | — | AMED Amed.Win.MsrEzA.Blitzsch| | ''KV_PRUEF'' | Kraftverteiler-Prüfung | — | AMED Amed.Win.MsrEzA.KVPruf | | ''FI_SCHUTZ'' | FI-Schutzschalter-Prüfung | — | AMED Amed.Win.MsrEzA.FIListe| | ''BELEUCHTUNG'' | Beleuchtungsanlage | — | AMED Amed.Win.MsrEzA.Beleuch| | ''SICHER_BELEUCH''| Sicherheitsbeleuchtung | — | AMED Amed.Win.MsrEzA.SicherBeleuch | | ''EX_SCHUTZ'' | Ex-Schutz-Prüfung | — | AMED Amed.Win.MsrEzA.ExNachNum | | ''STARKSTROM'' | Starkstromanlage | — | AMED Amed.Win.MsrEzA.Starkstr| | ''HSHZ'' | HSHZ-Anlage | — | AMED Amed.Win.MsrEzA.HSHZListe| | ''ROHR'' | Rohrprüfung (TecDB) | — | AMED Amed.Win.Rohre | | ''SONSTIGE'' | Sonstige Prüfung | — | Erweiterungspunkt | ===== inspection.rule — Prüfregeln ===== Direkt abgeleitet aus dem **WIS-Parametersystem** (RuleKey / Rules / RuleBase). Jeder Rule-Datensatz beschreibt die Prüfkonfiguration eines Items. CREATE TABLE inspection.rule ( id INT NOT NULL IDENTITY PRIMARY KEY, item_id INT NOT NULL, -- FK → ENIVERSCAFM.asset.item discipline_type_id INT NOT NULL, -- FK → inspection.discipline_type -- WIS-Parameter (aus RuleKey-Dimensionen) iv_code VARCHAR(10) NULL, -- PIV: Prüfintervall (1T, 1W, 1M, 1J, 5J, ...) bz_code VARCHAR(5) NULL, -- BZ: Prüfzustand (L=Laufend, R=Ruhe, X=Außer, P=Pause) gp_code VARCHAR(10) NULL, -- GP: Ausführungsgruppe (EMR WIS, MECH WIS, BETRIEB, ...) eie_code VARCHAR(10) NULL, -- EIE: Einblendintervall vor Fälligkeit pv_code VARCHAR(20) NULL, -- PV: Prüfverantwortlicher po_code VARCHAR(20) NULL, -- PO: Prüforganisator bv_ref NVARCHAR(100) NULL, -- BV: Bezug/Vorschrift (BetrSichV, DGUV V3, ...) regulatory_src NVARCHAR(200) NULL, -- Volltext Vorschriftenquelle -- Aktivierung is_active BIT NOT NULL DEFAULT 1, valid_from DATE NULL, valid_until DATE NULL, -- NULL = unbefristet -- Migration legacy_rulebase_id INT NULL, -- WIS RuleBase-PK legacy_common_id INT NULL, -- WIS Common-PK -- Audit created_at DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(), updated_at DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME() ) ==== WIS-Parameter-Referenz ==== ^ Code ^ Bedeutung ^ Beispielwerte (aus WIS.Rules) ^ | PIV | Prüfintervall | 1T, 3T, 1W, 2W, 1M, 3M, 6M, 1J, 2J, 3J, 5J, 10J (37 Werte) | | BZ | Prüfzustand | L (Laufend), R (Ruhe), X (Außerbetrieb), P (Pause) | | GP | Ausführungsgruppe | EMR WIS, MECH WIS, BETRIEB, ext. Sachverst., ÜS | | EIE | Einblend-Voranzeige | 1T, 1W, 2W, 1M (wie früh wird Aufgabe sichtbar) | | PV | Prüfverantwortlicher | Personalkürzel / Rolle | | PO | Prüforganisator | Personalkürzel / Rolle | | BV | Bezug / Vorschrift | 180+ Rechtsreferenzen (BetrSichV, DGUV V3, ...) | | DK | Deaktivierungsdatum | Datum, ab dem Regel nicht mehr gilt | ===== inspection.prerequisite — Prüfvoraussetzungen ===== Speichert, welche Unterlagen/Zeichnungen für ein Item vorhanden sind. Abgeleitet aus **AMED EZAPrufVor** (1.376 Einträge, FK=IDEZA → EZAMASTER). CREATE TABLE inspection.prerequisite ( id INT NOT NULL IDENTITY PRIMARY KEY, item_id INT NOT NULL, -- FK → ENIVERSCAFM.asset.item -- Vorhandene Unterlagen (bit + Nummer) has_stellenblatt BIT NOT NULL DEFAULT 0, nr_stellenblatt NVARCHAR(50) NULL, has_stellenplan BIT NOT NULL DEFAULT 0, nr_stellenplan NVARCHAR(50) NULL, has_stromlaufplan BIT NOT NULL DEFAULT 0, nr_stromlaufplan NVARCHAR(50) NULL, has_fliessbild BIT NOT NULL DEFAULT 0, -- R&I-Ausschnitt has_funktionsplan BIT NOT NULL DEFAULT 0, nr_funktionsplan NVARCHAR(50) NULL, has_behaelterzeichnung BIT NOT NULL DEFAULT 0, nr_behaelterzeichnung NVARCHAR(50) NULL, -- Freitext-Hinweise pruef_cycle_comment NVARCHAR(125) NULL, -- Hinweis zum Prüfzyklus look_at_comment NVARCHAR(100) NULL, -- Was ist zu beachten pruefungshinweis NVARCHAR(MAX) NULL, -- Volltext Prüfanweisung datum_pruefvorschrift DATE NULL, -- Migration legacy_id INT NULL, -- EZAPrufVor.IDEZA -- Audit created_at DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(), updated_at DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(), created_by INT NULL, updated_by INT NULL ) ===== inspection.result — Prüfprotokoll ===== Wird nach Durchführung einer Prüfung (''work.order'' Typ ''U'') erstellt. CREATE TABLE inspection.result ( id INT NOT NULL IDENTITY PRIMARY KEY, work_order_id INT NOT NULL, -- FK → work.order (der abgeschlossene Auftrag) item_id INT NOT NULL, -- FK → ENIVERSCAFM.asset.item (denormalisiert) discipline_type_id INT NOT NULL, -- FK → inspection.discipline_type -- Durchführung inspected_by INT NULL, -- FK → ENIVERSSIAM.auth.user inspected_at DATETIME2 NOT NULL, -- Ergebnis result_code VARCHAR(20) NOT NULL, -- 'pass','fail','conditional','not_applicable' notes NVARCHAR(MAX) NULL, -- Dokumentreferenz doc_reference NVARCHAR(500) NULL, -- externe Dokumentennummer -- Folge-Auftrag bei Mangel fault_report_id INT NULL, -- FK → fault.report (wenn Mangel) -- Audit created_at DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME() ) ===== inspection.measurement — Messwerte ===== Für Prüfungen mit numerischen Messwerten (AMED EZALebMess, EZAMessHist). CREATE TABLE inspection.measurement ( id INT NOT NULL IDENTITY PRIMARY KEY, result_id INT NOT NULL, -- FK → inspection.result item_id INT NOT NULL, -- FK → ENIVERSCAFM.asset.item measured_at DATETIME2 NOT NULL, measured_by INT NULL, parameter_code VARCHAR(50) NOT NULL, -- z.B. 'ISOLATIONSWIDERSTAND', 'TEMPERATUR' value_numeric DECIMAL(15,4) NULL, value_text NVARCHAR(200) NULL, unit NVARCHAR(20) NULL, standort_code VARCHAR(20) NULL, -- EZALebStanOrt (Messstandort) notes NVARCHAR(500) NULL, -- Migration legacy_id INT NULL, -- EZALebMess.ID oder EZAMessHist.ID legacy_source VARCHAR(20) NULL -- 'AMED_LEBMess' | 'AMED_MESSHist' ) ===== Rohre als Asset-Typ ===== Rohre werden als ''asset.item'' mit ''type_code = 'piping''' geführt (ENIVERSCAFM). Die Rohrprüfung ist ''discipline_type.code = 'ROHR''' in ENIVERSPIMS. ENIVERSCAFM: ENIVERSPIMS: asset.item (type_code='piping') → inspection.rule (discipline_type='ROHR') asset.property_schema → inspection.result Baustein 'druckmedium' inspection.measurement (medium, druck_bar, dn, ...) (Wanddicke, Betriebsdruck, ...) Das ''druckmedium''-Baustein in ''asset.property_schema'' übernimmt die TecDB-Felder (Medium, Druck, Temperatur, Nennweite) als COMPOSITE-Eigenschaft.