Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling
Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling
- Publicatiedatum:
- 08-09-2026
- Inwerkingtreding:
- 09-09-2026
18.1 Wat is de balans o.b.v. Grootboek?
Concepten
Relaties
Eigenschappen
SPARQL query
Code gekopieerd
...Kopieer naar klembord
1# Indicator: Zorgkantoren-inkoop 18.1 2# Canonical id: MONO-0001- "Wat is de balans o.b.v. Grootboek?" 3# Parameters: ?peildatum 4# Ontologie: versie 3.0.0 of nieuwer 5 6PREFIX onz-fin: <http://purl.org/ozo/onz-fin#> 7prefix onz-zorg: <http://purl.org/ozo/onz-zorg#> 8PREFIX onz-g: <http://purl.org/ozo/onz-g#> 9PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 10 11SELECT 12(?jaarrekeningpost AS ?Jaarrekeningpost) 13(IF(SUM(?heeftData)>0, SUM(?bedrag_rubriek), "Niet beschikbaar") AS ?Bedrag) 14WHERE { 15 { # Subquery 1: Jaarrekeningposten met bedragen 16 { # Middle select: Bereken het totaal per rubriek (saldo + latere mutaties) 17 SELECT 18 ?rubriek ?jaarrekeningpost_child 19 (SUM(?geld_bedrag_post) + SUM(?saldo_waarde)/COUNT(?saldo_waarde) AS ?bedrag_rubriek) 20 (IF(COUNT(?heeftBeginsaldo)+COUNT(?heeftGrootboekPost)=0, 0, 1) AS ?heeftData) 21 22 WHERE { 23 { # Innermost select: 24 # - Haal het meest recente saldo per rubriek op als beginsaldo, 0 indien geen saldo in data 25 # - Haal de bijbehorende datum op om alle posten na beginsaldo bij toe te voegen 26 SELECT 27 ?rubriek ?jaarrekeningpost_child 28 (IF(BOUND(?saldo_bedrag), ?saldo_bedrag, 0) AS ?saldo_waarde) 29 ?peildatum_argument 30 (IF(BOUND(?saldo_datum), ?saldo_datum, ?unbound) AS ?begin_datum) 31 ?saldo_datum ?saldo ?heeftBeginsaldo 32 33 WHERE { 34 #BIND("2024-12-31"^^xsd:date AS ?peildatum) 35 BIND(?peildatum as ?peildatum_argument) 36 37 # Bind jaarrekeningpost_child(jaarrekening subpost)op basis van rubriekCode 38 { 39 40 # >>> START BB: BB-010_rubriek_rubriekcode.rq 41 VALUES ?rubriekType { onz-fin:Grootboekrubriek onz-fin:Grootboekrekening } 42 ?rubriek a ?rubriekType . 43 BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode) 44 # <<< END BB: BB-010_rubriek_rubriekcode.rq 45 46 # >>> START BB: BB-003_grootboekmapping_Prismant_zorg.rq 47 # Prismant: prefix-mapping, want Prismant consolideert niet dus we willen onderliggende rubrieken 48 # Deze code gaat ervan uit dat alle prismant codes die met cijfers beginnen en 6 cijfers hebben 49 # Er bestaan ook codes die eruit zien als onz-fin:rubriek05 50 # deze nemen we bewust niet mee (want dat zijn verzamelniveaus) 51 VALUES (?prismantPrefix ?jaarrekeningpost_child) { 52 ("00" "A.I") 53 ("01" "A.II") 54 ("03" "A.III") 55 ("3" "B.I") 56 ("12" "B.II") 57 ("131" "B.III") 58 ("132" "B.IV") 59 ("0511" "D.I") 60 ("05413" "D.IV") 61 ("05311" "D.V") 62 ("05342" "D.V") 63 ("05423" "D.V") 64 ("05323" "D.VI") 65 ("0539" "D.VII") 66 ("05493" "D.VII") 67 ("05915" "D.VII") 68 ("091" "D.VIII") 69 ("06" "E") 70 ("07" "F") 71 ("14" "G") 72 ("15" "G") 73 } 74 # <<< END BB: BB-003_grootboekmapping_Prismant_zorg.rq 75 76 FILTER(STRSTARTS(?rubriekCode, ?prismantPrefix)) 77 } 78 UNION 79 { 80 81 # >>> START BB: BB-010_rubriek_rubriekcode.rq 82 VALUES ?rubriekType { onz-fin:Grootboekrubriek onz-fin:Grootboekrekening } 83 ?rubriek a ?rubriekType . 84 BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode) 85 # <<< END BB: BB-010_rubriek_rubriekcode.rq 86 87 # >>> START BB: BB-004_grootboekmapping_RGS_zorg_3_8.rq 88 # RGS: exacte mapping, want RGS consolideert zelf onderliggende rubrieken 89 # Dit houdt in dat rubrieken naast de directe boekingen ook de totaaltelling 90 # van alle boekingen op alle onderliggende rubrieken bevatten (algemene uitgangspunten)BELANGRIJK 91 # We willen dus niet dubbel tellen en vandaar exacte match 92 VALUES (?rubriekCodeRGS ?jaarrekeningpost_child) { 93 ("BIva" "A.I") 94 ("BMva" "A.II") 95 ("BFva" "A.III") 96 ("BVrd" "B.I") 97 ("BVor" "B.II") 98 ("BVfi" "B.II") 99 ("BEff" "B.III") 100 ("BLim" "B.IV") 101 ("BEivGok" "D.I") 102 ("BEivAgi" "D.II") 103 ("BEivHer" "D.III") 104 ("BEivWer" "D.IV") 105 ("BEivStr" "D.IV") 106 ("BEivBer" "D.V") 107 ("BEivBef" "D.VI") 108 ("BEivOvr" "D.VII") 109 ("BEivOre" "D.VIII") 110 ("BVrz" "E") 111 ("BLas" "F") 112 ("BSch" "G") 113 } 114 # <<< END BB: BB-004_grootboekmapping_RGS_zorg_3_8.rq 115 116 FILTER(?rubriekCode = ?rubriekCodeRGS) 117 } 118 119 OPTIONAL { 120 ?rubriek onz-g:isAbout ?saldo . 121 ?saldo 122 a onz-fin:EindSaldo ; 123 onz-fin:heeftGeldBedrag ?saldo_bedrag ; 124 onz-g:hasDate ?saldo_datum . 125 126 FILTER (?saldo_datum <= ?peildatum_argument) 127 128 FILTER NOT EXISTS { 129 ?rubriek onz-g:isAbout ?saldo2 . 130 ?saldo2 131 a onz-fin:EindSaldo ; 132 onz-g:hasDate ?saldo_datum2 . 133 134 FILTER(?saldo2 != ?saldo) 135 FILTER (?saldo_datum2 <= ?peildatum_argument) 136 FILTER ( 137 ?saldo_datum2 > ?saldo_datum 138 || ( 139 ?saldo_datum2 = ?saldo_datum 140 && STR(?saldo2) > STR(?saldo) 141 ) 142 ) 143 } 144 } 145 # Bind alleen als er een saldo in de data aanwezig was 146 BIND(IF(BOUND(?saldo_bedrag), 1, ?unbound) AS ?heeftBeginsaldo) 147 148 } 149 } # End of innermost query: Alle aanwezige beginsaldos zijn gevonden 150 151 # Selecteer de bijbehorende grootboekpost bij de rubriek 152 OPTIONAL { 153 ?grootboek_post 154 a onz-fin:Grootboekpost ; 155 onz-g:partOf ?rubriek ; 156 onz-g:hasDate ?datum ; 157 onz-fin:heeftGeldBedrag ?geld_bedrag_temp . 158 # Behoud de grootboek post alleen voor de meest specifieke rubriek, 159 # om dubbeltelling bij meerdere rubrieken te voorkomen 160 FILTER NOT EXISTS { 161 ?grootboek_post onz-g:partOf ?specifiekereRubriek . 162 ?specifiekereRubriek onz-g:partOf+ ?rubriek . 163 } 164 FILTER (?datum <= ?peildatum_argument && (?datum > ?begin_datum || !BOUND(?begin_datum))) 165 BIND (1 AS ?heeftGrootboekPost) 166 } 167 BIND(IF(BOUND(?geld_bedrag_temp), ?geld_bedrag_temp, 0) AS ?geld_bedrag_post) 168 169 } GROUP BY ?rubriek ?jaarrekeningpost_child 170 } # End of middle query: Alle beginsaldos + transacties daarna zijn gevonden (eindtotaal bekend) 171 172 # De rest van subquery 1 breidt de jaarrekeningposten uit met hun bijbehorende totaal posten 173 VALUES (?jaarrekeningpost_child ?jaarrekeningpost_child_uitgebreid) { 174 ("A.I" "A.I Immateriële vaste activa") 175 ("A.II" "A.II Materiële vaste activa") 176 ("A.III" "A.III Financiële vaste activa") 177 ("B.I" "B.I Voorraden") 178 ("B.II" "B.II Vorderingen") 179 ("B.III" "B.III Effecten") 180 ("B.IV" "B.IV Liquide middelen") 181 ("D.I" "D.I Gestort en opgevraagd kapitaal") 182 ("D.II" "D.II Agio") # 183 ("D.III" "D.III Herwaarderingsreserve") # 184 ("D.IV" "D.IV Wettelijke en statutaire reserve") 185 ("D.V" "D.V Bestemmingsreserve") 186 ("D.VI" "D.VI Bestemmingsfonds") 187 ("D.VII" "D.VII Overige reserves") 188 ("D.VIII" "D.VIII Onverdeelde winst") 189 ("E" "E Voorzieningen") 190 ("F" "F Langlopende schulden (nog voor meer dan een jaar)") 191 ("G" "G Kortlopende schulden (ten hoogste 1 jaar)") 192 } 193 194 BIND( 195 IF(STRSTARTS(?jaarrekeningpost_child, "A."), "A Vaste activa", 196 IF(STRSTARTS(?jaarrekeningpost_child, "B."), "B Vlottende activa", 197 IF(STRSTARTS(?jaarrekeningpost_child, "D."), "D Eigen vermogen", 198 ?unbound))) AS ?jaarrekeningpost_parent # Fallback naar ?unbound om dubbeltelling te voorkomen 199 ) 200 201 BIND( 202 IF(STRSTARTS(?jaarrekeningpost_child, "A.") || STRSTARTS(?jaarrekeningpost_child, "B."), "C Totaal activa", 203 IF(STRSTARTS(?jaarrekeningpost_child, "D.") || ?jaarrekeningpost_child = "E" || ?jaarrekeningpost_child = "F" || ?jaarrekeningpost_child = "G", "H Totaal passiva", 204 ?unbound)) AS ?jaarrekeningpost_grandparent 205 ) 206 207 VALUES ?x {1 2 3} 208 BIND( 209 IF(?x = 1, ?jaarrekeningpost_child_uitgebreid, 210 IF(?x = 2, ?jaarrekeningpost_parent, 211 IF(?x = 3, ?jaarrekeningpost_grandparent, 212 ?unbound))) AS ?jaarrekeningpost 213 ) 214 FILTER(BOUND(?jaarrekeningpost)) 215 } # End of subquery 1: Alle totalen voor de aanwezige jaarrekeningposten zijn bepaald (inclusief de overkoepelende jaarrekeningposten) 216 UNION 217 { # Subquery 2: Initieer alle jaarrekeningposten met bedrag=0 218 219 VALUES ?jaarrekeningpost { 220 "A.I Immateriële vaste activa" 221 "A.II Materiële vaste activa" 222 "A.III Financiële vaste activa" 223 "A Vaste activa" 224 "B.I Voorraden" 225 "B.II Vorderingen" 226 "B.III Effecten" 227 "B.IV Liquide middelen" 228 "B Vlottende activa" 229 "C Totaal activa" 230 "D.I Gestort en opgevraagd kapitaal" 231 "D.II Agio" 232 "D.III Herwaarderingsreserve" 233 "D.IV Wettelijke en statutaire reserve" 234 "D.V Bestemmingsreserve" 235 "D.VI Bestemmingsfonds" 236 "D.VII Overige reserves" 237 "D.VIII Onverdeelde winst" 238 "D Eigen vermogen" 239 "E Voorzieningen" 240 "F Langlopende schulden (nog voor meer dan een jaar)" 241 "G Kortlopende schulden (ten hoogste 1 jaar)" 242 "H Totaal passiva" 243 } 244 245 BIND(0 AS ?bedrag_rubriek) 246 BIND(0 AS ?heeftData) # Tijdens initieren is het nog onduidelijk of er data voor de rubriek aanwezig is 247 } 248 249} GROUP BY ?jaarrekeningpost 250ORDER BY ?jaarrekeningpost 251