- Remove JIRA_SCHEMA_ID from all documentation, config files, and scripts - Update generate-schema.ts to always auto-discover schemas dynamically - Runtime application already discovers schemas via /objectschema/list API - Build script now automatically selects schema with most objects - Remove JIRA_SCHEMA_ID from docker-compose.yml, Azure setup scripts, and all docs - Application is now fully schema-agnostic and discovers schemas automatically
1036 lines
53 KiB
Markdown
1036 lines
53 KiB
Markdown
# 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
|
|
1. Ophalen van applicatiecomponenten uit Jira Assets zonder ApplicationFunction
|
|
2. AI-gestuurde classificatiesuggestie op basis van beschikbare metadata
|
|
3. Handmatige validatie/correctie door beheerder
|
|
4. Terugschrijven van classificatie naar Jira Assets
|
|
5. 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).
|
|
|
|
```typescript
|
|
// 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
|
|
```bash
|
|
GET /rest/assets/1.0/objectschema/list
|
|
```
|
|
|
|
#### 2. ObjectType ID vinden
|
|
```bash
|
|
GET /rest/assets/1.0/objectschema/{schemaId}/objecttypes
|
|
```
|
|
|
|
#### 3. Applicaties ophalen (met filters)
|
|
```bash
|
|
# 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
|
|
}
|
|
```
|
|
|
|
```bash
|
|
# 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
|
|
}
|
|
```
|
|
|
|
```bash
|
|
# 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)
|
|
```bash
|
|
POST /rest/assets/1.0/aql/objects
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"qlQuery": "objectType = \"ApplicationFunction\"",
|
|
"resultPerPage": 200,
|
|
"includeAttributes": true
|
|
}
|
|
```
|
|
|
|
#### 5. Dynamics Factor objecten ophalen
|
|
```bash
|
|
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
|
|
```bash
|
|
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
|
|
```bash
|
|
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
|
|
```bash
|
|
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
|
|
```bash
|
|
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
|
|
```bash
|
|
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
|
|
|
|
```typescript
|
|
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
|
|
|
|
```typescript
|
|
// 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
|
|
# .env.example
|
|
|
|
# Jira Assets
|
|
JIRA_HOST=https://jira.zuyderland.nl
|
|
JIRA_PAT=your_personal_access_token_here
|
|
|
|
# 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)
|
|
1. Project initialiseren met Vite + Express
|
|
2. TypeScript configuratie
|
|
3. Jira Assets API connectie testen
|
|
4. Environment setup
|
|
|
|
### Fase 2: Backend (dag 2-3)
|
|
1. Jira Assets service implementeren
|
|
2. Claude API integratie
|
|
3. REST endpoints
|
|
4. Error handling & logging
|
|
|
|
### Fase 3: Frontend (dag 4-5)
|
|
1. Dashboard component
|
|
2. Classificatie werkscherm
|
|
3. Function selector met search
|
|
4. State management
|
|
|
|
### Fase 4: Integratie (dag 6)
|
|
1. End-to-end flow testen
|
|
2. Bulk operaties
|
|
3. Rapportage export
|
|
4. Performance optimalisatie
|
|
|
|
### Fase 5: Testing & Deployment (dag 7)
|
|
1. Unit tests
|
|
2. Integration tests
|
|
3. Documentatie
|
|
4. Deployment instructies
|
|
|
|
---
|
|
|
|
## Aandachtspunten voor Claude Code
|
|
|
|
1. **Start met Jira Assets API testen** - Verifieer eerst dat de connectie werkt en je de juiste schema/objecttype ID's hebt
|
|
|
|
2. **ApplicationFunction objecten ophalen** - Deze moeten al bestaan in Jira Assets. Check of ze overeenkomen met de ZiRA-taxonomie
|
|
|
|
3. **Beveiliging** - PAT tokens nooit committen, altijd via .env
|
|
|
|
4. **Rate limiting** - Jira Assets kan rate limits hebben, implementeer exponential backoff
|
|
|
|
5. **Validatie** - Valideer dat de ApplicationFunction die geselecteerd wordt daadwerkelijk bestaat voordat je update
|
|
|
|
6. **Logging** - Uitgebreide logging voor troubleshooting en audit trail
|
|
|
|
---
|
|
|
|
## Contactgegevens
|
|
|
|
- **Project eigenaar:** Bert Hausmans
|
|
- **Afdeling:** ICMT - Zorg en Ondersteunende Applicaties
|
|
- **Organisatie:** Zuyderland Medisch Centrum
|