- Restore blue PageHeader on Dashboard (/app-components) - Update homepage (/) with subtle header design without blue bar - Add uniform PageHeader styling to application edit page - Fix Rapporten link on homepage to point to /reports overview - Improve header descriptions spacing for better readability
53 KiB
CMDB Insight - Technische Specificatie
Projectoverzicht
Doel
Ontwikkelen van een interactieve tool voor het classificeren van applicatiecomponenten naar ZiRA-applicatiefuncties, met directe integratie met Jira Assets CMDB.
Organisatie
- Organisatie: Zuyderland Medisch Centrum
- Afdeling: ICMT - Zorg en Ondersteunende Applicaties
- Scope: ~500 applicatiecomponenten
Functionaliteit
- Ophalen van applicatiecomponenten uit Jira Assets zonder ApplicationFunction
- AI-gestuurde classificatiesuggestie op basis van beschikbare metadata
- Handmatige validatie/correctie door beheerder
- Terugschrijven van classificatie naar Jira Assets
- Rapportage en voortgangsmonitoring
Technische Architectuur
┌─────────────────────────────────────────────────────────────────┐
│ CMDB Insight │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌─────────────────┐ │
│ │ React │ │ Express │ │ Jira Assets │ │
│ │ Frontend │◄───►│ Backend │◄───►│ REST API │ │
│ │ (Vite) │ │ (Node.js) │ │ (Data Center) │ │
│ └──────────────┘ └──────┬───────┘ └─────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Claude API │ │
│ │ (Anthropic) │ │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Tech Stack
- Frontend: React + TypeScript + Vite + TailwindCSS
- Backend: Node.js + Express + TypeScript
- AI: Anthropic Claude API (claude-sonnet-4-20250514)
- Database: SQLite (lokale cache voor sessie/voortgang)
Jira Assets API Specificaties
Authenticatie
Jira Data Center met Personal Access Token (PAT).
// Headers voor alle requests
const headers = {
'Authorization': `Bearer ${process.env.JIRA_PAT}`,
'Content-Type': 'application/json',
'Accept': 'application/json'
};
Base URL
https://{jira-host}/rest/assets/1.0
Schema Details
- Schema naam: ICMT - CMDB
- ObjectType: Application Component
Relevante Attributen Application Component
| Attribuut | Type | Beschrijving |
|---|---|---|
| Name | Text | Applicatienaam |
| SearchReference | Text | Zoeksleutel/alias |
| Description | Text | Functionele beschrijving |
| Organisation | Reference | Organisatieonderdeel |
| ApplicationFunction | Reference | Te vullen: verwijzing naar ApplicationFunction object |
| Status | Select | Status van applicatie |
| Business Importance | Select | Bedrijfsbelang |
| Business Impact Analyse | Reference | BIA-document |
| Application Component Hosting Type | Select | On-prem/SaaS/Cloud |
| Supplier Product | Reference | Leverancier/product |
| Business Owner | Reference | Eigenaar business |
| System Owner | Reference | Systeemeigenaar |
| Functional Application Management | Reference | FAB-team |
| Technical Application Management | Reference | TAB-team |
| Medische Techniek | Boolean | MT-gerelateerd |
| Application Management - Dynamics Factor | Reference | Bewerkbaar: Dynamiekfactor |
| Application Management - Complexity Factor | Reference | Bewerkbaar: Complexiteitsfactor |
| Application Management - Number of Users | Reference | Bewerkbaar: Aantal gebruikers |
| ICT Governance Model | Reference | Bewerkbaar: Regiemodel |
Reference Objects voor Filters
Status (Filter - niet bewerkbaar)
| Key | Naam | Beschrijving |
|---|---|---|
| status | Status | Algemene status |
| closed | Closed | Afgesloten |
| deprecated | Deprecated | Verouderd, wordt uitgefaseerd |
| eol | End of life | Einde levensduur |
| eos | End of support | Geen ondersteuning meer |
| impl | Implementation | In implementatie |
| prod | In Production | Productie |
| poc | Proof of Concept | Proefproject |
| shadow | Shadow IT | Niet-geautoriseerde IT |
| undefined | Undefined | Niet gedefinieerd |
Reference Objects voor Bewerkbare Velden
Application Management - Dynamics Factor
| Key | Naam | Beschrijving |
|---|---|---|
| 1 | Stabiel | Weinig wijzigingen, uitgekristalliseerd systeem, < 2 releases/jaar |
| 2 | Gemiddeld | Regelmatige wijzigingen, 2-4 releases/jaar, incidentele projecten |
| 3 | Hoog | Veel wijzigingen, > 4 releases/jaar, continue doorontwikkeling |
| 4 | Zeer hoog | Continu in beweging, grote transformatieprojecten, veel nieuwe functionaliteit |
Application Management - Complexity Factor
| Key | Naam | Beschrijving |
|---|---|---|
| 1 | Laag | Standalone applicatie, geen/weinig integraties, standaard configuratie |
| 2 | Gemiddeld | Enkele integraties, beperkt maatwerk, standaard governance |
| 3 | Hoog | Veel integraties, significant maatwerk, meerdere stakeholdergroepen |
| 4 | Zeer hoog | Platform met meerdere workloads, uitgebreide governance, veel maatwerk |
Application Management - Number of Users
| Key | Naam |
|---|---|
| 1 | < 100 |
| 2 | 100 - 500 |
| 3 | 500 - 2.000 |
| 4 | 2.000 - 5.000 |
| 5 | 5.000 - 10.000 |
| 6 | 10.000 - 15.000 |
| 7 | > 15.000 |
ICT Governance Model (Regiemodel)
| Key | Naam | Beschrijving | Toelichting |
|---|---|---|---|
| A | Centraal Beheer | ICMT voert volledig beheer uit | Volledige dienstverlening door ICMT. Standaardmodel voor kernapplicaties met BIA D/E/F. Voorbeelden: EPD (HiX), ERP, Microsoft 365 |
| B | Federatief Beheer | ICMT + business delen beheer | ICMT en business delen verantwoordelijkheid. Geschikt voor applicaties met sterke key user organisatie |
| C | Uitbesteed met ICMT-Regie | Leverancier beheert, ICMT regisseert | Leverancier voert beheer uit, ICMT houdt regie. Standaardmodel voor SaaS waar ICMT contractpartij is |
| D | Uitbesteed met Business-Regie | Leverancier beheert, business regisseert | Business onderhoudt leveranciersrelatie. ICMT heeft beperkte betrokkenheid. SaaS waar business contract beheert |
| E | Volledig Decentraal Beheer | Business voert volledig beheer uit | Business voert zelf beheer uit. ICMT minimaal betrokken. Shadow IT, niche tools, pilotapplicaties |
API Endpoints
1. Object Schema ophalen
GET /rest/assets/1.0/objectschema/list
2. ObjectType ID vinden
GET /rest/assets/1.0/objectschema/{schemaId}/objecttypes
3. Applicaties ophalen (met filters)
# Voorbeeld: Alle applicaties zonder ApplicationFunction, status In Production of Implementation
POST /rest/assets/1.0/aql/objects
Content-Type: application/json
{
"qlQuery": "objectType = \"Application Component\" AND ApplicationFunction IS EMPTY AND Status IN (\"In Production\", \"Implementation\")",
"page": 1,
"resultPerPage": 50,
"includeAttributes": true
}
# Voorbeeld: Vrije tekst zoeken
POST /rest/assets/1.0/aql/objects
Content-Type: application/json
{
"qlQuery": "objectType = \"Application Component\" AND (Name LIKE \"%epic%\" OR Description LIKE \"%epic%\")",
"page": 1,
"resultPerPage": 50,
"includeAttributes": true
}
# Voorbeeld: Gecombineerde filters
POST /rest/assets/1.0/aql/objects
Content-Type: application/json
{
"qlQuery": "objectType = \"Application Component\" AND Status = \"In Production\" AND \"ICT Governance Model\" IS EMPTY AND \"Application Management - Dynamics Factor\" IS NOT EMPTY",
"page": 1,
"resultPerPage": 50,
"includeAttributes": true
}
4. ApplicationFunction objecten ophalen (voor dropdown)
POST /rest/assets/1.0/aql/objects
Content-Type: application/json
{
"qlQuery": "objectType = \"ApplicationFunction\"",
"resultPerPage": 200,
"includeAttributes": true
}
5. Dynamics Factor objecten ophalen
POST /rest/assets/1.0/aql/objects
Content-Type: application/json
{
"qlQuery": "objectType = \"Application Management - Dynamics Factor\"",
"resultPerPage": 10,
"includeAttributes": true
}
6. Complexity Factor objecten ophalen
POST /rest/assets/1.0/aql/objects
Content-Type: application/json
{
"qlQuery": "objectType = \"Application Management - Complexity Factor\"",
"resultPerPage": 10,
"includeAttributes": true
}
7. Number of Users objecten ophalen
POST /rest/assets/1.0/aql/objects
Content-Type: application/json
{
"qlQuery": "objectType = \"Application Management - Number of Users\"",
"resultPerPage": 10,
"includeAttributes": true
}
8. ICT Governance Model objecten ophalen
POST /rest/assets/1.0/aql/objects
Content-Type: application/json
{
"qlQuery": "objectType = \"ICT Governance Model\"",
"resultPerPage": 10,
"includeAttributes": true
}
9. Applicatie updaten met meerdere velden
PUT /rest/assets/1.0/object/{objectId}
Content-Type: application/json
{
"attributes": [
{
"objectTypeAttributeId": "{applicationFunctionAttributeId}",
"objectAttributeValues": [
{
"referencedObjectBeanKey": "{applicationFunctionObjectKey}"
}
]
},
{
"objectTypeAttributeId": "{dynamicsFactorAttributeId}",
"objectAttributeValues": [
{
"referencedObjectBeanKey": "{dynamicsFactorObjectKey}"
}
]
},
{
"objectTypeAttributeId": "{complexityFactorAttributeId}",
"objectAttributeValues": [
{
"referencedObjectBeanKey": "{complexityFactorObjectKey}"
}
]
},
{
"objectTypeAttributeId": "{numberOfUsersAttributeId}",
"objectAttributeValues": [
{
"referencedObjectBeanKey": "{numberOfUsersObjectKey}"
}
]
},
{
"objectTypeAttributeId": "{governanceModelAttributeId}",
"objectAttributeValues": [
{
"referencedObjectBeanKey": "{governanceModelObjectKey}"
}
]
}
]
}
10. Attribuut ID's ophalen
GET /rest/assets/1.0/objecttype/{objectTypeId}/attributes
ZiRA Applicatiefuncties Taxonomie
Domein: STURING
| Code | Naam | Beschrijving |
|---|---|---|
| STU-001 | Beleid & Innovatie | Functionaliteit voor ondersteuning van het bepalen en beheren van beleid, ontwikkeling producten & diensten, planning & control cyclus en ondersteunende managementinformatie |
| STU-002 | Proces & Architectuur | Functionaliteit voor het ontwikkelen en beheren van de enterprise architectuur (organisatie, processen, informatie, applicatie, techniek) |
| STU-003 | Project & Portfoliomanagement | Functionaliteit voor het beheren van projecten en programma's |
| STU-004 | Kwaliteitsinformatiemanagement | Functionaliteit voor de ondersteuning van het maken, verwerken en beheren van kwaliteitsdocumenten (inclusief protocollen) |
| STU-005 | Performance & Verantwoording | Functionaliteit voor het beheren van productieafspraken, KPI's inclusief beheer van de verantwoording in het kader van wet & regelgeving alsmede prestaties en maatschappelijk verantwoordschap |
| STU-006 | Marketing & Contractmanagement | Functionaliteit voor ondersteuning van marktanalyses en contractmanagement |
Domein: ONDERZOEK
| Code | Naam | Beschrijving |
|---|---|---|
| ONZ-001 | Onderzoek ontwikkeling | Functionaliteit voor de administratieve ondersteuning voor het indienen van een onderzoeksaanvraag, het opstellen van een onderzoeksprotocol, het opstellen van een onderzoeksvoorstel en de medisch etische keuring |
| ONZ-002 | Onderzoekvoorbereiding | Functionaliteit voor de administratieve voorbereiding van het onderzoek als aanvraag van vergunningen en financieringen |
| ONZ-003 | Onderzoeksmanagement | Functionaliteit voor de administratieve uitvoering van het onderzoek als aanvraag patientenselectie, verkrijgen consent |
| ONZ-004 | Researchdatamanagement | Functionaliteit voor het verzamelen, bewerken, analyseren en publiceren van onderzoeksdata |
| ONZ-005 | Onderzoekpublicatie | Functionaliteit voor de opslag van publicaties van onderzoeksresultaten |
Domein: ZORG - Samenwerking
| Code | Naam | Beschrijving |
|---|---|---|
| ZRG-SAM-001 | Dossier inzage | Functionaliteit die het mogelijk maakt voor patiënten om digitale inzage te krijgen in medische dossiers |
| ZRG-SAM-002 | Behandelondersteuning | Functionaliteit voor het voorlichten en coachen van en communiceren met de patiënt over zijn zorg (patientempowerment) |
| ZRG-SAM-003 | Interactie PGO | Functionaliteit voor ondersteuning en integraties met een persoonlijke gezondheidsomgeving |
| ZRG-SAM-004 | Patientenforum | Functionaliteit voor het aanbieden van een online omgeving voor patienten |
| ZRG-SAM-005 | Preventie | Functionaliteit ter bevordering van de gezondheid en ter voorkoming van klachten en problemen |
| ZRG-SAM-006 | Gezondheidsvragen | Functionaliteit voor het on-line invullen van vragenlijsten |
| ZRG-SAM-007 | Kwaliteit en tevredenheidsmeting | Functionaliteit om de effecten van behandelingen en de patiënttevredenheid te kunnen meten |
| ZRG-SAM-008 | Tele-consultatie | Functionaliteit om een zorgprofessional remote te raadplegen |
| ZRG-SAM-009 | Zelfmonitoring | Functionaliteit om de eigen gezondheidstoestand te bewaken |
| ZRG-SAM-010 | Tele-monitoring | Functionaliteit waarmee de patient op afstand gevolgd en begeleid wordt |
| ZRG-SAM-011 | On-line afspraken | Functionaliteit voor het on-line maken van afspraken |
| ZRG-SAM-012 | Dossieruitwisseling | Functionaliteit voor het versturen en ontvangen en verwerken van dossierinformatie |
| ZRG-SAM-013 | Interactie externe bronnen | Functionaliteit voor informatieuitwisseling met derden |
| ZRG-SAM-014 | Samenwerking betrokken zorgverleners | Functionaliteit voor het coördineren van zorg met andere zorgverleners |
Domein: ZORG - Consultatie & Behandeling
| Code | Naam | Beschrijving |
|---|---|---|
| ZRG-CON-001 | Dossierraadpleging | Functionaliteit voor het raadplegen van het dossier via verschillende views |
| ZRG-CON-002 | Dossiervoering | Functionaliteit voor het bijwerken van het dossier |
| ZRG-CON-003 | Medicatie | Functionaliteit van de ondersteuning van de medicamenteuze behandeling |
| ZRG-CON-004 | Operatie | Functionaliteit voor de ondersteuning van het operatieve proces |
| ZRG-CON-005 | Patientbewaking | Functionaliteit voor bewaking van de patienten (monitoring, alarming) |
| ZRG-CON-006 | Beslissingsondersteuning | Functionaliteit voor de ondersteuning van besluiten van de zorgverlener |
| ZRG-CON-007 | Verzorgingondersteuning | Functionaliteit voor de ondersteuning van het verzorgingsproces |
| ZRG-CON-008 | Ordermanagement | Functionaliteit voor de uitvoering van de closed order loop |
| ZRG-CON-009 | Resultaat afhandeling | Functionaliteit voor de analyse en rapportage van resultaten |
| ZRG-CON-010 | Kwaliteitsbewaking | Functionaliteit voor de bewaking en signalering van fouten |
Domein: ZORG - Aanvullend onderzoek
| Code | Naam | Beschrijving |
|---|---|---|
| ZRG-AOZ-001 | Laboratoriumonderzoek | Functionaliteit voor de ondersteuning van processen op laboratoria (kcl, microbiologie, pathologie, klinische genetica, apotheeklab) |
| ZRG-AOZ-002 | Beeldvormend onderzoek | Functionaliteit voor de ondersteuning van beeldvormend onderzoek (Radiologie, Nucleair, Cardiologie) inclusief beeldmanagement (VNA) |
| ZRG-AOZ-003 | Functieonderzoek | Functionaliteit voor de ondersteuning van functieonderzoek (ECG, Longfunctie, Audiologie) |
Domein: ZORG - Zorgondersteuning
| Code | Naam | Beschrijving |
|---|---|---|
| ZRG-ZON-001 | Zorgrelatiebeheer | Functionaliteit voor beheren van alle gegevens van zorgrelaties |
| ZRG-ZON-002 | Zorgplanning | Functionaliteit voor het maken en beheren van afspraken, opnames, overplaatsingen, ontslag en verwijzing |
| ZRG-ZON-003 | Resource planning | Functionaliteit voor het plannen van resources en middelen |
| ZRG-ZON-004 | Patiëntadministratie | Functionaliteit voor beheer van demografie, contactpersonen en niet-medische informatie |
| ZRG-ZON-005 | Patiëntenlogistiek | Functionaliteit voor de ondersteuning van het verplaatsen van mensen en middelen |
| ZRG-ZON-006 | Zorgfacturering | Functionaliteit voor de vastlegging van de verrichting en factureren van het zorgproduct |
Domein: ONDERWIJS
| Code | Naam | Beschrijving |
|---|---|---|
| OND-001 | Onderwijsportfolio | Functionaliteit voor creatie en beheer van het onderwijsportfolio |
| OND-002 | Learning Content Management | Functionaliteit creatie en beheer van onderwijscontent |
| OND-003 | Educatie | Functionaliteit voor het geven van educatie dmv digitale middelen |
| OND-004 | Toetsing | Functionaliteit voor het geven en beoordelen van toetsen |
| OND-005 | Student Informatie | Functionaliteit voor het beheren van alle informatie van en over de student |
| OND-006 | Onderwijs rooster & planning | Functionaliteit voor het roosteren en plannen van het onderwijsprogramma |
Domein: BEDRIJFSONDERSTEUNING
| Code | Naam | Beschrijving |
|---|---|---|
| BED-001 | Vastgoed | Functionaliteit die beheer, bouw en exploitatie van gebouwen ondersteunt |
| BED-002 | Inkoop | Functionaliteit die inkopen van producten en diensten ondersteunt |
| BED-003 | Voorraadbeheer | Beheren/beheersen van de in- en uitgaande goederenstroom |
| BED-004 | Kennismanagement | Functionaliteit die het creëeren en delen van gezamenlijke kennis ondersteunt |
| BED-005 | Datamanagement | Functionaliteit voor ondersteunen van datamanagement (reference, master, metadata, analytics) |
| BED-006 | Voorlichting | Functionaliteit die het geven van voorlichting via verschillende kanalen ondersteunt |
| BED-007 | Hotelservice | Functionaliteit die de hotelfunctie ondersteunt (parkeren, catering, kassa) |
| BED-008 | Klachtenafhandeling | Functionaliteit die de afhandeling van klachten ondersteunt |
| BED-009 | Personeelbeheer | Functionaliteit die het administreren en managen van medewerkers ondersteunt |
| BED-010 | Tijdsregistratie | Functionaliteit waarmee het registreren van de bestede tijd wordt ondersteund |
| BED-011 | Financieel beheer | Functionaliteit waarmee de financiële administratie wordt ondersteund |
| BED-012 | Salarisverwerking | Functionaliteit waarmee het uitbetalen van salarissen wordt ondersteund |
| BED-013 | Beheren medische technologie | Functionaliteit die beheer, onderhoud en gebruik van medische apparatuur ondersteunt |
| BED-014 | Beveiliging | Functionaliteit die ondersteunt bij veiligheid, kwaliteit en milieu taken |
| BED-015 | Relatiebeheer | Functionaliteit ter ondersteuning van relatiebeheer in brede zin |
| BED-016 | ICT-change en servicemanagement | Functies voor het faciliteren van hulpvragen en oplossingen |
Domein: GENERIEKE ICT FUNCTIES - Werkplek en samenwerken
| Code | Naam | Beschrijving |
|---|---|---|
| GEN-WRK-001 | Beheren werkplek | Functionaliteit voor beheren hardware en software op de werkplek |
| GEN-WRK-002 | Printing & scanning | Functionaliteit voor het afdrukken en scannen |
| GEN-WRK-003 | Kantoorautomatisering | Functionaliteit voor standaard kantoorondersteuning |
| GEN-WRK-004 | Unified communications | Functionaliteit voor geïntegreerde communicatie |
| GEN-WRK-005 | Document & Beeld beheer | Functionaliteit voor het beheren van documenten en beelden |
| GEN-WRK-006 | Content management | Functionaliteit voor het verzamelen, managen en publiceren van informatie |
| GEN-WRK-007 | Publieke ICT services | Functionaliteit voor het aanbieden van publieke diensten |
Domein: GENERIEKE ICT FUNCTIES - Identiteit, toegang en beveiliging
| Code | Naam | Beschrijving |
|---|---|---|
| GEN-IAM-001 | Identiteit & Authenticatie | Functionaliteit voor het identificeren en authenticeren van individuen |
| GEN-IAM-002 | Autorisatie management | Functionaliteit voor beheren van rechten en toegang |
| GEN-IAM-003 | Auditing & monitoring | Functionaliteit voor audits en monitoring |
| GEN-IAM-004 | Certificate service | Functionaliteit voor uitgifte en beheer van certificaten |
| GEN-IAM-005 | ICT Preventie en protectie | Functionaliteit voor beheersen van kwetsbaarheden en penetraties |
Domein: GENERIEKE ICT FUNCTIES - Datacenter
| Code | Naam | Beschrijving |
|---|---|---|
| GEN-DC-001 | Hosting servercapaciteit | Functionaliteit voor het leveren van serverinfrastructuur |
| GEN-DC-002 | Datacenter housing | Functionaliteit voor beheren van het datacenter |
| GEN-DC-003 | Hosting data storage | Functionaliteit voor data opslag |
| GEN-DC-004 | Data archiving | Functionaliteit voor het archiveren van gegevens |
| GEN-DC-005 | Backup & recovery | Functionaliteit voor back-up en herstel |
| GEN-DC-006 | Database management | Functionaliteit voor het beheren van databases |
| GEN-DC-007 | Provisioning & automation service | Functionaliteit voor het distribueren en automatiseren van diensten |
| GEN-DC-008 | Monitoring & alerting | Functionaliteit voor het monitoren en analyseren van het datacentrum |
| GEN-DC-009 | Servermanagement | Functionaliteit voor het beheren van servers |
Domein: GENERIEKE ICT FUNCTIES - Connectiviteit
| Code | Naam | Beschrijving |
|---|---|---|
| GEN-CON-001 | Netwerkmanagement | Functionaliteit voor het beheren van het netwerk |
| GEN-CON-002 | Locatiebepaling | Functies voor het traceren en volgen van items |
| GEN-CON-003 | DNS & IP Adress management | Functionaliteit voor het beheren van DNS en IP adressen |
| GEN-CON-004 | Remote Access | Functionaliteit voor toegang op afstand |
| GEN-CON-005 | Load Balancing | Functionaliteit voor beheren van server en netwerkbelasting |
| GEN-CON-006 | Gegevensuitwisseling | Functionaliteit voor de ondersteuning van gegevensuitwisseling (ESB, Message broker) |
AI Classificatie Prompt
const CLASSIFICATION_PROMPT = `Je bent een ervaren informatiemanager in de Nederlandse zorg met diepgaande expertise in de Ziekenhuis Referentie Architectuur (ZiRA). Je taak is om applicatiecomponenten te classificeren naar de juiste ZiRA-applicatiefunctie(s).
## Context
Een applicatiefunctie is volgens de ZiRA: "met elkaar samenhangende functionaliteit (geautomatiseerd gedrag) die wordt geboden door een applicatie(component), die ondersteuning biedt aan één of meerdere bedrijfsactiviteiten."
De classificatie is:
- Productonafhankelijk (focus op FUNCTIONALITEIT, niet op merknaam)
- Gebaseerd op de primaire functie van de applicatie
- Aangevuld met secundaire functies indien de applicatie meerdere domeinen bedient
## ZiRA Applicatiefuncties
{ZIRA_TAXONOMY}
## Te classificeren applicatie
Naam: {applicatie_naam}
Beschrijving: {beschrijving}
Leverancier/Product: {supplier_product}
Organisatie: {organisatie}
Hosting Type: {hosting_type}
Status: {status}
Business Importance: {business_importance}
Systeemeigenaar: {system_owner}
Business Owner: {business_owner}
Medische Techniek: {medische_techniek}
## Classificatie-instructies
1. **Analyseer** de beschikbare informatie:
- Wat doet de applicatie functioneel?
- Welke bedrijfsactiviteiten ondersteunt het?
- In welk zorgdomein wordt het primair gebruikt?
2. **Match** met ZiRA-functies:
- Bepaal de PRIMAIRE functie (hoofddoel van de applicatie)
- Identificeer SECUNDAIRE functies (indien van toepassing)
- Let op: veel EPD-functies vallen onder Consultatie & Behandeling
- Generieke tooling valt vaak onder Bedrijfsondersteuning of Generieke ICT
3. **Beoordeel** de betrouwbaarheid:
- HOOG: Duidelijke beschrijving, bekende applicatie, eenduidige functie
- MIDDEN: Beperkte beschrijving maar herkenbare functie
- LAAG: Onduidelijke beschrijving, generieke naam, meerdere mogelijke functies
## Output (JSON)
{
"primaire_functie": {
"code": "[ZiRA-code]",
"naam": "[ZiRA-naam]",
"onderbouwing": "[korte uitleg waarom deze classificatie past]"
},
"secundaire_functies": [
{
"code": "[ZiRA-code]",
"naam": "[ZiRA-naam]",
"onderbouwing": "[korte uitleg]"
}
],
"confidence": "[HOOG|MIDDEN|LAAG]",
"aandachtspunten": "[eventuele onzekerheden of suggesties voor verificatie]"
}`;
User Interface Specificaties
Gebruikersflow
┌─────────────────────────────────────────────────────────────────────────────┐
│ GEBRUIKERSFLOW │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. ZOEKEN & FILTEREN │
│ ↓ │
│ 2. RESULTATENLIJST (klik op applicatie) │
│ ↓ │
│ 3. DETAIL/WIJZIGINGSSCHERM │
│ • Bekijk alle velden (read-only) │
│ • AI-classificatie aanvragen │
│ • Bewerkbare velden aanpassen │
│ ↓ │
│ 4. OPSLAAN → Automatisch volgende applicatie uit zoekresultaten │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Veldtypes
| Type | Gedrag | Velden |
|---|---|---|
| Read-only | Alleen weergeven | Name, SearchReference, Description, Organisation, Status, Business Importance, Business Impact Analyse, Hosting Type, Supplier Product, Business Owner, System Owner, FAB, TAB, Medische Techniek |
| Bewerkbaar | Weergeven + wijzigen | ApplicationFunction, Dynamics Factor, Complexity Factor, Number of Users, ICT Governance Model |
Schermen
1. Dashboard
- Totaal aantal applicaties
- Aantal geclassificeerd / nog te classificeren (ApplicationFunction)
- Voortgangsbalk per veld (ApplicationFunction, Dynamics, Complexity, Users, Governance)
- Verdeling over ZiRA-domeinen (pie chart)
- Verdeling over Regiemodellen (bar chart)
- Capaciteitsmatrix (Dynamics x Complexity heatmap)
- Recent geclassificeerd (activity feed)
2. Zoeken & Filteren (Hoofdscherm)
┌─────────────────────────────────────────────────────────────────────────────┐
│ Application Components [Dashboard] │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ 🔍 Zoeken... │ │
│ │ Zoek op naam, beschrijving, leverancier, systeemeigenaar... │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────┐│
│ │ FILTERS [Wis alle] ││
│ │ ││
│ │ Status: ApplicationFunction: Governance Model: ││
│ │ ☑ In Production ○ Alle ○ Alle ││
│ │ ☑ Implementation ○ Ingevuld ○ Ingevuld ││
│ │ ☐ Proof of Concept ● Leeg ○ Leeg ││
│ │ ☐ End of support ││
│ │ ☐ End of life Dynamics Factor: Complexity Factor: ││
│ │ ☐ Deprecated ○ Alle ○ Alle ││
│ │ ☐ Shadow IT ○ Ingevuld ○ Ingevuld ││
│ │ ☐ Closed ○ Leeg ○ Leeg ││
│ │ ☐ Undefined ││
│ │ Organisation: Hosting Type: ││
│ │ [Alle ▼] [Alle ▼] ││
│ └─────────────────────────────────────────────────────────────────────────┘│
│ │
│ Resultaten: 127 van 500 applicaties [Sorteer: Naam ▼] │
│ ┌─────────────────────────────────────────────────────────────────────────┐│
│ │ # │ Naam │ Status │ AppFunctie │ Governance │ Dyn│Cmp││
│ ├────┼───────────────────┼─────────────┼────────────┼────────────┼────┼───┤│
│ │ 1 │ Epic Hyperspace │ Production │ ⚠️ Leeg │ Model A │ 3 │ 4 ││
│ │ 2 │ SAP Finance │ Production │ ⚠️ Leeg │ ⚠️ Leeg │ 2 │ 3 ││
│ │ 3 │ Philips PACS │ Production │ ⚠️ Leeg │ Model C │ - │ - ││
│ │ 4 │ ChipSoft HiX │ Production │ ⚠️ Leeg │ Model A │ 4 │ 4 ││
│ │ 5 │ TOPdesk │ Production │ ⚠️ Leeg │ ⚠️ Leeg │ 2 │ 2 ││
│ │ ...│ ... │ ... │ ... │ ... │ ...│...││
│ └─────────────────────────────────────────────────────────────────────────┘│
│ │
│ [◀ Vorige] Pagina 1 van 13 [Volgende ▶] [Bulk AI Classificatie] │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
3. Detail/Wijzigingsscherm (na klik op applicatie)
┌─────────────────────────────────────────────────────────────────────────────┐
│ ← Terug naar lijst Applicatie 3 van 127 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────────┐│
│ │ APPLICATIE INFORMATIE (read-only) ││
│ │ ││
│ │ Naam: Epic Hyperspace ││
│ │ Search Reference: EPIC-HS ││
│ │ Beschrijving: Elektronisch Patiëntendossier module voor ││
│ │ klinische documentatie en workflow ││
│ │ ────────────────────────────────────────────────────────────────────── ││
│ │ Leverancier/Product: Epic Systems / Hyperspace ││
│ │ Organisatie: Zorg ││
│ │ Hosting Type: On-premises ││
│ │ Status: 🟢 In Production ││
│ │ ────────────────────────────────────────────────────────────────────── ││
│ │ Business Importance: Kritiek ││
│ │ Business Impact Analyse: BIA-2024-0042 (Klasse E) ││
│ │ Medische Techniek: Nee ││
│ │ ────────────────────────────────────────────────────────────────────── ││
│ │ Business Owner: Dr. A. van der Berg ││
│ │ System Owner: J. Janssen ││
│ │ Functioneel Beheer: Team EPD ││
│ │ Technisch Beheer: Team Zorgapplicaties ││
│ └─────────────────────────────────────────────────────────────────────────┘│
│ │
│ ┌─────────────────────────────────────────────────────────────────────────┐│
│ │ AI CLASSIFICATIE [🤖 Analyseer] ││
│ │ ││
│ │ ┌─────────────────────────────────────────────────────────────────────┐ ││
│ │ │ Status: ✅ Analyse voltooid Confidence: HOOG │ ││
│ │ │ │ ││
│ │ │ Primaire functie: ZRG-CON-002 - Dossiervoering │ ││
│ │ │ "Epic Hyperspace is primair een EPD-module voor klinische │ ││
│ │ │ documentatie, wat direct past bij de ZiRA-functie Dossiervoering" │ ││
│ │ │ │ ││
│ │ │ Secundaire functies: │ ││
│ │ │ • ZRG-CON-008 - Ordermanagement │ ││
│ │ │ • ZRG-CON-003 - Medicatie │ ││
│ │ │ │ ││
│ │ │ [✓ Accepteer primaire suggestie] │ ││
│ │ └─────────────────────────────────────────────────────────────────────┘ ││
│ └─────────────────────────────────────────────────────────────────────────┘│
│ │
│ ┌─────────────────────────────────────────────────────────────────────────┐│
│ │ BEWERKBARE VELDEN ││
│ │ ││
│ │ ┌─────────────────────────────────┐ ┌───────────────────────────────┐ ││
│ │ │ ZiRA Applicatiefunctie │ │ ICT Governance Model │ ││
│ │ │ │ │ │ ││
│ │ │ Domein: │ │ [Regiemodel A ▼] │ ││
│ │ │ [Zorg - Consultatie & Beh. ▼] │ │ │ ││
│ │ │ │ │ Centraal Beheer │ ││
│ │ │ Functie: │ │ ICMT voert volledig beheer │ ││
│ │ │ [ZRG-CON-002 Dossiervoer. ▼] │ │ uit │ ││
│ │ │ │ │ │ ││
│ │ │ Huidige waarde: ⚠️ Leeg │ │ Huidige waarde: Model A │ ││
│ │ └─────────────────────────────────┘ └───────────────────────────────┘ ││
│ │ ││
│ │ ┌─────────────────────────────────┐ ┌───────────────────────────────┐ ││
│ │ │ Dynamiek Factor │ │ Complexiteit Factor │ ││
│ │ │ │ │ │ ││
│ │ │ [3 - Hoog ▼] │ │ [4 - Zeer hoog ▼] │ ││
│ │ │ │ │ │ ││
│ │ │ Veel wijzigingen, │ │ Platform met meerdere │ ││
│ │ │ > 4 releases/jaar │ │ workloads, uitgebreide │ ││
│ │ │ │ │ governance │ ││
│ │ │ Huidige waarde: 3 - Hoog │ │ Huidige waarde: 4 - Zeer hoog │ ││
│ │ └─────────────────────────────────┘ └───────────────────────────────┘ ││
│ │ ││
│ │ ┌─────────────────────────────────┐ ││
│ │ │ Aantal Gebruikers │ ││
│ │ │ │ ││
│ │ │ [10.000 - 15.000 ▼] │ ││
│ │ │ │ ││
│ │ │ Huidige waarde: ⚠️ Leeg │ ││
│ │ └─────────────────────────────────┘ ││
│ └─────────────────────────────────────────────────────────────────────────┘│
│ │
│ ┌─────────────────────────────────────────────────────────────────────────┐│
│ │ Wijzigingen: • ApplicationFunction: Leeg → ZRG-CON-002 ││
│ │ • Number of Users: Leeg → 10.000 - 15.000 ││
│ └─────────────────────────────────────────────────────────────────────────┘│
│ │
│ [◀ Vorige] [Annuleren] [Opslaan & Volgende ▶] [Opslaan & Sluiten] │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Navigatie-gedrag:
- [Opslaan & Volgende]: Slaat wijzigingen op en opent automatisch de volgende applicatie uit de gefilterde resultatenlijst
- [Opslaan & Sluiten]: Slaat wijzigingen op en keert terug naar de zoekresultaten
- [◀ Vorige]: Gaat naar vorige applicatie (zonder op te slaan, vraagt bevestiging bij wijzigingen)
- [Annuleren]: Keert terug naar zoekresultaten zonder op te slaan
4. Bulk Operaties
- Filter op confidence niveau (bijv. alleen HOOG auto-accepteren)
- Preview van bulk-wijzigingen
- Bevestigingsdialoog
- Rollback mogelijkheid
4. Rapportage
- Export naar Excel
- Classificatie-log met timestamps
- Overzicht per domein
- Niet-geclassificeerde applicaties met redenen
UI Componenten
// Status enum for filtering
type ApplicationStatus =
| 'Status'
| 'Closed'
| 'Deprecated'
| 'End of life'
| 'End of support'
| 'Implementation'
| 'In Production'
| 'Proof of Concept'
| 'Shadow IT'
| 'Undefined';
// Filter state for search screen
interface SearchFilters {
searchText: string;
statuses: ApplicationStatus[];
applicationFunction: 'all' | 'filled' | 'empty';
governanceModel: 'all' | 'filled' | 'empty';
dynamicsFactor: 'all' | 'filled' | 'empty';
complexityFactor: 'all' | 'filled' | 'empty';
organisation: string | null;
hostingType: string | null;
}
// Search results with pagination
interface SearchResult {
applications: ApplicationListItem[];
totalCount: number;
currentPage: number;
pageSize: number;
totalPages: number;
}
// List item (summary view)
interface ApplicationListItem {
id: string;
key: string;
name: string;
status: ApplicationStatus;
applicationFunction: ReferenceValue | null;
governanceModel: ReferenceValue | null;
dynamicsFactor: ReferenceValue | null;
complexityFactor: ReferenceValue | null;
}
// Full application details (for detail screen)
interface ApplicationDetails {
// Identity
id: string;
key: string;
// Read-only fields
name: string;
searchReference: string;
description: string;
supplierProduct: string;
organisation: string;
hostingType: string;
status: ApplicationStatus;
businessImportance: string;
businessImpactAnalyse: string;
systemOwner: string;
businessOwner: string;
functionalApplicationManagement: string;
technicalApplicationManagement: string;
medischeTechniek: boolean;
// Editable reference fields
applicationFunction: ReferenceValue | null;
dynamicsFactor: ReferenceValue | null;
complexityFactor: ReferenceValue | null;
numberOfUsers: ReferenceValue | null;
governanceModel: ReferenceValue | null;
}
// Navigation state for detail screen
interface NavigationState {
currentIndex: number; // Position in filtered results (0-based)
totalInResults: number; // Total applications in current filter
applicationIds: string[]; // Ordered list of IDs from search results
filters: SearchFilters; // Active filters (to restore on "back")
}
interface ReferenceValue {
objectId: string;
key: string;
name: string;
description?: string;
}
interface AISuggestion {
primaryFunction: {
code: string;
name: string;
reasoning: string;
};
secondaryFunctions: Array<{
code: string;
name: string;
reasoning: string;
}>;
confidence: 'HOOG' | 'MIDDEN' | 'LAAG';
notes: string;
}
// Pending changes (shown before save)
interface PendingChanges {
applicationFunction?: { from: ReferenceValue | null; to: ReferenceValue };
dynamicsFactor?: { from: ReferenceValue | null; to: ReferenceValue };
complexityFactor?: { from: ReferenceValue | null; to: ReferenceValue };
numberOfUsers?: { from: ReferenceValue | null; to: ReferenceValue };
governanceModel?: { from: ReferenceValue | null; to: ReferenceValue };
}
interface ClassificationResult {
applicationId: string;
changes: PendingChanges;
source: 'AI_ACCEPTED' | 'AI_MODIFIED' | 'MANUAL';
timestamp: Date;
userId: string;
}
// Reference option lists (loaded from Jira Assets)
interface ReferenceOptions {
dynamicsFactors: ReferenceValue[];
complexityFactors: ReferenceValue[];
numberOfUsers: ReferenceValue[];
governanceModels: ReferenceValue[];
applicationFunctions: ReferenceValue[];
organisations: ReferenceValue[];
hostingTypes: ReferenceValue[];
}
Project Structuur
cmdb-insight/
├── package.json
├── .env.example
├── README.md
├── docker-compose.yml # Voor lokale development
│
├── backend/
│ ├── package.json
│ ├── tsconfig.json
│ ├── src/
│ │ ├── index.ts # Express server entry
│ │ ├── config/
│ │ │ └── env.ts # Environment configuratie
│ │ ├── services/
│ │ │ ├── jiraAssets.ts # Jira Assets API client
│ │ │ ├── claude.ts # Claude API client
│ │ │ └── classification.ts
│ │ ├── routes/
│ │ │ ├── applications.ts
│ │ │ ├── classifications.ts
│ │ │ ├── applicationFunctions.ts
│ │ │ └── referenceData.ts # NEW: Dynamics, Complexity, Users, Governance
│ │ ├── data/
│ │ │ ├── zira-taxonomy.json
│ │ │ └── management-parameters.json # NEW: Fallback reference data
│ │ └── types/
│ │ └── index.ts
│ └── tests/
│
├── frontend/
│ ├── package.json
│ ├── vite.config.ts
│ ├── tailwind.config.js
│ ├── src/
│ │ ├── main.tsx
│ │ ├── App.tsx
│ │ ├── components/
│ │ │ ├── Dashboard.tsx
│ │ │ ├── SearchFilterBar.tsx # NEW: Zoekbalk en filters
│ │ │ ├── ApplicationList.tsx # NEW: Resultatenlijst
│ │ │ ├── ApplicationListItem.tsx # NEW: Regel in resultatenlijst
│ │ │ ├── ApplicationDetail.tsx # Detail/wijzigingsscherm
│ │ │ ├── ReadOnlyFields.tsx # NEW: Read-only velden sectie
│ │ │ ├── AIClassification.tsx # AI suggestie sectie
│ │ │ ├── EditableFields.tsx # NEW: Bewerkbare velden sectie
│ │ │ ├── FunctionSelector.tsx # ZiRA functie dropdown
│ │ │ ├── ManagementParameters.tsx # Dynamics, Complexity, Users
│ │ │ ├── GovernanceSelector.tsx # Regiemodel selector
│ │ │ ├── PendingChanges.tsx # NEW: Wijzigingen preview
│ │ │ ├── NavigationBar.tsx # NEW: Vorige/Volgende navigatie
│ │ │ ├── CapacityMatrix.tsx # Visualisatie matrix
│ │ │ └── BulkOperations.tsx
│ │ ├── hooks/
│ │ │ ├── useApplications.ts
│ │ │ ├── useClassification.ts
│ │ │ ├── useReferenceData.ts # Hook voor reference data
│ │ │ ├── useSearch.ts # NEW: Zoeken en filteren
│ │ │ └── useNavigation.ts # NEW: Detail navigatie state
│ │ ├── services/
│ │ │ └── api.ts
│ │ ├── stores/ # NEW: State management
│ │ │ ├── searchStore.ts # Filter/zoek state
│ │ │ └── navigationStore.ts # Navigatie state
│ │ └── types/
│ │ └── index.ts
│ └── public/
│
└── data/
├── zira-taxonomy.json # ZiRA functies als JSON
└── management-parameters.json # Beheerparameters als JSON
Environment Variables
# .env.example
# Jira Assets
JIRA_HOST=https://jira.zuyderland.nl
JIRA_PAT=your_personal_access_token_here
JIRA_SCHEMA_ID=your_schema_id
# Object Type IDs (ophalen via API)
JIRA_APPLICATION_COMPONENT_TYPE_ID=your_type_id
JIRA_APPLICATION_FUNCTION_TYPE_ID=your_function_type_id
JIRA_DYNAMICS_FACTOR_TYPE_ID=your_dynamics_factor_type_id
JIRA_COMPLEXITY_FACTOR_TYPE_ID=your_complexity_factor_type_id
JIRA_NUMBER_OF_USERS_TYPE_ID=your_number_of_users_type_id
JIRA_GOVERNANCE_MODEL_TYPE_ID=your_governance_model_type_id
# Attribute IDs (ophalen via API - nodig voor updates)
JIRA_ATTR_APPLICATION_FUNCTION=attribute_id
JIRA_ATTR_DYNAMICS_FACTOR=attribute_id
JIRA_ATTR_COMPLEXITY_FACTOR=attribute_id
JIRA_ATTR_NUMBER_OF_USERS=attribute_id
JIRA_ATTR_GOVERNANCE_MODEL=attribute_id
# Claude API
ANTHROPIC_API_KEY=your_anthropic_api_key_here
# Application
PORT=3001
NODE_ENV=development
Implementatiestappen
Fase 1: Setup (dag 1)
- Project initialiseren met Vite + Express
- TypeScript configuratie
- Jira Assets API connectie testen
- Environment setup
Fase 2: Backend (dag 2-3)
- Jira Assets service implementeren
- Claude API integratie
- REST endpoints
- Error handling & logging
Fase 3: Frontend (dag 4-5)
- Dashboard component
- Classificatie werkscherm
- Function selector met search
- State management
Fase 4: Integratie (dag 6)
- End-to-end flow testen
- Bulk operaties
- Rapportage export
- Performance optimalisatie
Fase 5: Testing & Deployment (dag 7)
- Unit tests
- Integration tests
- Documentatie
- Deployment instructies
Aandachtspunten voor Claude Code
-
Start met Jira Assets API testen - Verifieer eerst dat de connectie werkt en je de juiste schema/objecttype ID's hebt
-
ApplicationFunction objecten ophalen - Deze moeten al bestaan in Jira Assets. Check of ze overeenkomen met de ZiRA-taxonomie
-
Beveiliging - PAT tokens nooit committen, altijd via .env
-
Rate limiting - Jira Assets kan rate limits hebben, implementeer exponential backoff
-
Validatie - Valideer dat de ApplicationFunction die geselecteerd wordt daadwerkelijk bestaat voordat je update
-
Logging - Uitgebreide logging voor troubleshooting en audit trail
Contactgegevens
- Project eigenaar: Bert Hausmans
- Afdeling: ICMT - Zorg en Ondersteunende Applicaties
- Organisatie: Zuyderland Medisch Centrum