3.1 ENIVERSPIMS — Prüfwesen

Konzept

Das Prüfwesen besteht aus drei Schichten:

  1. Prüfdefinition — Was ist zu prüfen, wie oft, von wem? (inspection.rule + inspection.prerequisite)
  2. Prüfplanung — Der geplante Termin als work.order (Typ U — Überprüfung)
  3. 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.

Zuletzt geändert: den 05.03.2026 um 22:23