4.2 wvds-amed-pims — PIMS-Extension

Zweck

Die Extension wvds-amed-pims ist die Benutzeroberfläche für die Prozessführung. Sie zeigt Prüfpläne, Arbeitsaufträge, Sicherheitsgespräche und Rohrleitungsprüfungen aus ENIVERSPIMS. Die vier Topics (PIMS-INSP, PIMS-EZA, PIMS-WORK, PIMS-PIPE) bilden die Prozesskette ab, die bisher über WIS/TimeTrain, vierzig AMED-Module und LD/ENIVERS ARBEIT verteilt war.

PIMS verwaltet keine Assets selbst — alle physischen Objekte (TP, Equipment, Rohre) liegen in ENIVERSCAFM. PIMS referenziert sie über asset.item.id via Cross-DB-Synonym.

Views

PIMS-INSP — Inspektionsplanung

View Form Beschreibung
INSP-Planung InspPlan.wfm Prüfpläne verwalten: inspection.schedule mit zugeordneten Regeln (inspection.rule). Filter nach Disziplin, Intervall, Fälligkeit. Forecast-Ansicht: welche Prüfungen stehen in den nächsten 30/90/365 Tagen an?
INSP-Aufgaben InspTasks.wfm Offene Prüfaufgaben (inspection.task). Fällig heute, diese Woche, überfällig. Zuweisungs-Dialog für Prüfer. Status-Wechsel: offen → in Arbeit → erledigt.
INSP-Ergebnisse InspResult.wfm Prüfergebnis erfassen: Bestanden/Mangel, Messwerte (inspection.measurement), Bemerkungen, Foto-Upload. Bei Mangel: automatische Weiterleitung an fault.report (→ PIMS-WORK).

Gateway-Endpunkte:

Methode Route Beschreibung
GET /api/v1/pims/insp/schedules?branch={id} Prüfpläne pro Betriebsstätte
GET /api/v1/pims/insp/schedules/{id}/rules Regeln eines Prüfplans
GET /api/v1/pims/insp/tasks?due={range} Offene Aufgaben nach Fälligkeitszeitraum
GET /api/v1/pims/insp/forecast?days={n} Forecast: fällige Prüfungen in n Tagen
POST /api/v1/pims/insp/tasks/{id}/result Prüfergebnis erfassen
POST /api/v1/pims/insp/tasks/{id}/assign Aufgabe einem Prüfer zuweisen

Pascal-Units:

Unit Verantwortung
Pims.InspPlan.pas Prüfplan-Verwaltung, Regel-Editor, Forecast-Chart
Pims.InspTasks.pas Aufgabenliste, Fälligkeits-Ampel, Zuweisungs-Dialog
Pims.InspResult.pas Ergebnis-Formular, Messwert-Eingabe, Mangel-Weiterleitung

WP-Abhängigkeiten:

WP Inhalt (Backend) Freigeschaltete UI-Funktion
PIMS-INSP 01 inspection.* Schema Grundstruktur Leere INSP-Views ladbar (Schema existiert)
PIMS-INSP 02 RuleBase-Migration aus WIS Regeln sichtbar in Prüfplan-View
PIMS-INSP 03 TimeTrain + sp_GenerateTasks Aufgaben sichtbar in INSP-Aufgaben
PIMS-INSP 04 Nachtjob sp_JedeNacht Automatisch generierte Aufgaben am nächsten Tag
PIMS-INSP 05 Forecast-Funktionen Forecast-Chart in INSP-Planung
PIMS-INSP 06 WIS Synonym-Ablösung (63 Synonyme) Kein WIS-Linked-Server mehr nötig (Backend-only)
PIMS-INSP 07 PROOF/HIST-DB Ablösung Historische Daten in INSP-Ergebnisse sichtbar

PIMS-EZA — Sicherheit / EZA-Verwaltung

View Form Beschreibung
EZA-Verwaltung Eza.wfm EZA-Stammdaten (safety.eza_master) verwalten: Instrument, Schutzziel, SIL-Bewertung, zugeordnete Prüfvorschriften (BGV A3, ATEX). Filter nach SIL-Stufe, Prüfstatus.
Sicherheitsgespräche EzaTalk.wfm Sicherheitsgespräch-Protokoll erfassen (safety.conversation): Aktoren, Sensoren, Begründungen, 4-dimensionale Risikobewertung, Unterschriften.

Gateway-Endpunkte:

Methode Route Beschreibung
GET /api/v1/pims/eza?sil={level} EZA-Instrumente nach SIL-Stufe
GET /api/v1/pims/eza/{id} EZA-Stammdaten inkl. Schutzziel, SIL
GET /api/v1/pims/eza/{id}/conversations Sicherheitsgespräche zu einem Instrument
POST /api/v1/pims/eza/{id}/conversation Neues Sicherheitsgespräch anlegen
GET /api/v1/pims/eza/{id}/prerequisites Prüfvorschriften (BGV A3, ATEX etc.)

Pascal-Units:

Unit Verantwortung
Pims.Eza.pas EZA-Liste, SIL-Filter, Prüfvorschriften-Zuordnung
Pims.EzaTalk.pas Gesprächsprotokoll: Risikomatrix, Aktoren/Sensoren, Signatur

