{"id":190,"date":"2025-09-27T00:36:13","date_gmt":"2025-09-27T00:36:13","guid":{"rendered":"https:\/\/bjornproost.nl\/?page_id=190"},"modified":"2025-09-27T01:10:01","modified_gmt":"2025-09-27T01:10:01","slug":"proces-kwaliteit-scorekaart","status":"publish","type":"page","link":"https:\/\/bjornproost.nl\/?page_id=190","title":{"rendered":"Proces Kwaliteit Scorekaart"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Beschrijving van de Tool<\/h3>\n\n\n\n<p>De&nbsp;<strong>Process Optimization Matrix<\/strong>&nbsp;is een interactief hulpmiddel dat is ontworpen om bedrijfsprocessen te analyseren en de volwassenheid ervan visueel in kaart te brengen. Het stelt je in staat om een proces op te splitsen in afzonderlijke stappen en deze stappen te evalueren aan de hand van gestandaardiseerde kwaliteitsdimensies (gebaseerd op ISO\/IEC 25012).<\/p>\n\n\n\n<p>Voor elke processtap en kwaliteitsdimensie kun je een score toekennen op vier verschillende domeinen:&nbsp;<strong>Mensen, Proces, Data en Applicaties<\/strong>. De scores vari\u00ebren van fase 1 (basis, ad-hoc) tot fase 5 (datagedreven &amp; AI), waarbij elke fase een kleurcode heeft van rood naar groen. Dit geeft een direct en duidelijk overzicht van de sterke en zwakke punten binnen het proces.<\/p>\n\n\n\n<p>Het uiteindelijke doel is om knelpunten te identificeren, verbeterpotentieel te ontdekken en een gestructureerde basis te leggen voor optimalisatie-initiatieven.<\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"nl\">\n  <head>\n    <meta charset=\"UTF-8\" \/>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n    <title>Proces Volwassenheidsmatrix<\/title>\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n    <script type=\"importmap\">\n      {\n        \"imports\": {\n          \"react\": \"https:\/\/esm.sh\/react@18.2.0\",\n          \"react-dom\/client\": \"https:\/\/esm.sh\/react-dom@18.2.0\/client\"\n        }\n      }\n    <\/script>\n  <\/head>\n  <body class=\"bg-gray-900 text-gray-100\">\n    <div id=\"root\"><\/div>\n    <script type=\"module\">\n      import React, { useState, useCallback, useMemo } from 'react';\n      import ReactDOM from 'react-dom\/client';\n\n      \/\/ --- Start: Inlined code from project files ---\n\n      \/\/ From: types.ts\n      const qualityDimensions = [\n        'Accuracy (Nauwkeurigheid)', 'Completeness (Volledigheid)', 'Consistency (Consistentie)',\n        'Credibility (Geloofwaardigheid)', 'Currentness (Actualiteit)', 'Accessibility (Toegankelijkheid)',\n        'Compliance (Naleving)', 'Confidentiality (Vertrouwelijkheid)', 'Efficiency (Effici\u00ebntie)',\n        'Precision (Precisie)', 'Traceability (Herleidbaarheid)', 'Understandability (Begrijpelijkheid)',\n        'Availability (Beschikbaarheid)', 'Portability (Overdraagbaarheid)', 'Recoverability (Herstelbaarheid)',\n      ];\n      const domains = ['mensen', 'proces', 'data', 'applicaties'];\n\n      \/\/ From: constants.ts\n      const PHASE_DESCRIPTIONS = {\n        '1': 'Fase 1 \u2013 Basisinrichting: ad-hoc, handmatig; fundament leggen met uniforme rekeningschema\u2019s en minimale procesafspraken.',\n        '2': 'Fase 2 \u2013 Standaardisatie: templates en kantoorbrede werkwijzen; variatie verminderen en effici\u00ebntie verhogen.',\n        '3': 'Fase 3 \u2013 Optimalisering: workflowmanagement, dashboards, kwaliteitscontroles; proces verbeteren en uitzonderingen zichtbaar maken.',\n        '4': 'Fase 4 \u2013 Voorspelbaarheid: forecasting op omzet, uren en capaciteit; scenario-analyses bij veranderende wet- en regelgeving.',\n        '5': 'Fase 5 \u2013 Datagedreven & AI: realtime datastromen, continue verbetercultuur, adviesmomenten vooraf in plaats van achteraf.',\n      };\n      const getScoreColor = (score, type = 'bg') => {\n        const roundedScore = Math.round(score);\n        switch (roundedScore) {\n          case 1: return `${type}-red-700`;\n          case 2: return `${type}-orange-600`;\n          case 3: return `${type}-yellow-500`;\n          case 4: return `${type}-lime-500`;\n          case 5: return `${type}-green-600`;\n          default: return type === 'bg' ? 'bg-gray-700' : `${type}-gray-400`;\n        }\n      };\n      const getTextColorForBg = (score) => {\n          const roundedScore = Math.round(score);\n          if (roundedScore >= 1 && roundedScore <= 2 || roundedScore === 5) {\n              return 'text-white';\n          }\n          return 'text-black';\n      };\n\n      \/\/ From: components\/Icons.tsx\n      const PlusIcon = ({ className }) => React.createElement(\"svg\", { xmlns: \"http:\/\/www.w.org\/2000\/svg\", fill: \"none\", viewBox: \"0 0 24 24\", strokeWidth: 1.5, stroke: \"currentColor\", className: className || 'w-6 h-6' }, React.createElement(\"path\", { strokeLinecap: \"round\", strokeLinejoin: \"round\", d: \"M12 4.5v15m7.5-7.5h-15\" }));\n      const TrashIcon = ({ className }) => React.createElement(\"svg\", { xmlns: \"http:\/\/www.w.org\/2000\/svg\", fill: \"none\", viewBox: \"0 0 24 24\", strokeWidth: 1.5, stroke: \"currentColor\", className: className || 'w-6 h-6' }, React.createElement(\"path\", { strokeLinecap: \"round\", strokeLinejoin: \"round\", d: \"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.134-2.036-2.134H8.718c-1.126 0-2.036.954-2.036 2.134v.916m7.5 0a48.667 48.667 0 0 0-7.5 0\" }));\n      const PencilIcon = ({ className }) => React.createElement(\"svg\", { xmlns: \"http:\/\/www.w.org\/2000\/svg\", fill: \"none\", viewBox: \"0 0 24 24\", strokeWidth: 1.5, stroke: \"currentColor\", className: className || 'w-6 h-6' }, React.createElement(\"path\", { strokeLinecap: \"round\", strokeLinejoin: \"round\", d: \"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10\" }));\n      \n      \/\/ From: App.tsx\n      const ScoreSelector = ({ domain, score, onChange }) => {\n        const colorClass = getScoreColor(score);\n        const textColorClass = getTextColorForBg(score);\n        return React.createElement(\"div\", { className: \"flex items-center space-x-2 my-1\" },\n          React.createElement(\"label\", { className: \"capitalize w-24 text-sm text-gray-400 flex-shrink-0\" }, domain),\n          React.createElement(\"select\", {\n            value: score,\n            onChange: (e) => onChange(parseInt(e.target.value, 10)),\n            className: `w-full p-1 rounded border-2 border-transparent focus:outline-none focus:ring-2 focus:ring-blue-400 focus:border-blue-400 transition-all text-sm ${score > 0 ? `${colorClass} ${textColorClass} font-bold` : 'bg-gray-600 text-gray-300'}`,\n            title: PHASE_DESCRIPTIONS[score] || 'Selecteer een fase'\n          },\n            React.createElement(\"option\", { value: \"0\" }, \"N.v.t.\"),\n            [1, 2, 3, 4, 5].map(phase => React.createElement(\"option\", { key: phase, value: phase, title: PHASE_DESCRIPTIONS[phase] }, `Fase ${phase}`))\n          )\n        );\n      };\n\n      const initialProcessSteps = [\n        { id: 'step-1', name: 'Huidige situatie analyseren' },\n        { id: 'step-2', name: 'Nieuwe werkwijze implementeren' },\n      ];\n\n      const initialQualityRows = [\n        {\n          id: 'row-1',\n          dimension: 'Accuracy (Nauwkeurigheid)',\n          scores: {\n            'step-1': { domainScores: { mensen: 1, proces: 2, data: 1, applicaties: 2 }, description: 'Analysefase: veel handmatige invoer en controles, wat leidt tot fouten.' },\n            'step-2': { domainScores: { mensen: 3, proces: 3, data: 4, applicaties: 3 }, description: 'Implementatiefase: introductie van validatieregels en training.' },\n          },\n        },\n        {\n          id: 'row-2',\n          dimension: 'Efficiency (Effici\u00ebntie)',\n          scores: {\n            'step-1': { domainScores: { mensen: 2, proces: 1, data: 2, applicaties: 1 }, description: 'Huidige proces is tijdrovend met veel dubbel werk.' },\n            'step-2': { domainScores: { mensen: 4, proces: 5, data: 4, applicaties: 4 }, description: 'Nieuwe workflow automatiseert taken en reduceert doorlooptijd.' },\n          },\n        },\n      ];\n\n      const App = () => {\n        const [processName, setProcessName] = useState('Proces Volwassenheidsmatrix');\n        const [processSteps, setProcessSteps] = useState(initialProcessSteps);\n        const [qualityRows, setQualityRows] = useState(initialQualityRows);\n\n        const addProcessStep = useCallback(() => setProcessSteps(prev => [...prev, { id: `step-${Date.now()}`, name: 'Nieuwe Stap' }]), []);\n        const removeProcessStep = useCallback((stepId) => {\n          setProcessSteps(prev => prev.filter(step => step.id !== stepId));\n          setQualityRows(prevRows => prevRows.map(row => {\n            const newScores = { ...row.scores };\n            delete newScores[stepId];\n            return { ...row, scores: newScores };\n          }));\n        }, []);\n        const updateProcessStepName = useCallback((stepId, newName) => setProcessSteps(prev => prev.map(step => step.id === stepId ? { ...step, name: newName } : step)), []);\n        const addQualityRow = useCallback(() => setQualityRows(prev => [...prev, { id: `row-${Date.now()}`, dimension: '', scores: {} }]), []);\n        const removeQualityRow = useCallback((rowId) => setQualityRows(prev => prev.filter(row => row.id !== rowId)), []);\n        const updateRowDimension = useCallback((rowId, newDimension) => setQualityRows(prev => prev.map(row => row.id === rowId ? { ...row, dimension: newDimension } : row)), []);\n        const updateScore = useCallback((rowId, stepId, domain, newScore) => {\n          setQualityRows(prev => prev.map(row => {\n            if (row.id !== rowId) return row;\n            const currentCellData = row.scores[stepId] || { domainScores: { mensen: 0, proces: 0, data: 0, applicaties: 0 }, description: '' };\n            const newDomainScores = { ...currentCellData.domainScores, [domain]: newScore };\n            const newCellData = { ...currentCellData, domainScores: newDomainScores };\n            return { ...row, scores: { ...row.scores, [stepId]: newCellData } };\n          }));\n        }, []);\n        const updateDescription = useCallback((rowId, stepId, newDescription) => {\n          setQualityRows(prev => prev.map(row => {\n            if (row.id !== rowId) return row;\n            const currentCellData = row.scores[stepId] || { domainScores: { mensen: 0, proces: 0, data: 0, applicaties: 0 }, description: '' };\n            const newCellData = { ...currentCellData, description: newDescription };\n            return { ...row, scores: { ...row.scores, [stepId]: newCellData } };\n          }));\n        }, []);\n\n        const columnTotals = useMemo(() => {\n          const totals = {};\n          for (const step of processSteps) {\n            let totalScore = 0;\n            let count = 0;\n            for (const row of qualityRows) {\n              if (row.scores[step.id]?.domainScores) {\n                for (const domain of domains) {\n                  const score = row.scores[step.id].domainScores[domain];\n                  if (score > 0) {\n                    totalScore += score;\n                    count++;\n                  }\n                }\n              }\n            }\n            totals[step.id] = { totalScore, count, average: count > 0 ? totalScore \/ count : 0 };\n          }\n          return totals;\n        }, [processSteps, qualityRows]);\n\n        const availableDimensions = useMemo(() => {\n          const usedDimensions = new Set(qualityRows.map(row => row.dimension));\n          return qualityDimensions.filter(d => !usedDimensions.has(d));\n        }, [qualityRows]);\n\n        return React.createElement(\"div\", { className: \"p-4 sm:p-6 lg:p-8 min-h-screen\" },\n          React.createElement(\"div\", { className: \"max-w-full mx-auto\" },\n            React.createElement(\"header\", { className: \"mb-8\" },\n              React.createElement(\"div\", { className: \"flex items-end gap-3 border-b-2 border-gray-700 focus-within:border-blue-400 transition-colors w-full md:w-auto max-w-2xl\" },\n                React.createElement(\"input\", { type: \"text\", value: processName, onChange: (e) => setProcessName(e.target.value), className: \"text-3xl md:text-4xl font-bold bg-transparent outline-none w-full pb-2\", placeholder: \"Procesnaam\" }),\n                React.createElement(PencilIcon, { className: \"w-6 h-6 text-gray-500 mb-3\" })\n              ),\n              React.createElement(\"p\", { className: \"mt-2 text-gray-400\" }, \"Beoordeel uw processtappen op verschillende kwaliteitsdimensies binnen diverse domeinen.\")\n            ),\n            React.createElement(\"div\", { className: \"flex flex-col sm:flex-row space-y-4 sm:space-y-0 sm:space-x-4 mb-6\" },\n              React.createElement(\"button\", { onClick: addProcessStep, className: \"flex items-center justify-center px-4 py-2 bg-blue-600 hover:bg-blue-700 rounded-md shadow-lg transition-colors font-semibold\" }, React.createElement(PlusIcon, { className: \"w-5 h-5 mr-2\" }), \" Processtap Toevoegen\"),\n              React.createElement(\"button\", { onClick: addQualityRow, className: \"flex items-center justify-center px-4 py-2 bg-green-600 hover:bg-green-700 rounded-md shadow-lg transition-colors font-semibold\" }, React.createElement(PlusIcon, { className: \"w-5 h-5 mr-2\" }), \" Kwaliteitsdimensie Toevoegen\")\n            ),\n            React.createElement(\"div\", { className: \"overflow-x-auto shadow-2xl rounded-lg\" },\n              React.createElement(\"table\", { className: \"min-w-full bg-gray-800 border border-gray-700 table-fixed\" },\n                React.createElement(\"thead\", { className: \"bg-gray-700\/50\" },\n                  React.createElement(\"tr\", null,\n                    React.createElement(\"th\", { className: \"w-1\/5 min-w-[250px] p-4 text-left text-sm font-semibold text-gray-300 uppercase tracking-wider sticky left-0 bg-gray-800 z-10 border-r border-gray-700\" }, \"Kwaliteitsdimensie\"),\n                    processSteps.map((step) => React.createElement(\"th\", { key: step.id, className: \"w-1\/4 min-w-[300px] p-2 text-left text-sm font-semibold text-gray-300 uppercase tracking-wider\" },\n                      React.createElement(\"div\", { className: \"flex items-center\" },\n                        React.createElement(\"div\", { className: \"flex-grow flex items-center bg-transparent rounded focus-within:bg-gray-900 transition-colors\" },\n                          React.createElement(\"input\", { type: \"text\", value: step.name, onChange: (e) => updateProcessStepName(step.id, e.target.value), className: \"p-2 bg-transparent w-full outline-none\", placeholder: \"Stapnaam\" }),\n                          React.createElement(PencilIcon, { className: \"w-4 h-4 text-gray-500 mr-2 flex-shrink-0\" })\n                        ),\n                        React.createElement(\"button\", { onClick: () => removeProcessStep(step.id), className: \"ml-2 p-1 text-gray-400 hover:text-red-500 rounded-full hover:bg-gray-700 transition-colors flex-shrink-0\", title: \"Verwijder Stap\" }, React.createElement(TrashIcon, { className: \"w-5 h-5\" }))\n                      )\n                    ))\n                  )\n                ),\n                React.createElement(\"tbody\", { className: \"divide-y divide-gray-700\" },\n                  qualityRows.map((row) => React.createElement(\"tr\", { key: row.id },\n                    React.createElement(\"td\", { className: \"p-2 text-left align-top sticky left-0 bg-gray-800 z-10 border-r border-gray-700\" },\n                      React.createElement(\"div\", { className: \"flex items-center\" },\n                        React.createElement(\"select\", { value: row.dimension, onChange: (e) => updateRowDimension(row.id, e.target.value), className: \"p-2 bg-gray-700 rounded w-full outline-none focus:ring-2 focus:ring-blue-500 text-sm\" },\n                          React.createElement(\"option\", { value: \"\", disabled: true }, \"Selecteer een dimensie...\"),\n                          row.dimension && React.createElement(\"option\", { value: row.dimension }, row.dimension),\n                          availableDimensions.map(dim => React.createElement(\"option\", { key: dim, value: dim }, dim))\n                        ),\n                        React.createElement(\"button\", { onClick: () => removeQualityRow(row.id), className: \"ml-2 p-1 text-gray-400 hover:text-red-500 rounded-full hover:bg-gray-700 transition-colors\", title: \"Verwijder Rij\" }, React.createElement(TrashIcon, { className: \"w-5 h-5\" }))\n                      )\n                    ),\n                    processSteps.map((step) => React.createElement(\"td\", { key: step.id, className: \"p-2 text-left align-top\" },\n                      domains.map(domain => React.createElement(ScoreSelector, { key: domain, domain: domain, score: (row.scores[step.id]?.domainScores?.[domain]) || 0, onChange: (newScore) => updateScore(row.id, step.id, domain, newScore) })),\n                      React.createElement(\"div\", { className: \"mt-3 relative\" },\n                        React.createElement(\"textarea\", { value: row.scores[step.id]?.description || '', onChange: (e) => updateDescription(row.id, step.id, e.target.value), placeholder: \"Toelichting...\", rows: 2, className: \"w-full p-2 bg-gray-700\/50 rounded border border-gray-600 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm text-gray-300 placeholder-gray-500 transition-colors\" }),\n                        React.createElement(PencilIcon, { className: \"w-4 h-4 text-gray-500 absolute top-2 right-2 pointer-events-none\" })\n                      )\n                    ))\n                  ))\n                ),\n                React.createElement(\"tfoot\", { className: \"bg-gray-700\/50\" },\n                  React.createElement(\"tr\", null,\n                    React.createElement(\"td\", { className: \"p-4 text-left text-sm font-semibold text-gray-300 uppercase tracking-wider sticky left-0 bg-gray-800 z-10 border-r border-gray-700\" }, \"Totaalscore\"),\n                    processSteps.map((step) => {\n                      const total = columnTotals[step.id];\n                      const colorClass = getScoreColor(total.average);\n                      const textColorClass = getTextColorForBg(total.average);\n                      return React.createElement(\"td\", { key: step.id, className: `p-4 text-center font-bold text-lg transition-colors ${total.average > 0 ? `${colorClass} ${textColorClass}` : 'bg-gray-700'}` }, total.average > 0 ? total.average.toFixed(2) : 'N.v.t.');\n                    })\n                  )\n                )\n              )\n            ),\n            processSteps.length === 0 && React.createElement(\"div\", { className: \"text-center py-10 bg-gray-800 mt-4 rounded-lg\" },\n              React.createElement(\"p\", { className: \"text-gray-400\" }, \"Nog geen processtappen toegevoegd. Klik op \\\"Processtap Toevoegen\\\" om te beginnen.\")\n            )\n          )\n        );\n      };\n      \n      \/\/ From: index.tsx\n      const rootElement = document.getElementById('root');\n      if (!rootElement) {\n        throw new Error(\"Could not find root element to mount to\");\n      }\n      const root = ReactDOM.createRoot(rootElement);\n      root.render(\n        React.createElement(React.StrictMode, null, React.createElement(App))\n      );\n    <\/script>\n  <\/body>\n<\/html>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-luminous-vivid-amber-color has-primary-background-color has-text-color has-background has-link-color wp-elements-8dd48001f3e15b006d89613c5af8f200\"><a href=\"https:\/\/process-optimization-matrix-115160454639.us-west1.run.app\/\" data-type=\"link\" data-id=\"https:\/\/process-optimization-matrix-115160454639.us-west1.run.app\/\">Ga naar de applicatie toe om het te kunnen opslaan en printen<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Hoe gebruik je de applicatie?<\/h3>\n\n\n\n<p>Het gebruik van de tool is eenvoudig en intu\u00eftief. Volg deze stappen om je proces in kaart te brengen:<\/p>\n\n\n\n<p><strong>1. Geef je Proces een Naam<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Klik bovenaan op de titel (standaard &#8220;Voorbeeld Optimalisatieproces&#8221;).<\/li>\n\n\n\n<li>Typ de naam van het proces dat je wilt analyseren, bijvoorbeeld &#8220;Klant onboarding&#8221; of &#8220;Verwerken van facturen&#8221;. Het potlood-icoon geeft aan dat dit veld bewerkbaar is.<\/li>\n<\/ul>\n\n\n\n<p><strong>2. Definieer de Processtappen<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Klik op de knop&nbsp;<strong>&#8220;&#x2795; Processtap Toevoegen&#8221;<\/strong>&nbsp;om een nieuwe kolom aan de tabel toe te voegen. Elke kolom vertegenwoordigt een stap in je proces.<\/li>\n\n\n\n<li>Klik in de kolomkop op de tekst &#8220;Nieuwe Stap&#8221; om de naam van de processtap aan te passen (bv. &#8220;Intakegesprek&#8221;, &#8220;Offerte opstellen&#8221;, &#8220;Contract ondertekenen&#8221;).<\/li>\n\n\n\n<li>Je kunt een processtap verwijderen door op het&nbsp;<strong>prullenbak-icoon<\/strong>&nbsp;(&#x1f5d1;&#xfe0f;) naast de naam te klikken.<\/li>\n<\/ul>\n\n\n\n<p><strong>3. Voeg Kwaliteitsdimensies Toe<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Klik op de knop&nbsp;<strong>&#8220;&#x2795; Kwaliteitsdimensie Toevoegen&#8221;<\/strong>&nbsp;om een nieuwe rij aan de tabel toe te voegen.<\/li>\n\n\n\n<li>Klik in de eerste kolom van de nieuwe rij op het dropdown-menu (&#8220;Selecteer een dimensie&#8230;&#8221;).<\/li>\n\n\n\n<li>Kies een van de voorgedefinieerde kwaliteitsdimensies, zoals&nbsp;Accuracy (Nauwkeurigheid)&nbsp;of&nbsp;Efficiency (Effici\u00ebntie), waarop je de processtappen wilt beoordelen.<\/li>\n\n\n\n<li>Je kunt een rij verwijderen door op het&nbsp;<strong>prullenbak-icoon<\/strong>&nbsp;(&#x1f5d1;&#xfe0f;) naast het dropdown-menu te klikken.<\/li>\n<\/ul>\n\n\n\n<p><strong>4. Scoor de Cellen<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Voor elke combinatie van een processtap (kolom) en een kwaliteitsdimensie (rij) kun je nu scores toekennen.<\/li>\n\n\n\n<li>Per cel zie je de vier domeinen:&nbsp;<strong>mensen, proces, data en applicaties<\/strong>.<\/li>\n\n\n\n<li>Gebruik per domein het dropdown-menu om een score van Fase 1 t\/m Fase 5 toe te kennen. De achtergrondkleur van het veld past zich direct aan:\n<ul class=\"wp-block-list\">\n<li><strong>Fase 1 (Rood):<\/strong>&nbsp;Basisinrichting, ad-hoc.<\/li>\n\n\n\n<li><strong>Fase 2 (Oranje):<\/strong>&nbsp;Standaardisatie.<\/li>\n\n\n\n<li><strong>Fase 3 (Geel):<\/strong>&nbsp;Optimalisering.<\/li>\n\n\n\n<li><strong>Fase 4 (Lichtgroen):<\/strong>&nbsp;Voorspelbaarheid.<\/li>\n\n\n\n<li><strong>Fase 5 (Groen):<\/strong>&nbsp;Datagedreven &amp; AI.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Kies &#8220;N.v.t.&#8221; als een domein niet van toepassing is.<\/li>\n<\/ul>\n\n\n\n<p><strong>5. Voeg een Toelichting toe<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Onder de vier scores in elke cel bevindt zich een tekstveld met &#8220;Toelichting&#8230;&#8221;.<\/li>\n\n\n\n<li>Hier kun je een korte omschrijving of onderbouwing geven voor je scores. Bijvoorbeeld: &#8220;Handmatige data-invoer leidt hier tot fouten (score 1), maar de medewerkers zijn wel goed getraind (score 3)&#8221;.<\/li>\n\n\n\n<li>Dit is essentieel om de context van je beoordeling later terug te kunnen halen.<\/li>\n<\/ul>\n\n\n\n<p><strong>6. Analyseer de Totaalscore<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Onderaan elke processtap-kolom wordt automatisch een&nbsp;<strong>&#8220;Totaalscore&#8221;<\/strong>&nbsp;berekend.<\/li>\n\n\n\n<li>Dit is het gemiddelde van alle ingevulde scores in die kolom.<\/li>\n\n\n\n<li>De cel krijgt een kleur die overeenkomt met de gemiddelde score. Dit geeft je in \u00e9\u00e9n oogopslag een indicatie van de algehele volwassenheid van die specifieke processtap. Een rode of oranje totaalscore duidt op een potentieel knelpunt.<\/li>\n<\/ul>\n\n\n\n<p>Door deze stappen te volgen, cre\u00eber je een compleet en visueel overzicht van je proces, wat een uitstekend startpunt is voor discussie en concrete verbeteracties.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Beschrijving van de Tool De&nbsp;Process Optimization Matrix&nbsp;is een interactief hulpmiddel dat is ontworpen om bedrijfsprocessen te analyseren en de volwassenheid ervan visueel in kaart te brengen. Het stelt je in staat om een proces op te splitsen in afzonderlijke stappen en deze stappen te evalueren aan de hand van gestandaardiseerde kwaliteitsdimensies (gebaseerd op ISO\/IEC 25012). [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":142,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-no-separators","meta":{"_joinchat":[],"footnotes":""},"class_list":["post-190","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/bjornproost.nl\/index.php?rest_route=\/wp\/v2\/pages\/190","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bjornproost.nl\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bjornproost.nl\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bjornproost.nl\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bjornproost.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=190"}],"version-history":[{"count":5,"href":"https:\/\/bjornproost.nl\/index.php?rest_route=\/wp\/v2\/pages\/190\/revisions"}],"predecessor-version":[{"id":199,"href":"https:\/\/bjornproost.nl\/index.php?rest_route=\/wp\/v2\/pages\/190\/revisions\/199"}],"up":[{"embeddable":true,"href":"https:\/\/bjornproost.nl\/index.php?rest_route=\/wp\/v2\/pages\/142"}],"wp:attachment":[{"href":"https:\/\/bjornproost.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}