{"id":48444534,"url":"https://github.com/erroronline1/caro","last_synced_at":"2026-04-06T17:04:37.873Z","repository":{"id":296713150,"uuid":"734496446","full_name":"erroronline1/caro","owner":"erroronline1","description":"Cloud Assisted Records and Operations - a quality management software. Device agnostic web-app for local Apache- or IIS-server environments","archived":false,"fork":false,"pushed_at":"2026-04-03T23:53:37.000Z","size":12728,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-04T01:23:58.128Z","etag":null,"topics":["cloud","eqms","iso-13485","quality-control","quality-management","quality-management-system","webapp"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erroronline1.png","metadata":{"files":{"readme":"readme.de.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-12-21T20:47:09.000Z","updated_at":"2026-04-03T23:53:43.000Z","dependencies_parsed_at":"2025-06-21T01:29:03.525Z","dependency_job_id":"25b4a52b-56d4-44f6-804b-0437849f08f0","html_url":"https://github.com/erroronline1/caro","commit_stats":null,"previous_names":["erroronline1/caro"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/erroronline1/caro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erroronline1%2Fcaro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erroronline1%2Fcaro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erroronline1%2Fcaro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erroronline1%2Fcaro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erroronline1","download_url":"https://codeload.github.com/erroronline1/caro/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erroronline1%2Fcaro/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31481242,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T14:34:32.243Z","status":"ssl_error","status_checked_at":"2026-04-06T14:34:31.723Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud","eqms","iso-13485","quality-control","quality-management","quality-management-system","webapp"],"created_at":"2026-04-06T17:04:05.455Z","updated_at":"2026-04-06T17:04:37.845Z","avatar_url":"https://github.com/erroronline1.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"![CARO logo](media/favicon/icon72.png)\n# CARO - Cloud Assisted Records and Operations\nEine Qualitätsmanagement-Software als geräteunabhängige Web-Anwendung für lokale Apache- oder IIS-Server-Umgebungen.\n\n## Übersicht\n* [Ziele](#ziele)\n    * [Wesentliche Aspekte](#wesentliche-aspekte)\n    * [Erforderliche Infrastruktur](#erforderliche-infrastruktur)\n    * [Was es nicht ist](#was-es-nicht-ist)\n    * [Extras](#extras)\n    * [Datenintegrität](#datenintegrität)\n* [Module](#module)\n    * [Anwendung](#anwendung)\n        * [Nutzer](#nutzer)\n        * [Anleitung](#Anleitung)\n    * [Kommunikation](#kommunikation)\n        * [Unterhaltungen](#unterhaltungen)\n        * [Ankündigungen](#ankündigungen)\n        * [Mitarbeiterverzeichnis](#mitarbeiterverzeichnis)\n        * [Textvorschläge](#textvorschläge)\n        * [Verantwortlichkeiten](#verantwortlichkeiten)\n        * [Verbesserungsvorschläge](#verbesserungsvorschläge)\n        * [Whiteboard](#whiteboard)\n    * [Aufzeichnungen](#aufzeichnungen-1)\n        * [Dokumente](#dokumente)\n        * [Aufzeichnungen](#aufzeichnungen-2)\n        * [Risikomanagement](#risikomanagement)\n        * [Audit](#audit)\n        * [Managementbericht](#managementbericht)\n    * [Kalender](#kalender)\n        * [Terminvereinbarung](#terminvereinbarung)\n        * [Aufgaben](#aufgaben)\n        * [Arbeitslisten](#arbeitslisten)\n        * [Langzeitplanung](#langzeitplanung)\n        * [Zeiterfassung](#zeiterfassung)\n    * [Dateien](#dateien)\n    * [Einkauf](#einkauf)\n        * [Lieferanten- und Artikelverwaltung](#lieferanten--und-artikelverwaltung)\n        * [Bestellung](#bestellung)\n    * [Werkzeuge](#werkzeuge)\n    * [Regulatorische Auswertungen und Zusammenfassungen](#regulatorische-auswertungen-und-zusammenfassungen)\n    * [Wartung](#wartung)\n* [In der Anwendung verteilte Integrationen](#in-der-anwendung-verteilte-integrationen)\n    * [CRON](#cron)\n    * [Erinnerungen und automatische Aufgabenplanung](#erinnerungen-und-automatische-aufgabenplanung)\n    * [Löschung von Aufzeichnungen](#löschung-von-aufzeichnungen)\n    * [Schulungen](#schulungen)\n    * [Suche](#suche)\n    * [Markdown](#markdown)\n    * [CSV Prozessor](#csv-prozessor)\n    * [ERP Anbindung](#erp-anbindung)\n* [Tips](#tips)\n* [Vorgesehene regulatorische Zielsetzungen](#vorgesehene-regulatorische-zielsetzungen)\n* [Voraussetzungen](#voraussetzungen)\n    * [Installation](#installation)\n    * [Laufzeitvariablen](#laufzeitvariablen)\n    * [Anmerkungen und Hinweise zur Nutzung](#anmerkungen-und-hinweise-zur-nutzung)\n    * [Bekannte Schwachstellen](#bekannte-schwachstellen)\n    * [Anpassung](#anpassung)\n    * [Erwägungen zur Nutzerakzeptanz](#erwägungen-zur-nutzerakzeptanz)\n    * [Importierung von Lieferantenartikellisten](#importierung-von-lieferantenartikellisten)\n* [Regulatorische Anforderungen an die Software](#regulatorische-anforderungen-an-die-software)\n    * [Empfehlungen zur Nutzerunterweisung](#empfehlungen-zur-nutzerunterweisung)\n    * [Risikoanalyse](#risikoanalyse)\n    * [Erklärung zur Barrierefreiheit](#erklärung-zur-barrierefreiheit)\n* [Code Design Vorlagen](#code-design-vorlagen)\n* [API Dokumentation](#api-dokumentation)\n* [Stellungnahme zu technischen Richtlinien zur Datensicherheit](#stellungnahme-zu-technischen-richtlinien-zur-datensicherheit)\n    * [Nutzungsrichtlinien für die Nutzung der Anwendung](#nutzungsrichtlinien-für-die-nutzung-der-anwendung)\n* [Bibliotheken](#bibliotheken)\n* [Lizenz](#lizenz)\n\nDie aktuellste Dokumentation ist verfügbar auf [https://github.com/erroronline1/caro](https://github.com/erroronline1/caro)\n\n# Ziele\nDiese Anwendung möchte bei der Umsetzung eines Qualitätsmanagements nach ISO 13485 und der internen Kommunikation unterstützen. Sie wird als Web-Anwendung auf einem Server verwendet. Datensicherheitsmaßnahmen sind auf die Nutzung innerhalb eines Netzwerks ausgelegt, welches nicht aus dem Internet erreichbar ist. Die Ausgestaltung ermöglicht es der Belegschaft Daten abzurufen und bereitzustellen wo andere Branchensoftware aufgrund ihrer Lizenzmodelle nur eingeschränkt verwendet werden kann.\n\nDatenerfassung soll dabei weitestgehend digital erfolgen und letztendlich papierbasierte Dokumentationen ablösen. Es mag andere Anwendungen mit dem gleichen Ziel geben, diese verfolgen jedoch einen anderen Grundgedanken - die Verwaltung von Reha-Hilfsmitteln, einem Fokus auf orthopädische Schuhversorgungen oder einer primären Produktivitätsüberwachung - anstelle des primären Dokumentationsgedankens der CARO App für Hilfsmittel als Sonderanfertigungen in kleinen und mittelständigen Unternehmen. Ganz zu schweigen von unübersichtlichen Nutzeroberflächen, die ebenfalls das Ziel einer leicht verständlichen und einfachen Oberfläche steckten.\n\n## Wesentliche Aspekte\n* Transparenz: direkter Zugriff auf Daten\n* Dokumentenverwaltung: volle Versionskontrolle, wiederverwendbare Komponenten, Zugriff auf frühere Versionen\n* einfache Formularerstellung: Formulare einfach zusammenstellen und nahtlose Integration in die Anwendung\n* Risikomanagment: mit Abgleich zwischen Risiken und Eigenschaften von Medizinprodukten\n* Schulungs- und Qualifikationsverwaltung: Planung, schnelle Übersicht mit Beurteilung und hervorgehobenen Ablaufdaten\n* Aufgaben- und Abwesenheitsplaner: Arbeiten planen mit gleichzeitiger Übersicht über Abwesenheiten\n* strukturierte Beschaffung: reduzierte Rückfragen, automatisierte Erinnerungen, Einführungsaufzeichnungen und Stichprobenprüfung\n* Rollenverwaltung: definierte Nutzerberechtigungen und eine angemessene Informationsfülle\n* Auditunterstützung: interne Audits vorbereiten, planen und durchführen, Zusammenfassungen der Anwendungsdaten in aufgeräumten Übersichten\n* Verbesserungsvorschläge: jeder kann Verbesserungsvorschläge äußern und bewerten, sowie die Maßnahmen einsehen\n* Automatische Planungen, Erinnerungen und Benachrichtigungen\n* Blockchain gesicherte Aufzeichnungsdaten\n* Geräteunabhängig: Web-Anwendung mit jedem geeigneten Gerät nutzbar\n* keine künstliche Intelligenz: volle Datenhoheit behalten\n\n![dashboard screenshot](http://toh.erroronline.one/caro/dashboard%20de-fullpage.png)\n\n## Erforderliche Infrastruktur \nEs wird ein Server zur Speicherung und Ausführung der Web-Anwendung, sowie Netzwerkzugriff für alle Endgeräte benötigt. Die Anwendung ist dafür ausgelegt primär auf mobilen Geräten wie beispielsweise Android-Tablets oder iPads genutzt zu werden, kann aber auch auf Desktop-Computern genutzt werden. Manche Funktionen wie die Erstellung von Dokumenten, Textvorschlägen und Auditvorlagen sind primär nur auf Desktop-Computern mit Maus-Eingabegeräten möglich.\n\nDas oberste Ziel ist die Ausstattung der gesamten Belegschaft oder zumindest von Schlüsselpositionen und Arbeitsplätzen mit mobilen Geräten. Schließlich kann die Administration nicht nach Digitalisierung verlangen ohne eine geeignete Infrastruktur zur Verfügung zu stellen. Scanner sind optional, da Scannen ebensogut mit in den Geräten eingebauten Kameras umgesetzt werden kann.\n\nFür technische Details siehe [Voraussetzungen](#voraussetzungen).\n\n## Was es nicht ist\nAbgesehen von einigen architektonischen Entscheidungen zur Erfüllung regulatorischer Anforderungen ist die Anwendung kein vollständig voreingestelltes Qualitätsmanagementsystem. Prozesse, Dokumente und Verantwortlichkeiten sind selbst zu bestimmen. Die Anwendung soll lediglich dabei unterstützen strukturierte Abläufe und eine halbautomatisierte Erfüllung regulatorischer Anforderungen sicherzustellen. *Berechtigungen in den Flussdiagrammen stellen unverbindliche Standardeinstellungen dar.*\n\nDie Anwendung ersetzt kein ERP-System. Daten für den Einkauf sind nur innerhalb der Oberfläche auf Basis der eigenen Datenbank möglich. Diese bewusste Entscheidung richtet sich gegen aufgeblähte Artikelstammdaten von ERP-Systemen derer kaum Herr zu werden möglich ist und die stets eine geschlossene Benutzeroberfläche erfordern. Die Produktdatenbank kann durch Artikellisten (z.B. Preislisten) der Lieferanten bestückt und dabei von vorneherein regelmäßig um unwichtige Daten bereinigt werden. Auch ERP Datenexporte können genutzt werden und wenn es gut läuft auch saubere Daten durch die [ERP-Anbindung](#erp-anbindung) importiert werden.\n\nBestellungen können von berechtigen Nutzern und Mitgliedern der bestellenden Bereiche jederzeit und zudem nach Ablauf einer definierten Zeit nach Auslieferung gelöscht werden. Dieses Modul dient in erster Linie der internen Kommunikation und nicht einer dauerhaften Dokumentation. Obwohl Bestellungen in einer zweiten Datenbank gespeichert und für einen verlängerten Zeitraum abrufbar sind, beinhalten diese Daten wahrscheinlich keine regulatorisch relevanten Informationen die nicht ohnehin im ERP-System abgebildet werden sollten.\n\n## Extras\n* Textempfehlungen\n    * Standard- und anpassbare [Textvorschläge](#textvorschläge) können definiert werden um eine durchgängige Sprachregelung zu unterstützen.\n* Dateiverteilung\n    * Die Anwendung hat einen [Sharepoint](#dateien) für Dateien mit integriertem STL/OBJ-Betrachter um vereinfacht Informationen austauschen zu können.\n* CSV-Filterung\n    * Die Anwendung ist in der Lage CSV-Dateien auf vielfältige Weise zu [filtern und zu verarbeiten](#csv-prozessor).\n* Zeitzonen und Bundesländer\n    * Die Anwendung kann unterschiedliche Zeitzonen und Bundesländer in Bezug auf Feiertage verarbeiten, je nach Standortverteilung.\n\n[Übersicht](#übersicht)\n\n## Datenintegrität\n\n### Identifikation\nAufzeichnungen speichern stets den Namen des übermittelnden Nutzers ab. Gruppen-Nutzer sind daher nicht empfohlen, jedoch mit eingeschränkten Berechtigungen möglich. Individuelle Nutzer sind indes vorgesehen. Berechtigte Nutzer können andere Nutzer anlegen, bearbeiten und löschen. Zur Vereinfachung wird ein Token erstellt der als QR-Code exportiert und bei der Anmeldung gescannt werden kann. Dadurch muss weniger getippt werden. Eine zusätzliche PIN ist allerdings aus Datenschutzgründen erforderlich.\n\n### Aufzeichnungen\nDie Übermittlung von Formulardaten fügt dem Datenpaket eine verschlüsselte Nutzeridentifikation hinzu, der Server verifiziert die Identität und Datenintegrität durch eine Prüfsumme.\n\nAufzeichnungen werden in einem [Blockchain Datenformat](#blockchain-gesicherte-inhalte) gespeichert. Jeder Versuch die Daten zu manipulieren invalidiert die gesamte Aufzeichnung aufgrund widersprüchlicher Hashes und Prüfsummen.\n\nDokumente können ein digitales Unterschriftenfeld beinhalten. Gemäß eIDAS\n\u003e Artikel 26  \n\u003e Anforderungen an fortgeschrittene elektronische Signaturen  \n\u003e Eine fortgeschrittene elektronische Signatur erfüllt alle folgenden Anforderungen:  \n\u003e (a) Sie ist eindeutig dem Unterzeichner zugeordnet.  \n\u003e (b) Sie ermöglicht die Identifizierung des Unterzeichners.  \n\u003e (c) Sie wird unter Verwendung elektronischer Signaturerstellungsdaten erstellt, die der Unterzeichner mit einem hohen Maß an Vertrauen unter seiner alleinigen Kontrolle verwenden kann.  \n\u003e (d) Sie ist so mit den auf diese Weise unterzeichneten Daten verbunden, dass eine nachträgliche Veränderung der Daten erkannt werden kann.\n\nbezüglich (a) und (b): Unterschriften werden händisch gezeichnet und als Bilddatei anstelle unkenntlicher Datensätze gespeichert. Das Bild ist mit offiziellen Ausweisdokumenten abgleichbar. Die Identität des Unterzeichners ist sichergestellt, da die Unterschrift persönlich und vor Ort stattfindet.  \nbezüglich (c): handschriftliche Unterschriften liegen gänzlich in der Kontrolle des Unterzeichnenden. Die visuelle Einbindung kann eindeutig vor der Absendung gebilligt werden. Die unterzeichneten Daten sind stets in der selben Ansicht wie das Unterschriftenfeld.  \nbezüglich (d): Der Dateien-Hash der Bilddatei ist Teil der Aufzeichnungen und über eine Blockchain gesichert. Eine nachträgliche Veränderung der Unterschrift oder der Daten macht die gesamte Aufzeichnung ungültig.\n\nEs wird die Absprache mit dem Datenschutzbeauftragten empfohlen ob das als elektronische Unterschrift anerkannt wird.\n\n### Verschiedenes\nFormulardaten und Serveranfragen beinhalten teilweise IDs um spezifische Inhalte zu erreichen. Technisch gesehen ist es möglich diese Daten und Anfragen zu manipulieren. Dennoch wird dieses Vorgehen als angemessen bewertet, da Serververarbeitungen nicht in der Lage sind auf die ursprüngliche Intention zu schließen. Dies erscheint nicht weniger sicher als eine beabsichtige Falschangabe in einer beliebigen papierbasierten Dokumentation.\n\nZeitstempel sind nicht qualifiziert. Eine geringere Validität als handschriftliche oder gestempelte Datumsangaben auf Papierdokumenten kann jedoch aktuell nicht erkannt werden.\n\n[Übersicht](#übersicht)\n\n# Module\n\n## Anwendung\n![sample application menu](http://toh.erroronline.one/caro/anwendung%20menu%20de.png)\n\n### Nutzer\nDie Anwendung stellt ein zugeordnetes Rollen-Management für registrierte Nutzer zur Verfügung. Der gesamte Inhalt ist nur für angemeldete Nutzer zugänglich. Nutzer können unterschiedliche Berechtigungen erhalten. Diese Berechtigungen steuern, welche Inhalte erreichbar sind oder welche Änderungen erlaubt sind. Die Grundlage basiert auf den für das Unternehmen anpassbaren [Laufzeitvariablen](#laufzeitvariablen). Die Beispiele stellen eine angemessene Einstellung dar, sind aber frei wählbar.\n\nManche Berechtigungen/Einschränkungen sind jedoch systemisch festgelegt:\n\nEinträge zur Zeiterfassung sind nur erreichbar, wenn eine Wochenarbeitszeit für den Nutzer festgelegt ist - das gilt auch für den Anwendungsadministrator. Dienstfrei-Einträge sind jedoch für jeden personifizierten Nutzer möglich.\n\n* Patienten\n    * erhalten nur Zugriff auf Dokumente die mit entsprechendem Patienenzugang markiert sind für allgemeine Dokumente und die zugewiesener Bereiche\n    * nutzbar für Assessments und Selbsteinschätzungen durch Patienten durch Nutzer mit entsprechender Patienten-Berechtigung je Bereich sofern zutreffend\n* Mitarbeiter\n    * können nur Bestellungen der eigenen zugewiesenen Bereiche einsehen\n    * können nur die eigenen Arbeitszeitdokumentationen exportieren\n    * können Stichprobenprüfungen und Produkteinführungen durchführen\n* Gruppen\n    * können mangels persönlicher Identifizierbarkeit **nicht** zu Aufzeichnungen beitragen\n    * können Bestellungen durchführen, müssen jedoch einen Namen angeben\n    * können nur Bestellungen der eigenen zugewiesenen Bereiche einsehen\n    * können mangels persönlicher Identifizierbarkeit **keine** Stichprobenprüfung und Produkteinführung durchführen\n    * haben **keinen** Zugriff auf Arbeitszeitdokumentationen\n* Bereichsleiter\n    * können alle Arbeitszeitdokumentationen der Mitarbeitenden zugewiesener Bereiche exportieren\n    * können geplante Kalenderereignisse zugewiesener Bereiche und Arbeitszeiteinträge der Mitarbeitenden zugewiesener Bereiche anlegen, ändern und abschließen\n* Anwendungsadministratoren\n    * haben **vollen Zugriff** und **alle Rechte**\n    * können als jede berechtige Nutzergruppe Freigaben erteilen\n    * können alle Arbeitszeitdokumentationen exportieren\n    * die bei der Installation angelegte Systemnutzerin CARO App hat diese Berechtigung und kann genutzt werden um weitere Nutzer anzulegen.\n    * diese Berechtigung sollte idealerweise nur wenigen vertrauenswürdigen Mitarbeitenden der Leitungsebene erteilt werden\n\nNutzer können mehrere unterschiedliche Berechtigungen erhalten und mehreren Bereichen zugeordnet werden.\n\nDas Verfahren der Personenvalidierung vor der Nutzernanlage sollte aus Datenschutzgründen beschrieben werden.\n\nBei der Registrierung eines neuen Nutzers wird ein Standard-Profilbild erstellt. Individuelle Profilbilder können mit diesem Bild wieder ersetzt werden. Eine automatisch generierte PIN kann als Berechtigung für die Freigabe von Bestellungen verwendet werden. Das Hinzufügen von Schulungen ist nur für berechtigte Nutzer möglich um sicherzustellen, dass Schulungen bekannt und nicht übersehen werden. Fähigkeiten können gemäß der [geplanten Liste](#anpassung) angepasst werden.\n\nDer erstellte Anmeldung-Token kann exportiert und beispielsweise als laminierte Karte verwendet werden. Die Zwei-Faktor-PIN ist Teil des Exports und muss vor dem Laminieren entfernt und entsorgt werden. \n\n![token example](http://toh.erroronline.one/caro/error%20on%20line%201_token.png)\n\nDer Token verzichtet bewusst auf weitere Identifikationsmerkmale, wie Anwendungsname- oder Logo, um seinen Anwendungszweck zu verschleiern.\n\nNutzernamen können aus gesellschaftlichen Gründen geändert werden. Dies betrifft jedoch nicht in Aufzeichnungen gespeicherte Namen, da diese nicht verknüpft, sondern als Text gespeichert werden um einen Informationsverlust zu vermeiden, sobald ein Nutzer gelöscht wird. Das Profilbild wird im Falle einer Namensänderung stets mit dem Standard-Profilbild überschrieben.\n\nNutzern kann aus Datenschutzgründen ein Datum zur automatischen Zugangssperre zugeordnet werden. Ist das Datum erreicht wird ein neuer Token generiert und macht alle laufenden Anmeldungen ungültig. Nutzer sind dann noch nicht gelöscht, können aber die Anwendung nicht ohne Weiteres nutzen.\n\n\u003e In seltenen Fällen kann der QR-Code nicht vom eingebauten Scanner gelesen werden. Es wird empfohlen die Kompatibilität mit dem eingebauten Scanner der [Werkzeuge](#werkzeuge) zu prüfen, bevor der Code weitergegeben wird und bei Bedarf einen neuen Zugangstoken generieren zu lassen.\n\n![user screenshot](http://toh.erroronline.one/caro/user%20de-fullpage.png)\n\n```mermaid\ngraph TD;\n    application((Anwendung))--\u003elogin[Anmeldung];\n    login--\u003escan_code;\n    scan_code{Code scannen}--\u003euser_db[(Nutzerdatenbank)];\n    user_db--\u003e|gefunden|permission{Berechtigung};\n    user_db--\u003e|nicht gefunden|login;\n\n    permission-..-\u003emanage_users((Nutzerverwaltung));\n    manage_users-..-\u003enew_user[neuer Nutzer];\n    manage_users-.-\u003eedit_user[Nutzer bearbeiten];\n    new_user-.-\u003euser_settings[\"Namen, Berechtigungen,\n    Bereiche, Profilbild, Bestellberechtigungs-PIN,\n    Fähigkeiten, Schulungen, Anmelde-Token, Dokumente,\n    Arbeitszeiten, Urlaubstage bearbeiten\"];\n    edit_user-.-\u003euser_settings;\n    edit_user-.-\u003eexport_token[Token exportieren];\n    user_settings-.-\u003euser_db;\n    edit_user-.-\u003edelete_user[Nutzer löschen];\n    delete_user-.-\u003euser_db;\n\n    permission==\u003eown_profile((eigenes Profil));\n    own_profile==\u003eprofile[\"Informationen einsehen,\n    Profilbild und Anwendungeinstellungen anpassen\"];\n    profile==\u003euser_db;\n\n    permission--\u003e|PIN vorhanden|orders((\"Bestellungen\n    freigeben\"));\n    permission--\u003e|Berechtigungen|authorized((\"Inhalte gemäß\n    Berechtigung einsehen\"))\n    permission--\u003e|Bereiche|units((\"Inhalte gemäß\n    Bereichen einsehen\"))\n```\n\nNutzer können im Sinne der Transparenz alle persönlichen Informationen in ihrem Profil einsehen. Eine Änderung des Profilbilds, individuelle Anwendungeinstellungen sowie eine Zugangstoken-Erneuerung durch den Nutzer selbst können an dieser Stelle ebenfalls vorgenommen werden.\n\n![user screenshot](http://toh.erroronline.one/caro/profile%20de-fullpage.png)\n\n[Übersicht](#übersicht)\n\n### Anleitung\nDie Anleitung kann gemäß technischem Verständnis und sprachlicher Gepflogenheiten individuell angepasst werden. Einzelne Abschnitte können dabei entsprechend der Berechtigungen markiert werden um diese zugunsten einer vereinfachten Übersicht auf der Startseite für alle anderen auszublenden. Bei der Installation wird eine Standard-Anleitung in der [voreingestellten Systemsprache](#laufzeitvariablen) angelegt. Die Anleitung und die Bearbeitungsschaltfläche (für berechtigte Nutzer) wird in dem Bereich *Über CARO App* angezeigt.\n\n## Kommunikation\n![sample communication menu](http://toh.erroronline.one/caro/kommunikation%20menu%20de.png)\n\n### Unterhaltungen\nSysteminterne Nachrichten dienen ausschließlich der internen Kommunikation und haben keinen Aufzeichnungscharakter. Nachrichten werden als Unterhaltungen mit dem jeweiligen Gesprächspartner gruppiert. Dabei kann abgesehen von der Systemnutzerin und sich selbst jeder andere angeschrieben und die Unterhaltungen jederzeit gelöscht werden. Mehrere Adressaten können durch Komma oder Semikolon getrennt angesprochen werden. Ein Druck oder Klick auf das Profilbild einer Nachricht erlaubt eine Weiterleitung an andere Mitarbeitende. Neue Nachrichten lösen eine Systembenachrichtigung aus. Die Anwendung sendet im Bedarfsfall auch Nachrichten an Nutzergruppen. Für eine Formatierung steht [Markdown](#markdown) zur Verfügung, Links und HTML wird jedoch nur von administrativen Nutzern angezeigt.\n\n![conversation screenshot](http://toh.erroronline.one/caro/conversation%20de.png)\n\n[Übersicht](#übersicht)\n\n### Ankündigungen\nBerechtigte Nutzer können Ankündigungen für jedermann anlegen und bearbeiten um die Unterehmenskommunikation zu verbessern. Ankündigungen werden auf der Startseite angezeigt falls\n* die Bereiche -sofern gewählt - übereinstimmen und\n* das aktuelle Datum innerhalb der gewählten Zeitspanne liegt oder\n* keine Zeitspanne gesetzt wurde\n\nAlle Nutzer können alle Ankündigen unter dem entsprechenden Menüpunkt einsehen wobei die betroffenen Bereiche ausgewiesen sind. Ankündigungen sind keine dauerhaften Aufzeichnungen und können jederzeit bearbeitet und gelöscht werden. Die letzten Bearbeitung und der entsprechende Nutzer werden angezeigt. Für eine Formatierung steht [Markdown](#markdown) zur Verfügung.\n\n![announcements screenshot](http://toh.erroronline.one/caro/announcements%20de.png)\n\n[Übersicht](#übersicht)\n\n### Mitarbeiterverzeichnis\nDas Mitarbeiterverzeichnis stellt eine Übersicht über die registrierten Nutzer dar, gruppiert nach Bereichen und Berechtigungen. Nutzern und ganzen Bereichen und Berechtigungsgruppen können direkt von dort aus Nachrichten zugesandt werden.\n\n[Übersicht](#übersicht)\n\n### Textvorschläge\nUm unnötige und wiederholte Poesie zu vermeiden und einen durchgängigen Wortlaut zu unterstützen können Textvorschläge zur Verfügung gestellt werden. Diese werden aus vorbereiteten Textbausteinen zusammengesetzt, die entweder Pronomina oder allgemeine Abschnitte handhaben. Letztere können erstere verwenden. Ersatzbausteine werden in folgender Form definiert\n* weibliche Kindform - das Mädchen\n* männliche Kindform - der Junge\n* neutrale Kindform - das Kind\n* weibliche Erwachsenenform - die Frau\n* männliche Erwachsenenform - der Mann\n* neutrale Erwachsenenform - die Person\n* persönliche Ansprache - Du\n* förmliche Ansprache - Sie\n\nEine solche Ersetzung könnte beispielsweise *Adressat* genannt werden. Sobald ein allgemeiner Textbaustein :Adressat enthält wird dieser Platzhalter durch den aus einer Liste gewählten Genus ersetzt. Wird beispielsweise ein Text an den Kostenträger verfasst kann von einem Patienten gesprochen werden und die geeignete Wahl aus den ersten sechs Optionen getroffen werden; bei einer persönliche Ansprache eine Wahl aus den letzten Beiden, abhängig vom jeweiligen Grad des Vertrauensverhältnisses. Die Auswahl des passenden Genus wird automatisch im Fomular angezeigt und sobald eine Wahl des Genus erfolgt, werden alle weiteren Bausteine entsprechend ersetzt.\n\nBei der Erstellung eines Textes können die jeweils passenden grammatikalische Fälle vorbereitet verden (z.B. *:AdressatNominativ, *:AdressatAkkusativ, :AdressatDativ, etc.). Undefinierte Platzhalter erzeugen im Formular ein Eingabefeld, welches im weiteren Verlauf wiederverwendet wird:\n\n*\"Der Doktor ist ein außerirdischer Zeitreisender der zuletzt von :actor gespielt wurde. In Staffel :season wird :pronoun von :companion begleitet.\"*  \n*\"Der Doktor ist ein außerirdischer Zeitreisender der zuletzt von **Ncuti Gatwa** gespielt wurde. In Staffel **15** wird **er** von **Belinda Chandra** begleitet.\"*\n\nDie [Lieferantenverwaltung](#lieferanten--und-artikelverwaltung) nutzt systemseitig vordefinierte Platzhalter. Textvorschläge die beispielsweise :CUSTOMERID, :PRODUCTS oder :EXPIREDDOCUMENTS nutzen können für diese vorbereitete Werte importieren.\n \nBei der Erstellung von Textvorschlägen können die Textbausteine individuell sortiert und zu Absätzen zusammengestellt werden. Dazu werden die jeweiligen Abschnitte mit der [Maus an die gewünschte Position gezogen](#verschiedenes). Bei der Nutzung von Textvorschlägen können die vorbereiteten Textbausteine und Abschnitte abgewählt werden um den Text an den Bedarf anzupassen. Eine Gruppierung nach Abschnitten erleichtert die visuelle Darstellung und Wiedererkennung des Formulars.\n\nTextvorschlägen können [externe Dokumente](#dateien), z.B. Briefvorlagen, zugeordnet werden. Es werden nur zugängliche Dateien angezeigt. Da Textvorschläge direkt [in Dokumente eingebunden](#komponentenbearbeitung) und von dort aus genutzt werden können, sind diese nicht verknüpfbar.\n\nDer erzeugte Text wird durch Druck oder Klick auf das Ausgabefeld in die Zwischenablage eingefügt.\n\n![text recommendation screenshot](http://toh.erroronline.one/caro/text%20recommendation%20de-fullpage.png)\n\n```mermaid\ngraph TD;\n    textrecommendation((\"Textvorschlag\"))==\u003eselect[Vorlage auswählen];\n    select===\u003echunks[(\"Datenbank mit\n    Bausteinen und Vorlagen\")];\n    chunks==\u003e|\"Wiedergabe der neuesten\n    Vorlage nach Name\"|display[\"Darstellung des\n    Textvorschlags und\n    der Eingabefelder\"];\n    display==\u003e|Eingabe und Aktualisierung|render(vorbereiteter Text);\n\n    managechunks((\"Textabschnitte\n    verwalten\"))---\u003eselect2[\"Wahl des neuesten\n    nach Name oder Neuanlage\"];\n    managechunks--\u003eselect3[\"Beliebige Auswahl\n    oder Neuanlage\"];\n    select2--\u003echunks;\n    select3---\u003echunks;\n    chunks---\u003eeditchunk[Abschnitt bearbeiten];\n    editchunk--\u003etype{Typ};\n    type---\u003e|\"Ersatz hinzufügen\"|chunks;\n    type--\u003e|\"Text hinzufügen\"|chunks;\n    \n    managetemplate((\"Textvorlagen\n    bearbeiten\"))-..-\u003eselect4[\"Wahl des neuesten\n    nach Name oder Neuanlage\"];\n    managetemplate-.-\u003eselect5[\"Beliebige Auswahl\n    oder Neuanlage\"];\n    select4-.-\u003echunks;\n    select5-..-\u003echunks;\n    chunks-...-\u003eedittemplate[Vorlage bearbeiten];\n    edittemplate-.-\u003e|Vorlage hinzufügen|chunks;\n```\n\nObgleich Textvorschläge dazu vorgesehen sind die professionelle Korrespondenz zu optimieren, werden sie nicht als kritisch betrachtet und können von berechtigten Nutzern gelöscht werden. Sie können im Zweifelsfall oder zur späteren Wiederverwendung auch verborgen werden.\n\n[Übersicht](#übersicht)\n\n### Verantwortlichkeiten\nBerechtigte Nutzer können Verantwortlichkeiten für Aufgaben erstellen und Nutzer und deren Stellvertreter zuordnen. Zugeordnete Nutzer erhalten eine Nachricht und Menü-Benachrichtigung um die Zuordnung zu prüfen und die Verantwortlichkeit zu akzeptieren. Verantwortlichkeiten haben eine verpflichtende Dauer, nach deren Ablauf ein Kalendereintrag die Leitung daran erinnert die abgelaufenen Einträge zu erneuern. Verantwortlichkeiten können jederzeit geändert werden, aus Transparenzgründen müssen die Nutzer ihre Akzeptanz jedoch erneut bestätigen. Verantwortlichkeiten sind keine Aufzeichnungen, da sie primär der operativen Information dienen. Die Übersicht kann nach Bereichen gefiltert werden oder auch nur die eigenen Verantwortlichkeiten darstellen.\n\n![responsibilities screenshot](http://toh.erroronline.one/caro/responsibility%20de.png)\n\n[Übersicht](#übersicht)\n\n### Verbesserungsvorschläge\nJeder Nutzer kann öffentlich Verbesserungsvorschläge zu beliebigen Themen einreichen, auch Prozessen. Selbst anonyme Einreichungen sind möglich. Bei neuen Vorschlägen wird eine Systemnachricht an alle Nutzer versandt. Nutzer können ihre Zustimmung zu den Themen ausdrücken. Berechtigte Nutzer können Maßnahmen beschreiben oder Bewerten und die Themen abschließen. Der Vorschlagende wird per Nachricht darüber informiert, dass sein Anliegen bearbeitet wurde.\n\nUm nicht zielführende Daten und möglicherweise bösartigen Spam zu begegnen, können Vorschläge gelöscht werden, wenngleich dies Standardmäßig nicht empfohlen wird. Beiträge haben keinen Aufzeichnungscharakter, beabsichtigen aber Meinungsbilder einzusammeln und als Eingabe für Qualitätsverbesserungen und die Managementbewertung zu dienen.\n\n![measure management screenshot](http://toh.erroronline.one/caro/measure%20management%20de.png)\n\n[Übersicht](#übersicht)\n\n### Whiteboard\nKurzzeitige Informationen, Kurznotizen und alles, was sonst auf Haftnotizen oder Schmierzettel geschrieben wird kann in eigenen Whiteboards festgehalten werden. Die Übersicht zeigt alle Whiteboards des erstellenden Nutzers and und diejenigen, deren gewählten Bereiche übereinstimmen. Die Bearbeitung ist allen Nutzern erlaubt, Namensänderungen, Anpassung der Sichtbarkeit für Bereiche und die Löschung jedoch nur dem erstellenden Nutzer und Administratoren. Der Nutzername und das Änderungsdatum werden automatisch angehängt.  \nWhiteboards beinhalten zudem die Möglichkeit Skizzen zu erstellen. Diese können bearbeitet und optional als Bild exportiert werden.  \nWhiteboards werden bei der Löschung eines Nutzers nicht entfernt, da sie für andere kurzfristig relevante Daten enthalten können. Eine Löschung ist dann nur durch Administratoren möglich.\n\n[Übersicht](#übersicht)\n\n## Aufzeichnungen\n![sample records menu](http://toh.erroronline.one/caro/aufzeichnungen%20menu%20de.png)\n\n### Dokumente\nAndere Anwendungen behaupten eine Dokumentenverwaltung und Versionierung zu unterstützen. Tatsächlich importieren viele davon lediglich PDF-Dateien, die außerhalb erstellt werden müssen. Es ist (ohne größere Nachforschungen betrieben zu haben) nicht erkenntlich, wie die Dokumentenlenkung und Versionierung tatsächlich erfolgt. Die CARO App verfolgt einen vollkommen anderen Ansatz: die Dokumente und internen Dokumente sollen bevorzugt innerhalb der Anwendung selbst erzeugt werden. Dies dient dem Ziel einer papierlosen Lösung bereits ausreichend, dennoch sind zusätzlich Exporte als beschreibbare oder vorausgefüllte PDF-Dateien innerhalb festgelegter Grenzen möglich.\n\nNur nicht so. Bitte vorher Hilfe aufsuchen:\n\n![cloud storage meme](http://toh.erroronline.one/caro/cloudstoragememe.jpg)\n\nDokumente sind modular. Um gelenkte und versionierte Dokumente anzulegen, müssen zunächst deren wiederverwendbare Komponenten erstellt werden, aus denen sich die Dokumente anschließend zusammensetzen lassen. Komponenten und Dokumente werden Bereichen zugeordnet. Dies verbessert die Übersicht im Editor und reduziert die Ablenkung während der regulären Nutzung da Nutzer die zur Auswahl stehenden Dokumente bereichsweise filtern können.\n\n#### Komponentenbearbeitung\nVerfügbare Elemente für Komponenten beziehungsweise Dokumente sind:\n* Scannerfeld, optional als Mehrfachauswahl und Kennzeichen\n* Textabschnitt für informative Zwecke ohne Eingabe, standardmäßig mit [Markdown](#markdown) für eine Formatierung. Bei dem Export von Aufzeichnungen wird dem Inhalt `::MARKDOWN::`vorangestellt um den Inhalt entsprechend darzustellen. Theoretisch geschieht das auch wenn diese Zeichenketten manuell vorangestellt wird. Dieses möglicherweise unerwünschte Verhalten wird in der [Risikoanalyse](#risikoanalyse) berücksichtigt\n* Bild um beispielsweise Informationgrafiken einzubinden\n* einfaches Textfeld, optional als Mehrfachauswahl und mit Vorschlag vorheriger Eingaben\n* mehrzeiliges Textfeld, optional mit Zugriff auf Textvorschläge und mit Vorschlag vorheriger Eingaben\n* Nummernfeld, optional als Mehrfachauswahl. Steuert das Erscheinungbild der Tastatur auf mobilen Geräten\n* Datumsfeld. Steuert das Erscheinungbild der Eingabeoptionen\n* Telefonnummernfeld. Steuert das Erscheinungsbild der Tastatur auf mobilen Geräten\n* eMail-Adressenfeld. Steuert das Erscheinungsbild der Testatur auf mobilen Geräten\n* Verknüpfung-Eingabe. Umschließt automatisch den eingegebenen Wert mit der spezifischen Zeichenfolge *href='{WERT}'* um immerhalb der Anwendung als Verknüpfung angezeigt zu werden. Das funktioniert im Prinzip auch manuell bei anderen Eingabefeldern, sofern ein solcher Wert eingegeben wird. Dieses möglicherweise unerwünschte Verhalten wird in der [Risikoanalyse](#risikoanalyse) berücksichtigt\n* Produktauswahlfeld, optional als Mehrfachauswahl. Hat Zugriff auf die Artikeldatenbank\n* Schieberegler, Mindest-, Höchstwert und Schritte optional\n* Verknüpfungen (Links)\n* Mehrfachauswahl\n* Einfachauswahl (Buttons)\n* Einfachauswahl (Liste), optional als Mehrfachauswahl. Einträge erscheinen in der Reihenfolge wie angegeben. Sollte diese alphabetisch sein (Sonderzeichen, A-Z, a-z) wird die Liste ab 12 Einträgen nach Anfangsbuchstaben gruppiert.\n* Datei-Upload, optional als Mehrfachauswahl\n* Foto-Upload, optional als Mehrfachauswahl. Mobile Geräte greifen auf die Kamera zu, Desktop-Geräte öffnen eine Dateiauswahl\n* Unterschriftenfeld\n* Kalenderschaltfläche\n* Dateiverweis-Auswahl, optional als Mehrfachauswahl. Hat Zugriff auf die bereitgestellten Dateien und übernimmt deren Speicherort, inclusive STL/OBJ-Vorschau sofern anwendbar. Dateien könnten jedoch nicht dauerhaft verfügbar sein, daher ist dies nur für eine kurzfristige Kommunikation sinnvoll.\n* Dokumentenverknüpfung, nur zur Ansicht oder als Weiterleitung mit Übernahme eines Kennzeichens\n* horizontale Linie zur Dokumentenstrukturierung\n\nDie meisten Eingabetypen können zusätzlich optional als erforderlich gekennzeichnet werden. *Mehrfachauswahl* bedeutet, dass ein weiters Eingabefeld nach der Eingabe erscheint. Bei Datei-Uploads erlaubt die Dateiauswahl das Markieren mehrerer Dateien. Nutzer mit [*Administrator*-Berechtigung](#nutzer) können Komponenten direkt als JSON-Notation importieren und exportieren. Theoretisch erlaubt dies Dokumente mit detaillierteren Eigenschaften, diese können jedoch nicht vollständig auf normalem Wege bearbeitet werden.  \nFormularfelder die als Mehrfachauswahl gekennzeichnet sind erscheinen in Exporten nur bei gesetztem Wert. Der jeweilige Name wird um einen Zähler in Klammern erweitert.\n\nVorschläge vorheriger Eingaben werden in der Datenbank mit Verweis auf den zugewiesenen Bereich des Dokuments abgelegt um eine thematische Relevanz sicherzustellen. Die Datenbank für Vorschläge kann über das [Wartungsmodul](#wartung) aktualisiert werden.\n\n\u003e [Regulatorische Auswertungen und Zusammenfassungen](#regulatorische-auswertungen-und-zusammenfassungen) erlauben einen Export von Aufzeichnungsdaten. Es ist hilfreich und empfohlen Fragestellungen innerhalb der Komponenten und Dokumente nicht zu wiederholen. Wiederholungen schaden den Aufzeichnungen an sich nicht, beschränken aber die analytischen Optionen des Datenauszugs.\n\n#### *Caveat:*\nEinige Elemente können nur als normale Aufzeichnungen verarbeitet werden.\n* Produktauswahlfelder,\n* Unterschriftenfelder und\n* Kalenderschaltflächen\n\nsind nicht verwertbar für Dokumenten-Kontexts innerhalb der [Sprachdateigruppe](#anpassung) documentcontext.embedded (Standard: MDR §14 Stichprobenprüfung, Produkteinführung, Schulungsbewertung und Lieferantenbewertung). Diese Eingabefelder werden ignoriert. Vorschläge vorheriger Eingaben sind hier nicht verfügbar.\n\nElemente können mit der [Maus sortiert und positioniert](#verschiedenes) werden. Die meisten Elemente können bearbeitet werden - ihr Inhalt kann in den entsprechenden Editor importiert werden um geändert oder ergänzt und anschließend wieder hinzugefügt zu werden. Das Original-Element verbleibt dabei und muss manuell entfernt werden.\n\nDie jeweiligen Bearbeitungsmasken zeigen eine Auswahl der neuesten freigegebenen Elemente an, in einer zusätzlichen Auswahl kann aber jedes beliebige Element für die Bearbeitung gewählt werden.\n\nsiehe auch [Erwägungen zur Nutzerakzeptanz](#erwägungen-zur-nutzerakzeptanz)\n\n#### Dokumentenbearbeitung\nDokumente können durch die Auswahl beliebiger freigegebener Komponenten zusammengestellt werden. Komponenten können mit der [Maus sortiert und positioniert](#verschiedenes) werden.\n\nDokumente können alternative Suchbegriffe erhalten. Es muss ein Kontext gewählt werden um eine Plausibilitätsprüfung für die Verwendung gegebenenfalls erforderlicher Elemente durchführen zu können. Die Angabe eines regulatorischen Zusammenhangs wird empfohlen.\n\nDokumente können einen eingeschränkten Zugang erhalten um eine Verwendbarkeit nur durch berechtigte Nutzer zuzulassen. Auf diesem Weg sind Aufzeichnungen möglich, die nicht für die Öffentlichkeit bestimmt sind (z.B. Bewerbungs- oder Mitarbeitergespräche). Dokumente können auch als für Patienten zugänglich markiert werden. Nutzer mit `Patient`-Berechtigung können von der Startseite aus auf diese Dokumente zugreifen und mit Selbsteinschätzungen zu Aufzeichnungen beitragen.\n\nDokumente können als bearbeitbare PDF-Dateien für die hoffentlich seltene Fälle, in denen eine digitale Bearbeitung problematisch sein könnte, exportiert werden. In diesem Fall werden Foto- und Dateiuploads sowie Bedienfelder durch Hinweise ersetzt und Kennzeichen in der Kopfzeile implementiert. Dokumente können primär nur von berechtigten Nutzern exportiert werden um eine Verbreitung veralteter Versionsstände zu vermeiden und eine bessere Datensammlung innerhalb der Anwendung zu fördern. Ersteller der Dokumente können jedoch eine allgemeine Erlaubnis erteilen. Es wird empfohlen die Daten zu einem späteren Zeitpunkt nachzutragen oder als Foto oder Scan zum Vorgang beizufügen (sofern ein geeignetes Formularfeld bereitgestellt wird), wobei in diesem Fall die Durchsuchbarkeit, Übersicht und statistische Auswertbarkeit leidet.\n\nDie jeweiligen Bearbeitungsmasken zeigen eine Auswahl der neuesten freigegebenen Elemente an, in einer zusätzlichen Auswahl kann aber jedes beliebige Element für die Bearbeitung gewählt werden.\n\n![document composer screenshot](http://toh.erroronline.one/caro/document%20manager%20de-fullpage.png)\n\n#### Dokumentenlenkung\nKomponenten und Dokumente müssen von berechtigten Nutzern freigegeben werden bevor sie genutzt werden können. Eine Freigabe-Anfrage für Komponenten und Dokumente wird über den internen [Nachrichtendienst](#unterhaltungen) and die definierten Nutzergruppen versandt; sofern für die Freigabe definiert, Bereichsleiter des in der Bearbeitungsmaske festgelegten Bereichs. Die Freigabe erfolgt durch die Auswahl der zutreffenden Option in der berechtigten Rolle während der Anmeldung in der Anwendung. Alle Nutzer erhalten eine Mitteilung über aktualisierte Dokumente.\n\nDie Versionierung findet über einen Zeitstempel statt.\n\nZusätzlich können Dokumentenpakete erstellt werden. Auf diese Weise kann jeder prüfen ob alle beabsichtigen Dokumente für den jeweiligen Anwendungsfall berücksichtigt wurden. Dokumentenpakete unterliegen keiner Freigabe oder Versionierung, können aber auch nicht gelöscht sondern nur verborgen werden. Auch externe Dokumente können Teil der Pakete sein. Eine Überwachung der Nutzung kann jedoch nicht erfolgen.\n\n```mermaid\ngraph TD;\n    manage_components((\"Komponenten\n    verwalten\"))===\u003eselect[\"Wahl der neuesten Komponente\n    nach Name\"];\n    select==\u003edocuments_database[(\"Dokumentendatenbank\n    mit Komponenten,\n    Dokumenten, Paketen\")];\n    manage_components==\u003eselect2[\"beliebige Komponente\"];\n    select2==\u003edocuments_database;\n    manage_components==\u003e|\"neue Komponenten\"|edit_component[\"Inhalte bearbeiten,\n    hinzufügen oder sortieren\"];\n    documents_database==\u003e|\"bestehende Komponente\"|edit_component;\n    edit_component==\u003esave[speichern];\n    save===\u003e|\"neue Version,\n    Nachricht mit Freigabeaufforderung\"|documents_database;\n\n    manage_documents((\"Dokumente\n    verwalten\"))---\u003eselect3[\"Wahl des neuesten Dokuments\n    nach Name\"];\n    select3--\u003edocuments_database;\n    manage_documents--\u003eselect4[\"beliebiges Dokument\"];\n    select4--\u003edocuments_database;\n    manage_documents--\u003e|neues Dokument|edit_document[\"Dokument bearbeiten,\n    Komponenten hinzufügen oder sortieren\"];\n    documents_database--\u003e|\"bestehendes Dokument\"|edit_document;\n    edit_document--\u003esave;\n    save---\u003e|\"neue Version,\n    Nachricht mit Freigabeaufforderung\"|documents_database;\n    \n    manage_bundles((\"Dokumentenpakete\n    verwalten\"))-..-\u003eselect5[\"Wahl des neuesten Pakets\n    nach Name\"];\n    select5-.-\u003edocuments_database;\n    manage_bundles-.-\u003eselect6[\"beliebiges Paket\"];\n    select6--\u003edocuments_database;\n    manage_bundles-.-\u003e|neues Paket|edit_bundle[\"Paket bearbeiten,\n    Dokumente hinzufügen oder sortieren\"];\n    documents_database-.-\u003e|\"bestehendes Paket\"|edit_bundle;\n    edit_bundle-..-\u003esave;\n    save-..-\u003e|\"neue Version,\n    Nachricht mit Freigabeaufforderung\"|documents_database;\n\n    documents_database o----o returns(\"gibt auf Anfrage nur den neuesten Datensatz heraus,\n    sofern dieser nicht verborgen,\n    vollständig freigegeben ist und die Berechtigungen übereinstimmen\")\n```\n\nBildschirmformular\n\n![screen document](http://toh.erroronline.one/caro/document%20screen%20de-fullpage.png)\n\nExportiertes Dokument\n\n![exported document](http://toh.erroronline.one/caro/document%20export%20de.png)\n\nDas [Wartungs-Modul](#wartung) erlaubt Schnappschüsse der aktuellen Dokumentenversionen, sowie externer Dokumente und Artikellisten. Dies kann als Notfallplan im Falle eines Server- oder Netzwerkproblems dienen. Bei Freigabe von Dokumenten erhalten die für die Dokumentenbearbeitung authorisierten Nutzer eine Nachricht, die die Erstellung eines Schnappschusses empfiehlt. Dieser kann an einer anderen Stelle gespeichert werden und für die Verteilung aktueller PDF-Dokumente zugunsten weiterhin strukturierter Aufzeichnungen im Falle einer eingeschränkten Erreichbarkeit der Anwendung dienen.  \nDieses Szenario rechtfertigt Dokumente um nicht erreichbare Funktionen der Anwendung zu überbrücken, z.B. strukturierte Bestellformulare, die an den Einkauf [gefaxt](http://toh.erroronline.one/caro/fax_meme.jpg) werden können. Diesen Dokumenten kann bei ihrer Erstellung ein eingeschränkter Zugang zugewiesen werden, damit sie während der normalen Nutzung nur wenigen Nutzern angezeicht werden; sie sind aber immer Teil des Schnappschusses.\n\n[Übersicht](#übersicht)\n\n### Aufzeichnungen\nAufzeichnungen speichern alle Eingaben für jedes gewählte Dokument. Manche Dokumenten-Kontexte erfordern ein Kennzeichen, das alle Aufzeichnungen zu einer Zusammenfassung zusammenstellt. Zusammenfassungen können exportiert werden. Vollständige Zusammenfassungen enthalten alle Aufzeichnungen in chronologischer Reihenfolge, vereinfachte Zusammenfassungen nur den jeweils neuesten Eintrag. In diesem Fall sind die Zusammenfassungen zwar unvollständig, für eine Weitergabe an dritte jedoch zugunsten einer vereinfachten Darstellung aufgeräumter. Ein weiterer Anwendungsfall sind Gebrauchsanleitungen, deren Inhalt für die Dokumentation gespeichert, aber auch jederzeit für die Anwender inclusive Erläuterungen exportiert werden kann. PDF-Exporte beinhalten auch eingebettete Bilder und Dateianhänge sofern bereitgestellt.\n\nEine vollständig papierlose Lösung könnte für feuchte Umgebungen ungeeignet sein. Daher können einzelne Dokumente ebenfalls exportiert werden um die Daten in Situationen bereithalten zu können, in denen elektronische Geräte Schaden nehmen könnten.\n\nEin Kennzeichen ist immer ein QR-Code neben dem der Inhalt zusätzlich in lesbarer Form steht und der sich auch auf Exporten wiederfindet. Um den Arbeitsfluss zu verbessern können Aufkleberbögen erstellt werden, mit deren Hilfe zum Beispiel Produkte und exportierte Fomulare manuell gekennzeichnet werden können. Das Scannen des Codes reduziert eine Fehlerwahrscheinlichkeit bei der Zuordnung. Das Kennzeichen kann ebenfalls genutzt werden um Daten von anderen Aufzeichnungen zu importieren, beispielsweise bei der Übernahme von vergleichbaren Datensätzen anderer Versorgungsbereiche.\n\n![sample identifier code](http://toh.erroronline.one/caro/sample%20identifier%20code%20de.png)\n\nBei der Anzeige von Zusammenfassungen erscheinen Empfehlungen für die Vervollständigung von Aufzeichnungen gemäß der Dokumenten-Pakete, die entweder dem der Aufzeichnung zugewiesenen Bereich oder sowohl mit den Bereichen des letzten eintragenden Nutzers als auch des aktuellen Nutzers übereinstimmen; dabei wird davon ausgegangen, dass Vorgänge typischerweise von Mitgliedern eines Bereichs bearbeitet werden. Die Vollständigkeit kann jedoch auch gegen jedes andere Dokumenten-Paket geprüft werden.\n\nAufzeichnungen können als abgeschlossen markiert werden. Damit werden sie in der Übersicht und auf der Startseite nicht mehr angezeigt, sind aber mit der Filter-/Suchfunktion und dem entsprechenden Kennzeichen weiterhin erreichbar. Bei nachfolgenden Eingaben wird der Status als \"abgeschlossen\" wieder entzogen. Dies betrifft auch Aufzeichnungen die Reklamationen beinhalten. Reklamationen müssen von allen [definierten Rollen](#laufzeitvariablen) abgeschlossen werden, auch wiederholt, sofern zusätzliche Daten zu den Aufzeichnungen hinzugefügt werden.  \nAn nicht abgeschlossene Aufzeichnungen wird regelmäßig in [definierten Abständen](#laufzeitvariablen) erinnert. Dies erfolgt über eine Nachricht an alle Nutzer des der Aufzeichnung zugewiesenen Bereichs oder der Bereiche des letzten eintragenden Nutzers.\n\nVersorgungsdokumentationen erlauben das Setzen des aktuellen Fallstatus (wie genehemigt, Fertigung beauftragt, etc.). Aufzeichnungen in der Übersicht können entsprechend gefiltert werden. Mitarbeitende, die den Status ändern, haben die Wahl andere Mitarbeitende, Versorgungsbereiche oder deren Bereichsleiter via Nachricht zu informieren. Es gibt auch die Möglichkeit eine Rückfrage zum Fall an einen beliebigen Nutzer zu senden, wobei eine direkte Verknüpfung für einen schnellen Zugriff beinhaltet ist.  \nDie Ergänzung einer Vorgangsnummer aus dem ERP-System erlaubt den Abgleich bei verfügbarer [ERP Anbindung](#erp-anbindung), mehrere Nummern sind möglich im Falle von Gepflogenheiten eines kalkulatorischen und repräsentativen Vorgangs.  \nDie Auswahl der Aufbewahrungsfrist ermöglicht die [automatische Löschung](#cron) von Aufzeichnungen zur Erfüllung der [Anforderungen an die Datensparsamkeit](#löschung-von-aufzeichnungen).\n\nIst eine Aufzeichnung versehentlich als Reklamation markiert worden, können definierte Rollen den Aufzeichnungstyp ändern. Diese Änderung wird ebenfalls dokumentiert.  \nAufzeichnungen können ein neues Kennzeichen erhalten, z.B. bei Schreibfehlern oder einer versehentlichen doppelten Anlage. Im zweiten Fall werden die Aufzeichnungen mit bestehenden zusammengeführt sofern das neue Kennzeichen bereits genutzt wird. Diese Änderung sowie die Neuvergabe eines Kennzeichens werden ebenfalls dokumentiert.\n\nFalls Aufzeichnungen Daten aus eingeschränkt zugänglichen Dokumenten enthalten, werden diese Datensätze nur dann angezeigt, wenn der anfragende Nutzer auch die Berechtigung zur Verwendung der Dokumente hat. Es ist Ermessenssache ob Dokumentenpakete so sinnvoll eingesetzt werden können:\n* Einerseits vereinfacht dies die Übersicht verfügbarer Dokumente und Informationen für manche Bereiche, indem beispielsweise administrative Inhalte gegenüber Mitarbeitenden ausgeblendet werden,\n* andererseits bedeutet dies mehr Aufmerksamkeit auf die vergebenen Rollen und wer im Falle von Anfragen tatsächlich vollständige Daten exportiert.\n\nAlle Änderungen an Aufzeichnungen (Reidentifizierung, Aufzeichnungstyp, Fallstatus) werden ebenfalls aufgezeichnet.\n\nAufzeichnungen die außerhalb manuell angelegter Dokumente durch die Anwendung unterstützt werden (z.B. Fallstatus, s.o.) werden in der [Systemsprache](#laufzeitvariablen) gespeichert.\n\nAllgemeine Dokumentationen kann eine Zugriffsbeschränkung für freigegebene Bereiche, Bereichsleiter oder namentlich benannte Nutzer zugeordnet werden. Diese Aufzeichnungen tauchen in der Übersicht von Nutzern, die diesen Einschränkungen nicht entsprechen nicht auf, es sei denn sie haben die [Freigabe](#nutzer) CEO, PRRC, QMO oder Administrator. Wie auch [Dokumente mit eingeschränktem Zugriff](#dokumentenbearbeitung) können diese Aufzeichnungen vertraulichen Bewerbungs- oder Mitarbeitergesprächen, Abteilungs- oder Leitungsbesprechungen, anderen Themen mit einer gewissen Vertraulichkeit oder der Absicht die Übersichtlichkeit für nicht involvierte Nutzer zu erhöhen dienen. Einmal festgelegt kann die Zugriffsbeschränkung nicht mehr vollständig aufgehoben werden, es sei denn alle verfügbaren Bereiche werden ausgewählt. Zeitpunkt und Nutzername der letzten Änderung wird gespeichert. Beschränkungen werden im Export angezeigt.\n\n#### Umgang mit einer fehlerhaften Nutzung von Dokumentkontexten\nDie Wahl eines unvorgesehenen Dokuments für einen Aufzeichnungskontext ist ein vorhersehbarer Fehler. Auch ist es denkbar, dass sich der Kontext im Laufe der Zeit ändert.\n\nDie Verwendung eines allgemeinen Dokuments für eine laufende Versorgungsdokumentation beeinflusst die Aufzeichnung nicht; Zugriffsbeschränkungen werden ignoriert, da Versorgungsdokumentationen für alle Nutzer erreichbar und transparent sein sollen. Generell wird empfohlen geeignete Dokumente für Versorgungsdokumentationen bereitzustellen, aber dies ist kein ernstes Problem.\n\nUm eine allgemeine Aufzeichnung in eine Versorgungsdokumentation oder Vorkommnismeldung zu überführen, wird empfohlen eine neue Dokumentation mit dem erwarteten Kontext zu beginnen und anschließend die allgemeine Aufzeichnung mit dem neuen Vorgang zusammenzuführen.\n\n![screen record summary](http://toh.erroronline.one/caro/record%20screen%20de-fullpage.png)\n\n```mermaid\ngraph TD;\n    identifiersheet((\"Erstelle einen Aufkleberbogen\n    mit Kennzeichen\"));\n    identifiersheet--\u003einput[Eingabedaten];\n    input--\u003e|Absenden|print(\"Bogen ausdrucken und\n    an Mitarbeitende aushändigen\");\n\n    filldocument((Dokument ausfüllen))=========\u003eselectdocument[Dokument wählen];\n    selectdocument==\u003edocument_db[(\"Dokument-\n    datenbank\")];\n    document_db==\u003e|\"neuestes Fomular nach Name ausgeben\n    sofern Berechtigungen übereinstimmen\"|displaydocument[Dokument anzeigen];\n    displaydocument==\u003einputdata[Dateneingabe];\n    inputdata==\u003e|\"neuen Datensatz mit Dokumentenname speichern\"|record_db[(\"Aufzeichnungs-\n    datenbank\")];\n\n    displaydocument==\u003eidimport[Import mit Kennzeichen];\n    idimport==\u003erecord_db;\n    record_db==\u003eselectbyid[erhalte alle Datensätze mit Kennzeichen];\n    selectbyid==\u003e|füge neueste Datensätze ein|inputdata;\n    displaydocument===\u003e|Exportberechtigung|exportdocument[exportiere editierbares PDF]\n\n    print o-.-o idimport;\n\n    summaries((\"Dokumentationen\"))-----\u003erecord_db;\n    record_db--\u003edisplayids[\"Zeige Kennzeichen,\n    nicht abgeschlossen oder\n    Filter zutreffend\"];\n    displayids--\u003e|Auswahl|summary[\"zeige Zusammenfassung an\n    sofern Berechtigungen übereinstimmen\"];\n    summary--\u003eclose[abschließen];\n    close--\u003ecomplaint{Reklamation};\n    complaint--\u003e|ja|complaintclose[Verantwortliche Person, Bereichsleiter UND QMB];\n    complaintclose--\u003erecord_db;\n    complaint--\u003e|nein|nocomplaintclose[Bereichsleiter oder Leitung];\n    nocomplaintclose--\u003erecord_db;\n    summary--\u003eexport[exportieren];\n    export--\u003epdf(\"Zusammenfassung als PDF,\n    angehängte Dateie\");\n    summary--\u003ematchbundles[Abgleich mit Dokumenen-Paketen];\n    matchbundles--\u003emissing{fehlendes Dokument};\n    missing==\u003e|ja|appenddata[Dokument hinzufügen];\n    appenddata==\u003edisplaydocument;\n    missing--\u003e|nein|nonemissing(Statusbenachrichtigung);\n    summary--\u003eretype[Aufzeichnungstyp ändern];\n    retype--\u003erecord_db;\n    summary--\u003erecord_state[Vorgangsstatus, Aufbewahrungsfrist];\n    record_state--\u003erecord_db;\n\n    record_db===\u003e|abgeschlossen, Aufbewahrungsfrist abgelaufen|delete;\n\n    notification((Benachrichtigungen))-....-\u003erecord_db;\n    record_db-..-\u003e|\"nicht abgeschlossen,\n    letzter Eintrag vor X Tagen\"|message(Nachricht an Benutzer der Bereiche);\n```\n\nExportierte vollständige Aufzeichnung\n\n![exported full record](http://toh.erroronline.one/caro/record%20full%20summary%20de.png)\n\nExportierte reduzierte Aufzeichnung\n\n![exported reduced summary](http://toh.erroronline.one/caro/record%20reduced%20summary%20de.png)\n\n#### Blockchain gesicherte Inhalte\nAufzeichnungen werden in einer Blockchain gespeichert. Das bedeutet, dass jeder Eintrag gehashed wird und auch den vorherigen Hash beinhaltet. Dies schließt Prüfsummen von Anhängen mit ein. Auf diesem Weg kann ein hohes Maß an Vertrauen in die Integrität der Daten erreicht werden. Jeder Versuch die Daten zu manipulieren invalidiert die gesamte Aufzeichnung aufgrund widersprüchlicher Hashes und Prüfsummen.\n\nEin vereinfachtes Diagramm einer Blockchain mit kurzen CRC Hashes. Die CARO App nutzt jedoch SHA256.\n\n```mermaid\ngraph LR;\n    A[\"date: 2025-10-29\n    author: error on line 1\n    content:hello\n    \"]--\u003eB(contained content hash: dcce6e55)\n    B-.-\u003eC[\"date: 2025-10-29\n    author: error on line 1\n    content:world\n    attachments:signature:a5fb0d49\n    \"]\n    C--\u003eD(\"contained content hash: 4cff5f20\n    + previous hash dcce6e55\n    = 6897f6dc\")\n    D-.-\u003eE[\"date: 2025-10-29\n    author: error on line 1\n    content: bye\n    \"]\n    E--\u003eF(\"contained content hash: 028fd280\n    + previous hash: 6897f6dc\n    = 4287cac3\")\n    B--\u003eD\n    D--\u003eF\n```\n\nDie Integrität einer Aufzeichnung kann direkt aus der Ansicht heraus überprüft werden. Jeder Vorgang hat seine eigene Kette um eine [Löschung](#löschung-von-aufzeichnungen) zu ermöglichen ohne andere zu beeinträchtigen. Die [regulatorischen Auswertungen und Zusammenfassungen](#regulatorische-auswertungen-und-zusammenfassungen) bieten eine detailliertere Darstellung der Integritätsprüfung.  \nDie Blockchain ist zwar privat und kein verteiltes Hauptbuch, exportierte PDF-Aufzeichnungen enthalten aber den jeweils neuesten verfügbaren Hash. Bei der Ausgabe von Informationen an Dritte, wie beispielsweise Patienten oder Kostenträger, werden auch kleine Teile der Ketteninformation verteilt, die sich dann in der detaillierten Integritätsprüfung unveränderter valider Aufzeichnungen wiederfinden lassen.  \nZusammengeführte Aufzeichnungen beinhalten die zuvor verifizierten Blockchain-Informationen. Diese können aktuell noch nicht automatisiert verifiziert werden, verbleiben aber als gesicherte Information bestehen.\n\n[Übersicht](#übersicht)\n\n### Risikomanagement\nDas Risikomanagement unterstützt bei der Beschreibung von Risiken gemäß ISO 14971 und richtet sich nach den Empfehlungen der [DGIHV](https://www.dgihv.org). Identifizierte Risiken die je Prozess Beachtung finden können, sind in den [Sprachdateien definiert](#anpassung) (siehe auch [hier](#laufzeitvariablen)).\n\nWie in der ISO 14971 gefordert können Eigenschaften von Medizinprodukten und dahingehend anwendbare Risiken beschrieben werden. Da die DGIHV erfreulicherweise die Definition von Eigenschaften und Risiken für Gruppen von Medizinprodukten (z.B. Prothesen und Orthesen im allgemeinen) als angemessen betrachtet, werden alle Bewertungen prozessweise zugeordnet.  \nFerner werden Ursache und Auswirkungen erfasst, die Eintrittswahrscheinlichkeit und Schadenshöhe bewertet, Maßnahmen beschrieben, die Wahrscheinlichkeit und der Schaden neubewertet, eine Risko-Nutzen-Bewertung durchgeführt und Restmaßnahmen beschrieben. Das Formular gibt eine Meldung aus, ob das Risko vor und nach der Maßnahme innerhalb des in der [config.ini](#laufzeitvariablen) festgelegten Akzeptanzbereichs liegt. Die Schwelle ist das Produkt aus Wahrscheinlichkeit x Schaden gemäß der jeweiligen Positionen in den Auflistungen der Sprachdateien für risk.probabilities und risk.damages. Diese Methode ist der praktischste Weg einer algorithmischen Verarbeitung und Hervorhebung des Akzeptanzbereichs.\n\nDie Einträge können nicht gelöscht und durch das [Regulatorische Auswertungen und Zusammenfassungen-Modul](#regulatorische-auswertungen-und-zusammenfassungen) exportiert werden. Einträge speichern den Nutzernamen und das Datum der letzten Änderung.\n\nEine Aktualisierung ist, neben der manuellen Pflege, auch über einen Import durch das [Wartungs](#wartung)-Modul möglich. Dafür werden CSV-Dateien verarbeitet, da nicht davon auszugehen ist, dass die DGIHV zur Verwendung eines richtigen Maschinendaten-Formats zu überzeugen ist. Auf diese Weise können die kursierenden Excel-Dateien mit wenig Aufwand umgewandelt werden. Die Struktur muss sich aber an denen der Template-Dateien orientieren, Risikobezüge, Wahrscheinlichkeits- und Schaden-Einschätzungen müssen in den [Sprachdateien](#anpassung) wiederzufinden sein.\n\nFür Risiken mit der selben Ursache, Auswirkung, Maßnahme und verbleibender Maßnahme werden Risikobezüge, Wahrscheinlichkeiten und Schadenshöhe aktualisiert, andernfalls ein neuer Eintrag erstellt. Auf diese Weise können versehentliche Fehleinschätzungen korrigiert werden.\n\n![risk screenshot](http://toh.erroronline.one/caro/risks%20de-fullpage.png)\n\n[Übersicht](#übersicht)\n\n### Audit\nDie Anwendung ermöglicht die Vorbereitung von internen Audits, inklusive der Ziele, der Auditmethode und eines Imports vorausgegangener Zusammenfassungen des gewählten Bereichs. Die Formulierung von Fragen anderer Vorlagen kann wiederverwendet und den Fragen der regulatorische Zusammenhang zugeordnet werden. Bei der Erstellung eines Auditprogramms können Fragen hinzugefügt, entfernt, [umsortiert](#verschiedenes) und reimportiert werden. Die Zusammenfassung des vorherigen Audits für den jeweiligen Bereich kann importiert werden um beim bevorstehenden Audit Bezug zu nehmen.  \nAudits können direkt von diesem Formular aus auch zum Kalender hinzugefügt werden um die jeweiligen Bereiche zu informieren.\n\n![audit template screenshot](http://toh.erroronline.one/caro/audit%20template%20de-fullpage.png)\n\nDie Durchführung eines Audits beginnt mit der Auswahl einer Vorlage. Antworten und Stellungnahme werden zunächst aus dem letzten abgeschlossenen Audit des gewählten Bereichs übernommen. Unterbrechungen, und Bearbeitungen laufender Audits sind jederzeit möglich solange das Audit nicht als abgeschlossen markiert ist. Danach ist eine Bearbeitung oder Löschung des Audits nicht mehr möglich und es wird zu einer systemseitigen Aufzeichnung. Bei Abschluss eines Audits wird der Auditbericht über eine [Systemnachricht](#unterhaltungen) an alle Nutzer mit [`regulatory`-Berechtigung](#laufzeitvariablen) und alle Mitglieder des auditierten Bereichs umgesetzt. Abgeschlossene Audits können im [Regulatorische Auswertungen und Zusammenfassungen-Modul](#regulatorische-auswertungen-und-zusammenfassungen) eingesehen werden.\n\n![audit screenshot](http://toh.erroronline.one/caro/audit%20de-fullpage.png)\n\n[Übersicht](#übersicht)\n\n### Managementbericht\nÄhnlich wie für die Audits kann auch eine Managementbericht erstellt, gespeichert und später bearbeitet sowie durch das Abschließen zu einer systemseitigen Aufzeichnung umgewandelt werden. Ein neuer Bericht startet als Basis mit den Eingaben des letzten. Die Standard-Sprachdateien beinhalten alle erforderlichen Themen, damit keines vergessen wird. Bei Abschluss eines Managementberichts wird ein Hinweis über eine [Systemnachricht](#unterhaltungen) an alle Nutzer mit [`regulatory`-Berechtigung](#laufzeitvariablen) umgesetzt. Abgeschlossene Managementberichte können im [Regulatorische Auswertungen und Zusammenfassungen-Modul](#regulatorische-auswertungen-und-zusammenfassungen) eingesehen werden.\n\nDer Großteil der CARO App ist datenorientiert, Managementberichte können jedoch auch dritte betreffen. Daher ist eine gewisse Layoutbearbeitung mittels [Markdown](#markdown)-Syntax möglich.  \n\n[Übersicht](#übersicht)\n\n## Kalender\n![sample calendar menu](http://toh.erroronline.one/caro/kalender%20menu%20de.png)\n\n### Terminvereinbarung\nEs kann eine Terminerinnerung für Kunden erstellt werden. Nach der Eingabe der relevanten Daten kann entweder eine ausgedruckte Version mit den Daten sowie einem QR-Code für den Import in einen Kalender auf einem Mobilgerät, oder direkt eine ICS-Datei für den Versand per eMail oder Nachrichtendienst verwendet werden.\n\n![appointment screenshot](http://toh.erroronline.one/caro/appointment%20de.png)\n\n[Übersicht](#übersicht)\n\n### Aufgaben\nEs können Aufgaben zum Kalender hinzugefügt werden. Die Startseite gibt eine kurze Zusammenfassung der geplanten Aufgaben der aktuellen Kalenderwoche sowie eine Übersicht über Mitarbeitenden außer Dienst, sofern in der [Zeiterfassung](#zeiterfassung) eingetragen. Termine können von jedem Nutzer angelegt und abgeschlossen werden, eine Änderung und Löschung ist jedoch nur für berechtigte Nutzer möglich.\n\nAufgaben können eine [Benachrichtigung](#unterhaltungen) an Nutzergruppen auslösen, wenn diese Einstellung vorgenommen wurde.\n\nDa die Terminplanung primär die Arbeitsplanung (beispielweise die Festlegung von täglichen Aufgaben für einen Bereich) oder Erinnerungen in Zusammenhang mit Aufzeichnungen unterstützen soll, kann nur ein Datum und keine Zeit ausgewählt werden. Dies vereinfacht zudem die Eingabemaske.\n\nAngezeigte Kalender stellen auch Wochenenden und sonstige arbeitsfreie Tage dar, um sicherzustellen, dass versehentlich an einem solchen Tag geplante Ereignisse nicht übersehen werden.\n\nDie Planung von Aufgaben ist nicht Bestandteil der Aufzeichnungen, da jede Maßnahme ihre eigene [Aufzeichnung mit Zeitstempel](#aufzeichnungen) vorsieht. Ereignisse werden nach einer [einstellbaren Zeit](#laufzeitvariablen) nach Erledigung gelöscht sofern nicht anders angegeben.\n\n![tasks screenshot](http://toh.erroronline.one/caro/tasks%20de-fullpage.png)\n\n```mermaid\ngraph TD;\n    scheduling((Planung))===\u003eselect_day[Auswahl Tag];\n    scheduling==\u003esearch[Suche];\n    select_day==\u003edatabase[(\"Kalenderdatenbank\n    Typ Planung\")];\n    select_day==\u003eadd[hinzufügen];\n    add==\u003edatabase;\n    search==\u003edatabase;\n    database==\u003ematches(\"Ergebnisse zugewiesener\n    Bereiche anzeigen\");\n    matches==\u003epermission{\"Administrator,\n    Leitung, QMB,\n    Bereichsleiter\"};\n    permission==\u003e|ja|edit[ändern oder löschen];\n    permission==\u003e|nein|complete[abschließen];\n    edit==\u003ecomplete;\n    database==\u003ealert[\"Mitarbeitende ausgewählter Bereiche\n    einmalig benachrichtigen\"]\n\n    timesheet((Zeiterfassung))--\u003eselect_day2[Auswahl Tag];\n    select_day2--\u003eadd2[hinzufügen];\n    add2--\u003eusertype{Nutzertyp};\n    usertype--\u003eany[\"jeder:\n    eigene Einträge\"];\n    usertype--\u003eforeign[\"Personalverwaltung, Bereichsleiter:\n    eigene und fremde Einträge\"];\n    any--\u003edatabase2;\n    foreign--\u003edatabase2;\n    select_day2--\u003edatabase2[(\"Kalenderdatenbank\n    Typ Zeiterfassung\")];\n    database2--\u003ealert;\n    database2--\u003eentrytype{Eintragstyp};\n    entrytype--\u003e|regulärer Arbeitstag|usertype2{Nutzertyp};\n    usertype2--\u003e|betroffener Nutzer|display_edit(\"Anzeige,\n    Änderung,\n    Löschung,\n    falls nicht abgeschlossen\");\n    usertype2--\u003e|Bereichsleiter, Leitung, Administrator|display_close(\"Anzeige,\n    abschließen,\n    wiedereröffnen\");\n    entrytype--\u003e|Dienstfrei|usertype3{Nutzertyp};\n    usertype3--\u003eusertype2;\n    usertype3--\u003e|Personalverwaltung|display_only(Anzeige)\n    \n    database2--\u003eexport[Export des gewählten Monats];\n    export--\u003epermission2{Berechtigung};\n    permission2--\u003efullexport[\"Leitung, Personalverwaltung, Admin:\n    vollständiger Export\n    aller Zeiterfassungen\"];\n    permission2--\u003epartexport[\"Bereichsleiter:\n    Export aller Zeiterfassungen\n    zugewiesener Bereiche\"];\n    permission2--\u003eownexport[\"Mitarbeitende:\n    Export der eigenen Zeiterfassung\"]\n\n    landing_page((Startseite))-....-\u003edatabase;\n    landing_page-......-\u003edatabase2;\n    database-.-\u003esummary(\"Kalenderwoche,\n    aktuell geplante Ereignisse,\n    nicht abgeschlossene vergangene Ereignisse, Mitarbeitende dienstbefreit\");\n    database2-.-\u003esummary;\n    summary-......-\u003eselect_day\n```\n\n[Übersicht](#übersicht)\n\n### Arbeitslisten\nWährend Aufgaben einzelne Fälle oder spezifische Angelegenheiten adressieren, sammeln Arbeitslisten Versorgungen anhand ihrer Kennzeichen für Stationsgänge, andere Touren oder wöchentliche Arbeitsausfträge wie anstehende Gießarbeiten. Während der Abarbeitung ist jeder Vorgang schnell erreichbar. Wie die Aufgaben können die Arbeitslisten von jedem Nutzer als erledigt markiert werden, die Bearbeitung und Löschung ist jedoch nur berechtigten Nutzern möglich.\n\n[Übersicht](#übersicht)\n\n### Langzeitplanung\nDer Kalender unterstützt eine Langzeitplanung, wie sie etwa für die Einteilung von Auszubildenden über die Bereiche hinweg genutzt werden kann. Hier können innerhalb festgelegter Zeiträume farbliche Markierungen genutzt werden um z.B. Zuordnungen darzustellen. Der Editor erlaubt dabei auch den Import von vorausgehenden Planungen in den neuen Zeitraum, sowie das Hinzufügen und Entfernen von Namen und Farbvorlagen. Dabei sind Namen nicht zwingend Personen zuzuordnen und Farben nicht notwendigerweise Bereichen - die Planung kann auch für beliebige andere Zwecke verwendet werden, beispielsweise wichtige Wochen im Jahresverlauf. Planungen sind von jedem Nutzer einsehbar sobald die Planung als abgeschlossen markiert wurde, editierbar jedoch nur von Nutzern mit entsprechender Berechtigung. Die Planungen haben nur einen informellen Character und sind keine dauerhaften Aufzeichnungen.\n\nDie Planung ist einfach zu nutzen:\n* Bezeichnung, Zeitraum und Zeitabschnitte definieren\n* betroffene Personen oder Themen benennen\n* Farben für Bereiche oder Aufgaben definieren\n* den Zeitraum für Namen/Themen mit einer gewählten Farbe einfärben, mit der Maus oder einem geeigneten Zeiger\n\nGewählte Zeiträume werden\n* für wöchentliche Abschnitte auf den Montag der Woche des Startdatums und den Sonntag der Woche des Enddatums\n* für halb- und monatliche Abschnitte auf den ersten Tag des Monats des Startdatums und den letzten Tag des Monats des Enddatums\n\nkorrigiert. Die Einfärbung erfolgt für die jeweils gewählten Zeitabschnitte.\n\n![sample longterm planning](http://toh.erroronline.one/caro/longtermplanning%20de-fullpage.png)\n\n[Übersicht](#übersicht)\n\n### Zeiterfassung\nNeben der Terminplanung kann der Kalender für die Erfassung der Arbeitszeiten der Mitarbeitenden genutzt werden. Dies steht nur mittelbar in Zusammenhang mit der Arbeitsplanung, soweit Urlaube und andere dienstfreie Zeiten erfasst und angezeigt werden können und die Planungen beeinflussen können. Wo wir aber schon einmal dabei sind können ebensogut die Arbeitszeiten erfasst und berechnet werden. Die Anzeige und der Export ist nur für den betroffenen Nutzer, Bereichsleiter und berechtigte Nutzer möglich. Letztere sind dazu berechtigt für jeden Nutzer eine Eingabe zu machen um beipielsweise Bereiche über Krankenausfälle zu informieren. Nicht abgeschlossene Einträge können nur durch den Nutzer selbst bearbeitet werden. Der Status als abgeschlossen kann von einem Bereichsleiter des dem Nutzer zugewiesenen Bereichs oder für Vollzugriff berechtigten Nutzern gesetzt werden. Die Nutzereinstellungen erlauben die Eingabe von Wochenstunden zugunsten einer zielführenden Berechnung. Die Zeiterfassung findet auf Vertrauensbasis statt, wobei jeder Mitabeiter seine Dienstzeiten manuell einträgt.\n\nDies soll eine transparente Kommunikation, einen vertraulichen Umgang mit den Daten und eine gemeinsame Übereinkunft über die Zeiterfassung sicherstellen. Ziel ist es allen bekannten Anliegen deutschen Rechts und denen der Personalräte und Gewerkschaften zu entsprechen. Dabei handelt es sich nicht um eine dauerhafte Erfassung, da die Datenbank um Nutzereinträge bei deren Löschung bereinigt wird. Arbeitszeitzusammenfassungen können exportiert werden, was nach aktuellem Stand ein bevorzugter Weg ist und im Sinne einer langfristigeren Datenspeicherung im Sinne von Arbeitszeitgesetzen empfohlen wird. Die Aufzeichnungen entsprechen etablierten Verfahren in Art und Umfang, verbessern die Zugriffssicherheit sensibler Daten auf einen eingeschränkten Personenkreis und vereinfachen die Berechnung ehrlich erfasster Daten. \n\nDienstfreie Tage der übereinstimmenden Bereiche werden sowohl bei den geplanten Ereignissen angezeigt als auch andersherum, um für das Arbeitsaufkommen der verbleibenden Belegschaft zu sensibilisieren.\n\n*Warnung: die aktuelle Implementierung berücksichtigt weder mögliche Änderungen gesetzlicher Feiertage noch den Wechsel des Bundeslandes, sofern mehrere in den Profileinstellungen zur Auswahl stehen. Derzeit würden Änderungen auch vergangene Zeiterfassungen betreffen und unterschiedliche Berechnungen ergeben. Bei Änderungen wird empfohlen zuvor die neuesten Zeiterfassungen zu exportieren und innerhalb der Anwendung neu zu beginnen.*\n\nDie Zeiterfassung unterstützt jedoch Änderungen der Wochenarbeitszeit und des Jahresurlaubs. Die jeweiligen Start-Daten und Werte sind Bestandteil der Nutzereinstellungen.\n\nFür eine korrete Berechnung ist es erforderlich Werte als *Startdatum und Jahresurlaub/Wochenarbeitszeit* im ISO 8601 Format `yyyy-mm-dd XX` anzugeben, wobei `XX` für die Anzahl an Urlaubstagen oder Wochenarbeitszeitstunden steht. Falls unterjährig in die Berechnung eingestiegen werden soll, muss der erste Eintrag den Resturlaub beinhalten. Danach sollte der volle Jahresurlaub mit Start zum 1. Januar des Folgejahres eingetragen werden. Bei Beendigung der Berechnungen sollte ein weiterer Wert mit den Resttagen zum Ende hin erfolgen. Ein Beispiel für eine dreijährige Periode mit Start und Ende im Sommer und jeweils 30 Tagen Jahresurlaub sähe ertwa folgendermaßen aus:\n```\n2023-07-01; 15\n2024-01-01; 30\n2026-01-01; 15\n```\nDie Wochenarbeitszeit sieht mit `2023-07-01; 39,5` ähnlich aus, Dezimalwerte sind erlaubt, als Trennzeichen gelten Komma oder Punkt. Die Trennung zwischen Datum und Wert ist mit Ausnahme von Zahlen frei wählbar. Bitte weise den Nutzer darauf hin etwaige Überzeit zu Beginn der Erfassung als Korrekturwert anzugeben.\n\nEs ist auch ein Jahresüberblick verfügbar, der dienstfreie Tage, Resturlaub und Überstunden für das laufende Jahr darstellt, was beispielsweise praktisch ist um Mitarbeiter daran zu erinnern den Urlaub rechtzeitig zu planen. Die Inhalte dieser Übersicht entsprechen denen der Arbeitszeitübersichten (betroffener Nutzer, Bereichtmitarbeiter für Bereichsleiter oder alle für berechtige Nutzer).\n\nExporte sind nach Nutzernamen alphabetisch aufsteigend sortiert, mit dem exportierenden Nutzer jedoch der Bequemlichkeit halber stets als erstes.\n\n[Übersicht](#übersicht)\n\n## Dateien\n![sample files menu](http://toh.erroronline.one/caro/dateien%20menu%20de.png)\n\nBerechtigte Nutzer können Dateien für alle bereitstellen. Alle Nutzer können zudem zum öffentlichen Sharepoint beitragen. Hier haben Dateien nur eine begrenzte Verweildauer und werden automatisch gelöscht.\n\nSTL/OBJ- und Bild-Dateien haben eine automatische Vorschau.\n\nDiese Quellen können auch dafür verwendet werden um Dokumente bereitzustellen, die [nicht digital ausgefüllt](#datenintegrität) werden können. *Es wird jedoch empfohlen interne Dokumente mit einer Exportberechtigung zu versehen um Versionskonflikte zu vermeiden; dies betrifft auch die ordnungsgemäße Registrierung externer Dokumente.*\n\nExterne Dokumente gemäß ISO 13485 4.2.4 müssen identifiziert und gelenkt werden. Daher erhalten diese Dateien eine besondere Beachtung und sollen mit entsprechenden Eintragungen in Bezug auf die Einführung, den regulatorischen Zusammenhang, mögliche Außerbetriebnahme und dem Nutzernamen der letzten Entscheidung erfasst werden. Im Sinne einer durchgängigen Dokumentation können diese Dateien nicht gelöscht, sondern nur unzugänglich gemacht werden. Insbesondere in Bezug auf Schnittstellen können auch Netzwerkressourcen als Quelle angegeben werden. Externe Dokumente die in den [Textvorschlägen](#textvorschläge) verknüpft sind erhalten einen Hinweis für die Berücksichtigung hinsichtlich der Verfügbarkeit. Dateien mit gleichem Namen werden aufsteigend nummeriert. Dies gilt nicht für Netzwerkressourcen.\n\n![files screenshot](http://toh.erroronline.one/caro/files%20de.png)\n\n[Übersicht](#übersicht)\n\n## Einkauf\n![sample purchase menu](http://toh.erroronline.one/caro/einkauf%20menu%20de.png)\n\n### Lieferanten- und Artikelverwaltung\nBestellvorgänge bedürfen einer Lieferanten- und Artikeldatenbank. Dies steht auch im Zusammenhang mit einer Produkteinführung, Stichprobenprüfung, Dokumenten- und Zertifikatsverwaltung. Berechtigte Nutzer können diese Kategorien verwalten, neue Lieferanten und Artikel hinzufügen oder bearbeiten, Artikellisten importieren, Filter definieren oder Lieferanten und Artikel deaktivieren. Der [Import von Artikellisten](#importierung-von-lieferantenartikellisten) nutzt den [CSV-Prozessor](#csv-prozessor) und möglicherweise die [ERP-Anbindung](#erp-anbindung). Gleiche Lieferantennamen sollten daher sichergestellt werden.\n\n\u003e Auch wenn die ERP-Anbindung Daten bereitstellen oder als direkte Datenquelle für Artikeldaten dienen kann wird dies nicht passieren! Nicht jeder hat Zugriff, geschweige denn mit Schreibrechten. Die redundante Artikeldatenbank der CARO App berücksichtigt regulatorische Anforderungen, die durch ERP-Software nicht grundsätzlich erfüllt werden.\n\nLieferanten sollen evaluiert werden. Dazu ist ein entsprechendes Dokument mit dem Kontext *Lieferantenbewertung* erforderlich. Die Evaluation ist automatisch Teil der Lieferantenansicht im Bearbeitungsmodus.\n\nLieferantenbezogene Dateianhänge können beigefügt werden. Durch die entsprechende Eingabemaske wird dem [Dateinamen ein Ablaufdatum hinzugefügt](#dateinamenkonventionen). Ohne angegebenes Datum und für Dateiuploads innerhalb des Dokuments zur Lieferantenbewertung wird die Gültigkeit für ein Jahr ab Bereitstellung festgelegt.  \nDie Anwendung überwacht die angegebenen Verfallsdaten und trägt einen Hinweis in den [Kalender](#kalender) ein, sobald das Datum überschritten ist, um die betroffenen Bereiche an eine Aktualisierung zu erinnern. Dateinamen die der Dateinamenkonvention für diesen Anwendungsfall entsprechen werden zurückgewiesen.  \nDie Bearbeitungsansicht für Lieferanten erlaubt die Auswahl von [Textvorschlägen](#textvorschläge). Sofern diese ordnungsgemäß vorbereitet sind können vorbereitete Werte einfach in die Platzhalter eingefügt werden.  \nKleinere Lieferantenportfolios könnten primär oder anfänglich innerhalb der Anwendung verwaltet werden. Artikellisten können zusammen mit dem Import-Filter exportiert werden. Letzterer [wird erzeugt](#standardfilter-bei-export) sofern nicht definiert.\n\u003e Erzeugte Filter funktionieren nicht mit Herstellerartikellisten, exportierte Artikellisten funktionieren nicht mit angepassten Filterregeln!\n\nBesondere berechtigte Nutzer (z.B. *Einkaufsassistent*) können Aliasbezeichnungen von Artikeln anpassen um den Einkauf zu entlasten und die Identifikation von Artikeln mit betriebsinternen Gepflogenheiten zu verbessern.\n\nBei der Anpassung von Artikeln können unter anderem folgende Eigenschaften bearbeitet werden:\n* Handelsware,\n* Verfallsdatum,\n* besondere Beachtung (die konkrete Bedeutung wird in der Sprachdatei festgelegt, z.B. Hautkontakt),\n* Lagerware,\n* Bestellung außerhalb des ERP-Systems\n* Entzug der Produkteinführung,\n* den Artikel als *verfügbar* oder *nicht verfügbar* markieren.\n\nBei jeder dieser Einstellungen können ähnliche Artikel gewählt werden, auf die diese Einstellungen ebenfalls angewendet werden sollen. Die Auswahl schlägt alle Artikel des gleichen Lieferanten vor, deren Artikelnummern eine in der [config.ini](#laufzeitvariablen) festgelegte Ähnlichkeit aufweisen.\n\nArtikel können ebenfalls mit Dateien bereichert werden, z.B. Konformitätserklärungen oder Biokompatibilitätsnachweise. Wie die Hersteller-Dokumente wird ein [Ablaufdatum eingefügt](#dateinamenkonventionen) und an eine Erneuerung erinnert. Dateinamen die der Dateinamenkonvention für diesen Anwendungsfall entsprechen werden zurückgewiesen.\n\nDeaktivierte Produkte können durch das Bestell-Modul nicht erreicht werden. Artikel können gelöscht werden so lange sie nicht als geschützt markiert sind. Lieferanten können nicht gelöscht werden.\n\n![vendor manager screenshot](http://toh.erroronline.one/caro/vendor%20manager%20de-fullpage.png)\n\n```mermaid\ngraph TD;\n    manage_vendors((Lieferanten))---\u003eedit_vendor[bestehenden Lieferanten bearbeiten];\n    edit_vendor--\u003evendor_db[(\"Lieferanten-\n    datenbank\")];\n    manage_vendors--\u003enew_vendor[neuer Lieferant];\n    vendor_db--\u003eadd_vinfo[\"Dokumente hinzufügen\n    Informationen aktualisieren,\n    Artikellistenfilter festlegen\"];\n    new_vendor--\u003eadd_vinfo;\n    add_vinfo--\u003evendor_db;\n    add_vinfo--\u003einactivate_vendor[Lieferant deaktivieren];\n    inactivate_vendor-.-\u003edelete_all_products[alle Produkte löschen];\n    add_vinfo--\u003eimport_pricelist[Preisliste importieren];\n    import_pricelist--\u003edelete_all_products;\n    delete_all_products--\u003ehas_docs2{\"Dokumente vorhanden,\n    Einführung erfolgt,\n    Stichprobenprüfung erfolgt,\n    (geschützt)\"};\n    delete_all_products-...-\u003ehas_docs{\"Dokumente vorhanden,\n    Einführung erfolgt,\n    Stichprobenprüfung erfolgt,\n    (geschützt)\"};\n    has_docs2--\u003e|ja|update[\"Aktualisierung nach Artikelnummer\"];\n    update--\u003eproduct_db[(\"Produkt-\n    datenbank\")];\n    has_docs2--\u003e|nein|delete[Löschung];\n    delete--\u003e|Wiedereinfügung aus Preisliste|product_db;\n    \n    manage_products((Produkte))==\u003eedit_product[bestehendes Produkt bearbeiten];\n    edit_product==\u003eproduct_db;\n    product_db==\u003eadd_pinfo[\"Dokumente hinzufügen,\n    Informationen aktualisieren\"];\n    manage_products==\u003eadd_product[neues Produkt hinzufügen];\n    add_product==\u003eselect_vendor[Lieferanten wählen];\n    select_vendor==\u003evendor_db;\n    vendor_db==\u003eknown_vendor{Lieferant in Datenbank};\n    known_vendor==\u003e|ja|add_pinfo;\n    known_vendor==\u003e|nein|new_vendor\n\n    add_pinfo==\u003eproduct_db;\n\n    edit_product==\u003esimilar{ähnliche Produkte auswählen};\n    similar==\u003eupdate2[\"aktualisiere gewählte Produkte\n    innerhalb der Datenbank,\n    setze Verfügbarkeit,\n    Handelware,\n    entziehe Einführung\"];\n    update2==\u003eproduct_db;\n    edit_product==\u003edelete_product(Produkt löschen);\n    delete_product==\u003ehas_docs;\n    has_docs==\u003e|nein|product_deleted[\"Produkt löschen\"];\n    has_docs==\u003e|ja|product_inactive[\"Produkt deaktivieren\"];\n    product_deleted==\u003eproduct_db;\n    product_inactive==\u003eproduct_db;\n\n    product_db o-..-o state{Status};\n    state-.-\u003e|aktiv|orderable[bestellbar];\n    state-.-\u003e|inaktiv|inorderable[nicht bestellbar];\n    state-.-\u003e|gelöscht|inorderable;\n```\n\n[Übersicht](#übersicht)\n\n### Bestellung\nDas Bestellmodul unterstützt alle Parteien. Der Einkauf erhält strukturierte und vollständige Daten für Bestellungen, während die bestellenden Bereiche unmittelbare Informationen über den Bestellstatus erhalten.  \nArtikel sollen aus der Datenbank gewählt werden, die durch die Artikellistenimporte befüllt wird. Eine manuelle Bestellung ist jedoch möglich. Jedoch können nur Artikel in der Datenbank zusätzliche Informationen bereitstellen:  \nBestellte Artikel erteilen unmittelbar Auskunft über ihren Einführungsstatus oder ob sie für eine Stichprobenprüfung in Frage kommen. Beide Maßnahmen können direkt aus der Auflistung bestellter Artikel ergriffen werden, während des laufenden Betriebs und ohne Verwechslungen. Das Datum der letzten Bestellung wird bei ausgelieferten Artikeln aktualisiert.  \nManuelle Bestellungen erlauben einen direkten Import in den Artikelstamm.\n\nManchmal weiß der Einkauf besser über Lieferkonditionen bescheid. Falls es dem Besteller egal ist von welchem Lieferanten das Produkt kommt, kann dem Einkauf mitgeteilt werden gegebenenfalls auch ein ähnliches Produkt zu bestellen.\n\nBestellungen müssen freigegeben werden, vorbereitete Bestellungen sammeln sich an und können von einem Nutzer mit Bestellberechtigung (z.B. PIN, Zugangstoken, Unterschrift, je nach [Konfiguration](#laufzeitvariablen)) gesammelt freigegeben werden.\n\nFreigegebene Bestellungen können als *bestellt/bearbeitet*, *teilgeliefert*, *vollständig geliefert*, *teilweise an Bereich übergeben*, *vollständig an Bereich übergeben* und *archiviert* markiert werden. Vollständig übergebene Bestellungen welche nicht archiviert sind werden nach einer definierten Zeitspanne automatisch gelöscht. Der Einkauf kann Bestellungen auch unter Angabe von Gründen zurückweisen. In diesem Fall werden alle Nutzer des bestellenden Bereichs über die fehlgeschlagene Bearbeitung der Bestellung informiert. Bestellungen die verarbeitet aber noch nicht als erhalten markiert sind werden regelmäßig gemäß [config.ini](#laufzeitvariablen) erinnert um beim Lieferanten ein Lieferdatum zu erfragen.  \nFalls der Einkauf auch ein ähnliches Produkt bestellen kann, wird daran erinnert gegebenenfalls die Bestellung zu korrigieren um das System in Bezug auf Produkteinführungen, Stichprobenprüfungen und Rückverfolgung nicht durcheinanderzubringen.\n\nJeder Bestellung kann jederzeit Informationen angehängt werden.\nBestellte aber noch nicht gelieferte Bestellungen können eine Bestallstatusänderung erfahren, in welchem Fall der bestellende Bereich eine Benachrichtigung erhält. Diese Bestellungen können auch noch storniert werden und werden dann wieder den nicht bestellten Bestellungen mit einem Storno-Kennzeichen zugeordnet. Eine abgeschlossene Stornierung wird automatisch gelöscht. Erhaltene Artikel können zurückgesandt werden. Rücksendungen erzeugen eine neue Retour-Bestellung ohne erforderliche Freigabe und Änderung der Originalbestellung. Eine \"bestellte\" Rücksendung wird automatisch als \"geliefert\" gekennzeichet - dies erfasst jedoch bewusst keine Erstattung seitens der Lieferanten, da derartige Vorgänge typischerweise in einem anderen System stattfinden und eine doppelte Bearbeitung vermieden werden soll.  \nEs muss ein Rücksendegrund angegeben werden. Kritische Rücksendegründe lösen eine Mitteilung an für die Einführung authorisierte Mitarbeitenden aus und initiieren eine Neubewertung der Produkteinführung.  \nAlle Maßnahmen bieten an eine Nachricht beizufügen.  \nAus der in der Bestellung angegebenen Kommission kann direkt ein Aufkleberbogen erzeugt werden um bei der internen Auslieferung eine Zuordnung zu unterstützen.\n\nMit der Bestellnummer kann direkt ein Aufkleberbogen mit Ergänzung einer geeigneten Chargen- oder Lieferscheinnummer erstellt werden um einen scanbaren Code für eine Rückverfolgung zu erhalten.\n\nDie Darstellung von Bestellungen kann innerhalb des [Nutzer-Profils](#nutzer) aus Volldarstellung, kompakten Kacheln mit eingeschränktem Informationsgehalt und tabellarischer Ansicht gewählt werden. Dies soll eine Anpassung an unterschiedliche Bedürfnisse ermöglichen, z.B. der Warenwirtschaft alle erforderlichen Informationen anzeigen, während andere Nutzer eine geringere Informationsfülle bevorzugen.\n\nBearbeitete Bestellungen werden zusätzlich in leicht reduzierter Form zu einer zusätzlichen Datenbank hinzugefügt. Diese Daten können im [Regulatorische Auswertungen und Zusammenfassungen-Modul](#regulatorische-auswertungen-und-zusammenfassungen) exportiert und für die Lieferantenbewertung genutzt werden. Einträge in dieser Datenbank sind von den Löschungen nicht betroffen und können für jeden beliebigen Zeitraum exportiert werden bevor sie nach dem [eingestellten Zeitraum](#laufzeitvariablen) automatisch bereinigt werden.\n\n![orders screenshot](http://toh.erroronline.one/caro/orders%20de-fullpage.png)\n\n```mermaid\ngraph TD;\n    new_order((neue Bestellung))--\u003esearch_products[Artikelsuche];\n    search_products--\u003eproduct_db[(\"Produkt-\n    datenbank\")];\n    product_db--\u003eproduct_found{Artikel gefunden};\n    product_found--\u003e|ja|add_product[\"Artikel zur\n    Bestellung hinzufügen\"];\n    new_order--\u003eadd_manually[manuell hinzufügen];\n    product_found--\u003e|nein|add_manually;\n    product_found----\u003e|nein|manage_products((\"Produkte\n    bearbeiten\"));\n    add_manually--\u003eadd_product;\n    add_product--\u003esearch_products;\n    add_product--\u003eadd_info[\"Bereich wählen,\n    Begründung angeben,\n    Dateien anhängen\"];\n    add_info--\u003eapprove_order{Bestellung freigeben};\n    approve_order--\u003e|mit Unterschrift|approved_orders((\"freigegebene Bestellungen\n    (nur von eigenen Bereichen, außer Einkäufer oder Admin)\"));\n    approve_order--\u003e|mit PIN|approved_orders;\n    approve_order--\u003e|nein|prepared_orders((\"vorbereitete Bestellungen,\n    nur von eigenen Bereichen,\n    außer bestellberechtigt\n    und Bereich ausgewählt\"));\n\n    approved_orders==\u003eprocess_order{Bestellung bearbeiten};\n\n    process_order=====\u003eregulatory{\"regulatorische Anforderungen\n    sofern anwendbar\"};\n    regulatory==\u003eincorporate[Produkteinführung];\n    incorporate==\u003eincorporate_similar{\"ähnline Artikel\"};\n    incorporate_similar==\u003e|ja|select_similar[\"ähnliche wählen,\n    Daten anfügen\"];\n    select_similar==\u003eproductdb[(\"Produkt-\n    datenbank\")]\n    incorporate_similar==\u003e|nein|insert_data[Daten anfügen];\n    insert_data==\u003eproductdb;\n    regulatory==\u003esample_check[Stichprobenprüfung];\n    sample_check==\u003eproductdb;\n\n    process_order===\u003ecancel_order[Storno];\n    cancel_order==\u003erewrite_cancel[in Stornierung umwandeln];\n    rewrite_cancel==\u003eapproved_orders;\n\n    process_order===\u003ereturn_order[Rücksendung];\n    return_order==\u003eclone_order[\"Bestellung kopieren,\n    als Rücksendung markieren\"];\n    clone_order==\u003eapproved_orders;\n    return_order======\u003e|kritischer Grund|incorporate;\n\n    process_order==\u003edisapprove[zurückweisen];\n    disapprove==\u003e|optional Nachricht anfügen|message_unit[\"alle Bereichsmitarbeitenden\n    benachrichtigen\"];\n    message_unit==\u003eprepared_orders;\n\n    process_order======\u003emark{markieren};\n    mark==\u003e|bestellt|order_type{Bestelltyp};\n    order_type==\u003e|Bestellung|auto_delete[\"automatische Löschung\n    nach x Tagen\"];\n    order_type==\u003e|Rücksendung|auto_delete;\n    order_type==\u003e|Service|auto_delete;\n    order_type==\u003e|Storno|order_deleted(Bestellung gelöscht)\n    mark==\u003e|übergeben|auto_delete;\n    mark==\u003e|archiviert|delete[manuelle Löschung];\n    auto_delete==\u003eorder_deleted;\n    \n    process_order==\u003edelete;\n    delete==\u003edelete_permission{\"Berechtigung\n    zur Löschung\"};\n    delete_permission==\u003e|Bereichsmitarbeitenden|order_deleted;\n    delete_permission==\u003e|Einkauf, unbearbeitete Bestellung|order_deleted;\n    delete_permission==\u003e|Einkauf, bearbeitete Bestellung|approved_orders;\n\n    process_order====\u003eupdate_state[Bestellstatusaktualisierung];\n    update_state==\u003eappend_inform[\"Information angeben,\n    Bereichsmitarbeitende benachrichtigen\"];\n    append_inform==\u003eprocess_order\n    \n    process_order===\u003eadd_orderinfo[Information anfügen];\n    add_orderinfo==\u003eprocess_order;\n    process_order===\u003emessage((\"Besteller\n    benachrichtigen\"))\n\n    prepared_orders-.-\u003emark_bulk{\"Bestellungen für\n    Freigabe markieren\"};\n    mark_bulk-.-\u003e|ja|approve_order;\n    mark_bulk-.-\u003e|nein|prepared_orders;\n    prepared_orders-.-\u003eadd_product;\n```\nBegonnene Produkteinführungen werden von allen Rollen als freigegeben markiert, die dem initial bewertenden Nutzer innewohnen. Eine vollständige Freigabe kann jedoch durch weitere Rollen erforderlich sein.  \nStichprobenprüfungen werden den Aufzeichnungen beigefügt. Neue Prüfungen lösen eine Benachrichtigung an die berechtigten Nutzer aus. Berechtigte Nutzer können die Prüfung innerhalb des [Regulatorische Auswertungen und Zusammenfassungen-Modul](#regulatorische-auswertungen-und-zusammenfassungen) und der [Artikelverwaltung](#lieferanten--und-artikelverwaltung) widerrufen.\n\n\n### Vereinfachter Bestellprozess auf Einkaufsseite\n\n```mermaid\ngraph TD;\n    order((Bestellung))--\u003eunprocessed[unbearbeitet];\n    unprocessed--\u003ecopy_order_no(Bestellnummer kopieren);\n    copy_order_no--\u003epaste_order_no(\"in ERP-Software einfügen,\n    Produkt wählen\");\n    paste_order_no--\u003ecopy_identifier(Bestellzuordnung kopieren);\n    copy_identifier--\u003epaste_order_identifier(\"in ERP-Software einfügen,\n    in beliebiges Feld das Teil\n    des Bestellbelegs wird,\n    z.B. an Artikelbezeichnung\n    anhängen\");\n    paste_order_identifier--\u003eadd_commission(Kommission wählen);\n    add_commission--\u003eorder_erp(\"Bestellung in\n    ERP-Software abschließen\");\n    order_erp--\u003econfirm_caro(\"Bestellung in\n    CARO bestätigen\")\n\n    retrieval((Wareneingang))--\u003eprocessed[bearbeitet];\n    processed--\u003efilter(\"nach Bestellzuordnung oder\n    Bestellbelegnummer filtern,\n    gemäß Lieferschein\");\n    filter--\u003ecommission(\"QR-Code für Kommission\n    ausdrucken\");\n    commission--\u003eretrieval_confirmed(\"Teillieferung oder\n    vollständige Lieferung\n    bestätigen\")\n    retrieval_confirmed--\u003eissue(\"Artikel an Werkstatt liefern\")\n```\n\nEtwaige zusätzliche Schritte im ERP-System können hier aufgrund der Vielzahl an Softwarelösungen und individuellen Prozessen nicht abgebildet werden.\n\n[Übersicht](#übersicht)\n\n## Werkzeuge\n![sample tools menu](http://toh.erroronline.one/caro/werkzeuge%20menu%20de.png)\n\nEs stehen einige allgemeine Werkzeuge für das Lesen und Erzeugen von 2D-Codes, sowie der Unterstützung bei wiederkehrenden Berechnungen, Bildskalierung und ZIP-Archivierung zur Verfügung.  \nFalls verfügbar, werden hier auch Funktionen der [ERP-Anbindung](#erp-anbindung) angezeigt.\n\n### CSV-Filter\nWeiterhin sind an dieser Stelle ein CSV-Filter und dessen Verwaltung eingeordnet. Der CSV-Filter verarbeitet entsprechende Dateitypen unter Verwendung des [CSV-Prozessors](#csv-prozessor) und kann für eine Vielzahl an Datenvergleichen verwendet werden. Filter sind für berechtigte Nutzer erreichbar.\n\nDa einige vorausgesehene Nutzungen regulatorische Themen betreffen können, sollen die Filter von entsprechend berechtigten Nutzern freigegeben werden und sind bei vollständiger Freigabe nicht mehr löschbar. Da die Konstruktion eines Filters eine komplizierte Aufgabe sein kann, können berechtigte Nutzer auch nicht freigegebene Filter erreichen um diese testen zu können.\n\nMögliche Nutzungen sind:\n* Fallistenfilterung für die Nachbeobachtung nach der Inverkehrbringung,\n* Sortierung von [ERP-Schnittstellen-Datenabzüge](#angepasste-datenbankauszüge),\n* Vorbereitung von Zähllisten für die Inventur,\netc.\n\n## Regulatorische Auswertungen und Zusammenfassungen\nDieses Modul sammelt verfügbare Daten aus der Anwendung und stellt damit Listen zusammen die eine Erfüllung regulatorischer Anforderungen unterstützen:\n* eingeführte Produkte\n* Erfahrungspunkte basierend auf Schulungen, sofern für Schulungen Punkte vergeben werden (intern oder extern, z.b. [IQZ](https://ot-iqz.de/))\n* Erfüllung regulatorischer Anforderungen durch Dokumente\n* aktuell gültige, incl. externe Dokumente\n* Lieferantenverzeichnis\n* Stichprobenprüfungen gemäß MDR §14\n* Mitarbeiterqualifikationen und Schulungen mit der Option verpflichtende Schulungen für mehrere Mitarbeitende gleichzeitig einzutragen \n* Qualifikationserfüllung\n* Reklamationen\n* Problembericht für inkonsistent definierte Risiken, incl. strukturiertem Export aller erfassten Risiken\n* Schulungsbewertung\n* interne Audits\n\nFerner hoffentlich hilfreiche Informationen zu\n* der Angemessenheit aktueller Dokumente incl. einem Nutzungszähler gemäß Aufzeichnungen\n* Bestellstatistiken in Form eines strukturierten Excel-Export um die Lieferantenbewertung basierend auf Lieferdaten zu ergänzen\n* Versorgungsstatistiken, bei Export aller verfügbaren Versorgungsaufzeichnungen innerhalb eines wählbaren Zeitraumes, deren Inhalte beliebig ausgewertet werden können, vorausgesetzt die [Dokumente](#dokumente) haben einzigartige Fragestellungen. Die Ausgabedatei ist eine CSV-Datei die unter anderem mit einem entsprechenden Filter auch durch den [CSV-Prozessor](#csv-prozessor) verarbeitet werden kann.\n* Integritität der Aufzeichnungen mit Details zur [Blockchain](#blockchain-gesicherte-inhalte)\n\n![regulatory screenshot](http://toh.erroronline.one/caro/regulatory%20de-fullpage.png)\n\n[Übersicht](#übersicht)\n\n## Wartung\nDie Anwendung hat einige Optionen für die Wartung durch berechtigte Nutzer:\n* Die [Log-Datei](#cron) `cron.log` innerhalb des API-Verzeichnisses mit Erfolg- oder Fehlermeldungen kann angezeigt und gelöscht werden. Die Löschung der Log-Datei löst das Update erneut aus.\n* Bestehende Lieferanten können in Bezug auf ihre Informationen und die Artikellisten-Einstellungen (Importfilter und Stichproben-Intervalle) aktualisiert werden. Eine Datei gemäß [Vorlage](#anwendungseinrichtung) kann bereitgestellt werden. Die jeweiligen Aktualisierungen können für jeden übereinstimmenden Lieferanten gewählt werden.\n* Dokumente können lernende Eingabefelder beinhalten um vergangene Einträge eines Fachbereichs vorzuschlagen. Es können dabei fehlerhafte Einträge erfolgen. Es kann eine CSV-Datei heruntergeladen, bearbeitet und wieder bereitgestellt werden, oder vorbereitete Empfehlungen bereitgestellt werden. Eine hochgeladene Datei überschreibt die kompletten Datensätze des gewählten Fachbereichs. Tabellenüberschriften entsprechen den Namen der Eingabefelder, die Zeilen den Vorschlägen. Ohne bereitgestellte Datei gibt es den Export.\n* Risiko-Daten können durch entsprechende CSV-Dateien importiert oder aktualisiert werden.\n* Im Falle eines verfügbaren Artikellistenimports durch die [ERP-Anbindung](#erp-anbindung) besteht die Option die gesamte Artikel-Datenbank in einem Rutsch zu aktualisieren.\n* Als Notfallplan für einen Serverausfall können die aktuellen Dokumente und Artikellisten als Schnappschuss exportiert und an anderer Stelle gespeichert werden. \n* Während Wartungsarbeiten an der ERP-Software kann die Verbindung zwischenzeitlich deaktiviert werden.\n\n[Übersicht](#übersicht)\n\n# In der Anwendung verteilte Integrationen\n\n## CRON\nDer 'CRON-Job' initiiert die Erstellung [automatischer Benachrichtigungen und Aufgabenplanungen](#erinnerungen-und-automatische-aufgabenplanung) (siehe unten). Ferner bereinigt er abgelaufene Dateien und [Aufzeichnungen](#löschung-von-aufzeichnungen). Er wird durch Benachrichtigungs-Requests ausgelöst. Die Konfiguration CONFIG[system][cron] beinhaltet Intervall-Einstellungen für\n* [erp_interface_casestate](#erp-anbindung)\n* [erp_interface_orderdata](#erp-anbindung)\n* [erp_interface_birthday_message](#erp-interface)\n* alert_new_orders\n* alert_open_records_and_retention_periods\n* alert_unclosed_audits\n* alert_undelivered_orders\n* delete_files_and_calendar\n* restrict_user_access\n* schedule_archived_orders_review\n* schedule_outdated_consumables_documents_review\n* schedule_responsibilities_renewal\n* schedule_training_evaluation\n* schedule_trainings\n\nJede Aufgabe findet frühestens nach diesen in den [Umgebungseinstellungen](#laufzeitvariablen) angegebenen Minuten statt, basierend auf der letzten Ergänzung in der Log-Datei.  \nDie Hintergrundaktualisierung kann von authorisierten Nutzern über das Werkzeuge-Menu manuell angestoßen werden, falls es dringend ist (z.B. nach der Bearbeitung von Bestellungen).\n\nUrsprünglich sollte es ein ordnungsgemäßer CRON-Job werden (daher der Name), scheiterte aber aufgrund eines Problems beim Treiberimport unter IIS. Die Aufgaben werden nun von der Anwendung selbst erledigt und sind nicht auf Drittsoftware wie *cron* oder *schtask* angewiesen.\n\n[Übersicht](#übersicht)\n\n## Erinnerungen und automatische Aufgabenplanung\nDie Anwendung vearbeitet einige automatische Erinnerungen und Aufgabenplanungen\n\n* ausgelaufene Verantwortlichkeiten erzeugen eine Mitteilung für die Neuvergabe\n* offene Vorgänge erzeugen eine Mitteilung fortzufahren oder abzuschließen\n* neue Bestellungen erzeugen eine Mitteilungg für die Bearbeitung\n* nicht erhaltene Bestellungen erzeugen eine Mitteilung sich beim Lieferanten nach dem Lieferzeitpunkt zu erkundigen\n* erhaltene aber nicht ausgelieferte Bestellungen erbitten die Nachfrage bei der Warenwirtschaft oder die Markierung als ausgeliefert\n* Schulungsbewertungen werden in den Kalender eingetragen\n* ablaufende Schulungen werden für die Folgeschulung geplant\n* abgelaufene Lieferantendokumente werden für eine Erneuerung in den Kalender eingetragen\n* es wird an eine Reevaluierung oder Erneuerung der Dateien in der Artikelverwaltung erinnert \n\nDaneben informiert die Startseite und das Menü über offene Themen und Aufgaben. Zeiträume für Benachrichtigungen und Aufgabenplanung können in der [Konfiguration](#laufzeitvariablen) angepasst werden.\n\nAutomatische Erinnerungen und Aufgabenplanungen werden standardmäßig einmal täglich ausgeführt, können aber in der [config.ini](#laufzeitvariablen) individuell angepasst werden.\n\n[Übersicht](#übersicht)\n\n## Löschung von Aufzeichnungen\nAufzeichnungen soll eine Aufbewahrungsfrist zugeordnet werden. Anwendbare Fristen müssen innerhalb der [Sprachdateien](#anpassung) (`record.lifespan.years`) festgelegt werden. Die verfügbaren Optionen sollten an die jeweiligen regulatorischen Umstände und im Einklang mit den festgelegten Prozessen angepasst werden.\n\nAufbewahrungsfristen sollen durch die Nutzer zugeordnet werden, welche auch für die Anpassung des Vorgangsstatus berechtigt sind. Sofern nicht vorher geschehen, wird regelmäßig an die Angabe der Frist erinnert, sobald ein Vorgang als abgeschlossen markiert wurde. Abgeschlossene Aufzeichnungen, deren letzer Beitrag die Aufbewahrungsfrist überschreitet, werden automatisch und ohne weitere Benachrichtigung gelöscht. Dies schließt auch angehängte Dateien, sowie Bestellungen und deren Anhänge, welche beispielsweise das Kennzeichen als Kommissionsangabe beinhalten, mit ein.\n\nAufzeichnungen können aus Gründen der Revisionssicherheit nicht anders gelöscht werden. Gesuchen zur Löschung persönlicher Daten vor Ablauf der Aufbewahrungsfrist steht das berechtigte Interesse der Revisionssicherheit und übliche Aufbewahrungsfristen medizinischer Aufzeichnungen entgegen.\n\n[Übersicht](#übersicht)\n\n## Schulungen\nSchulungen können in der [Nutzerverwaltung](#nutzer), aber auch aus den [regulatorischen Auswertungen und Zusammenfassungen](#regulatorische-auswertungen-und-zusammenfassungen) heraus eingetragen werden. In Bezug auf ISO 13485 8.5.1 Verbesserung und ISO 13485 8.5.2 Korrekturmaßnahmen können Schulungen auch im Falle einer Versorgungsdokumentation, welche als Reklamation markiert wurde, eingetragen werden.\n\nSchulungen können geplant werden, wenn kein konkretes Datum eingetragen wurde und später in die tatsächlich stattgefundene Schulung umgewandelt und durch Angaben eines Ablaufdatums, Erfahrungspunkten und einer Datei, z.B. des Zertifikats ergänzt werden.\n\nEs wird automatisch an die Bewertung von Schulungen erinnert. Ablaufende Schulungen werden durch das System selbstständig für eine Folgeschulung geplant.\n\nSchulungen sind keine dauerhaften Aufzeichnungen und können von berechtigten Nutzern gelöscht werden. Es ist zu beachten, dass fehlende Daten keinen Nachweis aus der Anwendung heraus erbringen können. Es kann jedoch passieren, dass eingestellte Zertifizierungen für ausgelaufene Produkte unerfüllbar geplante Folgeschulungen erzeugen. Da die Bearbeitung abgeschlossener Schulungen nicht möglich ist, wäre die Löschung und Neuanlage der Schulung ohne Ablaufdatum eine mögliche Lösung.\n\nDer Abgleich der Schulungen erfolgt über den Namen der Schulung.\n\n[Übersicht](#übersicht)\n\n## Suche\nDie Funktionalität der Suche kann sich innerhalb der Anwendung abhängig vom Zusammenhang unterscheiden.\n\n* Bearbeitungsmasken (z.B. Dokumente, CSV-Filter) stellen eine Sucheingabe bereit, welche Vorschläge aus der bisherigen Eingabe präsentiert. Für das gewünschte Ergebnis muss der Volltext aus den Vorschlägen ausgewählt werden. Verfügbare Optionen sind alphabetisch sortiert.\n* Die Dateisuche erlaubt Platzhalter wie `*` für eine beliebige Anzahl beliebiger Zeichen oder `?` als beliebiges Zeichen an der angegebenen Position, wie es von jeder anderen Dateisuche in anderen Systemen bekann","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferroronline1%2Fcaro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferroronline1%2Fcaro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferroronline1%2Fcaro/lists"}