WP-Abhängigkeiten:

WP Inhalt (Backend) Freigeschaltete UI-Funktion
PIMS-EZA 01 safety.* Schema Grundstruktur Leere EZA-Views ladbar
PIMS-EZA 02 AMED EZAMASTER Migration EZA-Instrumente sichtbar in EZA-Verwaltung
PIMS-EZA 03 Sicherheitsgespräche aus AMED Gesprächs-Historie in EzaTalk
PIMS-EZA 04 Prüfvorschriften BGV A3, ATEX Vorschriften-Tab in EZA-Verwaltung
PIMS-EZA 05 EZA-Lifecycle + PIMS-INSP Anbindung Cross-Ref: Prüfaufgaben pro EZA-Instrument

PIMS-WORK — Arbeitsaufträge / Instandhaltung

View Form Beschreibung
Arbeitsaufträge WorkOrders.wfm Zentrale Auftragsliste (work.order): Typ-Filter (U=Überprüfung, R=Reparatur, W=Wartung, S=Sonstiges). Status-Tracking: offen → geplant → in Arbeit → abgeschlossen. Kosten-Übersicht (work.order_cost).
Schadensmeldungen FaultReports.wfm Schaden/Mangel melden (fault.report): Asset auswählen, Schadensart, Fotos, Priorität. Automatische Erzeugung eines work.order (Typ R). Rückverfolgung zur Prüfung (wenn aus INSP-Ergebnis erzeugt).

Gateway-Endpunkte:

Methode Route Beschreibung
GET /api/v1/pims/work/orders?type={t}&status={s} Aufträge mit Typ/Status-Filter
GET /api/v1/pims/work/orders/{id} Auftrags-Detail inkl. Kosten, Plan, verknüpfte Prüfung
POST /api/v1/pims/work/orders Neuen Auftrag anlegen
PATCH /api/v1/pims/work/orders/{id}/status Status-Wechsel
GET /api/v1/pims/fault/reports?priority={p} Schadensmeldungen nach Priorität
POST /api/v1/pims/fault/reports Neue Schadensmeldung (erzeugt automatisch work.order)

Pascal-Units:

Unit Verantwortung
Pims.WorkOrders.pas Auftragsliste, Typ/Status-Filter, Kosten-Zusammenfassung
Pims.FaultReports.pas Schadensmeldungs-Formular, Verknüpfung mit Prüfergebnis

WP-Abhängigkeiten:

WP Inhalt (Backend) Freigeschaltete UI-Funktion
PIMS-WORK 01 work.* Schema Leere WORK-Views ladbar
PIMS-WORK 02 AMED Reparaturen-Migration Historische Reparaturen sichtbar
PIMS-WORK 03 Schadenmeldungen + Schadensarten Schadensmeldungs-Formular aktiv
PIMS-WORK 04 Stillstandsplanung Planungs-Tab in Auftrags-Detail
PIMS-WORK 05 Archivierung + PIMS-INSP Anbindung Cross-Ref: Auftrag → Prüfung, Archiv-Filter

PIMS-PIPE — Rohrleitungen

View Form Beschreibung
Rohr-Bestand Piping.wfm Rohrleitung-Übersicht: asset.item mit type_code=piping. Property-Grid mit JSON-Eigenschaften (ehemals 150 EAV-Spalten aus TecDB). Zugeordnete Prüfpläne (Cross-Ref PIMS-INSP). Dekommissionierungs-Status.

Gateway-Endpunkte:

Methode Route Beschreibung
GET /api/v1/cafm/obj?type=piping Rohrleitungsobjekte (via CAFM-API, type-Filter)
GET /api/v1/cafm/obj/{id} Rohrleitungs-Detail inkl. JSON-Properties
GET /api/v1/pims/insp/schedules?item={id} Prüfpläne für diese Rohrleitung (via INSP-API)

Pascal-Unit:

Unit Verantwortung
Pims.Piping.pas Rohr-Bestand, Property-Grid, Prüfplan-Cross-Ref, Dekomm.

Besonderheit: PIMS-PIPE nutzt keine eigenen Gateway-Endpunkte — die Asset-Daten kommen aus der CAFM-API (type=piping), die Prüfpläne aus der INSP-API. Die PIPE-View ist damit ein reiner Cross-Domain-Consumer, der beide APIs kombiniert.

WP-Abhängigkeiten:

WP Inhalt (Backend) Freigeschaltete UI-Funktion
PIMS-PIPE 01 TecDB Analyse (150 Spalten, EAV) — (Analyse-Phase, keine UI)
PIMS-PIPE 02 property_schema für piping Property-Grid in Piping.wfm zeigt Felder
PIMS-PIPE 03 EAV → JSON Migration JSON-Properties sichtbar
PIMS-PIPE 04 Trigger-Ablösung (trgRohrMaster) — (Backend-Stabilität, keine UI)
PIMS-PIPE 05 v_item_piping View + Validierung Validierter Rohr-Bestand in der Liste
PIMS-PIPE 06 Rohr-Prüfpläne in PIMS-INSP einbinden Prüfplan-Tab in Piping.wfm
PIMS-PIPE 07 TecDB Abnahme + Dekommissionierung Dekomm.-Status und Abnahme-Historie

TreeView-Struktur

Der TreeView amedPimsExplorer in der Activity-Bar-Sidebar:

amedPimsExplorer
├── Prüfwesen (INSP)                    → öffnet InspPlan.wfm
│   ├── Prüfpläne
│   │   └── [Prüfplan X]               → öffnet InspPlan.wfm (Detail)
│   ├── Offene Aufgaben (12)            → öffnet InspTasks.wfm
│   │   ├── Überfällig (3)
│   │   ├── Heute (4)
│   │   └── Diese Woche (5)
│   └── Forecast                        → öffnet InspPlan.wfm (Forecast-Tab)
├── Sicherheit (EZA)                     → öffnet Eza.wfm
│   ├── EZA-Instrumente
│   │   ├── SIL 1
│   │   ├── SIL 2
│   │   └── SIL 3
│   └── Sicherheitsgespräche             → öffnet EzaTalk.wfm
├── Arbeitsaufträge (WORK)               → öffnet WorkOrders.wfm
│   ├── Offen (23)
│   ├── In Arbeit (8)
│   └── Abgeschlossen (dieses Jahr)
└── Rohrleitungen (PIPE)                 → öffnet Piping.wfm
    ├── Aktiv
    └── Dekommissioniert

Workflow-Kette in der UI

Die Views sind entlang des PIMS-Workflows verknüpft — ein Klick führt den Benutzer entlang der Prozesskette:

InspPlan.wfm                    InspTasks.wfm                InspResult.wfm
[Prüfplan auswählen]  ────►   [Aufgabe öffnen]  ────►     [Ergebnis erfassen]
                                                                 │
                                                          ┌──────┴──────┐
                                                          │             │
                                                     [Bestanden]   [Mangel]
                                                                       │
                                                                       ▼
                                                              FaultReports.wfm
                                                           [Schadensmeldung]
                                                                       │
                                                                       ▼
                                                              WorkOrders.wfm
                                                           [Reparaturauftrag]
                                                                       │
                                                          [Sicherheitsgespräch nötig?]
                                                                       │
                                                                       ▼
                                                               EzaTalk.wfm
                                                          [Gespräch protokollieren]

Verzeichnisstruktur

wvds-amed-pims/
├── src-pas/
│   ├── extension.pas
│   ├── Pims.Interop.pas
│   ├── Pims.InspPlan.pas
│   ├── Pims.InspTasks.pas
│   ├── Pims.InspResult.pas
│   ├── Pims.Eza.pas
│   ├── Pims.EzaTalk.pas
│   ├── Pims.WorkOrders.pas
│   ├── Pims.FaultReports.pas
│   ├── Pims.Piping.pas
│   ├── services/
│   │   ├── Services.Lifecycle.pas
│   │   └── Services.Gateway.pas
│   └── tree/
│       └── Tree.Pims.pas
├── forms/
│   ├── InspPlan.wfm
│   ├── InspTasks.wfm
│   ├── InspResult.wfm
│   ├── Eza.wfm
│   ├── EzaTalk.wfm
│   ├── WorkOrders.wfm
│   ├── FaultReports.wfm
│   └── Piping.wfm
├── media/
│   └── icons/
│       ├── activity-bar.svg
│       └── pims.svg
├── dist/
├── package.json
├── package.nls.json
├── package.nls.de.json
├── build.ps1
├── CLAUDE.md
└── .vscodeignore

package.json (Gerüst)

{
  "name": "wvds-amed-pims",
  "displayName": "%extension.displayName%",
  "description": "%extension.description%",
  "version": "0.1.0",
  "publisher": "wvds",
  "engines": { "vscode": "^1.85.0" },
  "categories": ["Other"],
  "activationEvents": ["onStartupFinished"],
  "main": "./dist/extension.js",
  "contributes": {
    "viewsContainers": {
      "activitybar": [
        { "id": "amedPims", "title": "%viewsContainer.title%", "icon": "media/icons/activity-bar.svg" }
      ]
    },
    "views": {
      "amedPims": [
        { "id": "amedPimsExplorer", "name": "%views.explorer.name%" }
      ]
    },
    "commands": [
      { "command": "amed.pims.openInspPlan",     "title": "%commands.openInspPlan.title%" },
      { "command": "amed.pims.openInspTasks",    "title": "%commands.openInspTasks.title%" },
      { "command": "amed.pims.openEza",          "title": "%commands.openEza.title%" },
      { "command": "amed.pims.openWorkOrders",   "title": "%commands.openWorkOrders.title%" },
      { "command": "amed.pims.openFaultReports", "title": "%commands.openFaultReports.title%" },
      { "command": "amed.pims.openPiping",       "title": "%commands.openPiping.title%" },
      { "command": "amed.pims.refreshExplorer",  "title": "%commands.refresh.title%", "icon": "$(refresh)" }
    ]
  }
}
Zuletzt geändert: den 06.03.2026 um 09:00