Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling
Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling
- Publicatiedatum:
- 15-07-2026
- Inwerkingtreding:
- 16-07-2026
21.2 Rentabiliteit - wat is de REV (Resultaat Eigen Vermogen)?
Concepten
Relaties
Eigenschappen
SPARQL query
Code gekopieerd
...Kopieer naar klembord
1# Indicator: Zorgkantoren 21.2 2# Parameters: ?peildatum 3# Ontologie: versie 3.0.0 of nieuwer 4 5PREFIX onz-fin: <http://purl.org/ozo/onz-fin#> 6PREFIX onz-g: <http://purl.org/ozo/onz-g#> 7PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 8 9SELECT 10 ("Winstratio" AS ?Kental) 11 ( 12 IF(?eigenvermogen = 0, 13 "Ongedefinieerd"^^xsd:string, 14 ROUND((?s_resultaat / ?eigenvermogen) * 100) / 100 ) AS ?Waarde 15 ) 16WHERE { 17 { 18 # Bereken alle benodigde totalen in één scan 19 SELECT 20 (SUM(?p_bedrag) AS ?p_opbrengsten) # P totaal 21 (SUM(?q_bedrag) AS ?q_totaal) # Q totaal 22 (SUM(?r_i_bedrag) AS ?r_i_totaal) 23 (SUM(?r_ii_bedrag) AS ?r_ii_totaal) 24 (SUM(?r_iii_bedrag) AS ?r_iii_totaal) 25 (SUM(?r_iv_plus_bedrag) AS ?r_iv_plus_totaal) 26 (SUM(?r_iv_min_bedrag) AS ?r_iv_min_totaal) 27 (SUM(?s_i_bedrag) AS ?s_i_totaal) 28 (SUM(?s_ii_bedrag) AS ?s_ii_totaal) 29 (SUM(?d_bedrag) AS ?d_totaal) 30 WHERE { 31 # BIND("2024-12-31"^^xsd:date AS ?peildatum) 32 33 # Deze binds zijn geen test-parameterbinds, dus niet uitcommenten: 34 BIND( 35 IF( 36 MONTH(?peildatum) = 12 && DAY(?peildatum) = 31, 37 xsd:date(CONCAT(STR(YEAR(?peildatum)), "-01-01")), 38 xsd:date(CONCAT(STR(YEAR(?peildatum)-1), "-07-01")) 39 ) 40 AS ?startperiode 41 ) 42 BIND(?peildatum AS ?eindperiode) 43 44 ?grootboek_post a onz-fin:Grootboekpost ; 45 onz-g:partOf ?rubriek ; 46 onz-g:hasDate ?datum ; 47 onz-fin:heeftGeldBedrag ?geld_bedrag . 48 49 # Match directe ouder: Grootboekrekening (RGS) of Grootboekrubriek (Prismant) 50 { 51 { ?rubriek a onz-fin:Grootboekrekening } 52 UNION 53 { ?rubriek a onz-fin:Grootboekrubriek } 54 } 55 # Anti-dubbeltelling: houd alleen het bladniveau (geen transitive ancestors) 56 FILTER NOT EXISTS { 57 ?grootboek_post onz-g:partOf ?child . 58 ?child onz-g:partOf ?rubriek . 59 FILTER(?child != ?rubriek) 60 { { ?child a onz-fin:Grootboekrekening } UNION { ?child a onz-fin:Grootboekrubriek } } 61 } 62 FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:))) 63 BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode) 64 65 FILTER (?datum >= ?startperiode && ?datum <= ?eindperiode) 66 67 # --- P: Bedragen voor eindtotaalberekening --- 68 # Prismant: P.I=81, P.IV=82/83/89/919/920/930 69 # RGS: P.I=WOmz/WRev/WRvi/WRgr/WWvv/WNoa/WLbe/WBat, P.II/III=WWiv, P.IV=WOvb 70 BIND( 71 IF( 72 STRSTARTS(?rubriekCode, "81") || 73 STRSTARTS(?rubriekCode, "82") || 74 STRSTARTS(?rubriekCode, "83") || 75 STRSTARTS(?rubriekCode, "89") || 76 STRSTARTS(?rubriekCode, "919") || 77 STRSTARTS(?rubriekCode, "920") || 78 STRSTARTS(?rubriekCode, "930") || 79 STRSTARTS(?rubriekCode, "WOmz") || 80 STRSTARTS(?rubriekCode, "WRev") || 81 STRSTARTS(?rubriekCode, "WRvi") || 82 STRSTARTS(?rubriekCode, "WRgr") || 83 STRSTARTS(?rubriekCode, "WWvv") || 84 STRSTARTS(?rubriekCode, "WNoa") || 85 STRSTARTS(?rubriekCode, "WLbe") || 86 STRSTARTS(?rubriekCode, "WBat") || 87 STRSTARTS(?rubriekCode, "WWiv") || 88 STRSTARTS(?rubriekCode, "WOvb"), 89 ?geld_bedrag, 0) AS ?p_bedrag 90 ) 91 # --- Q: Diverse kostenrubrieken --- 92 # Prismant: 417/418/411-419/420/4221/4223-4225/4229/4226/480-484/423/43-47/486/489/905/911-915/921/931 93 # RGS: WKpr/WPer/WAfs/WWvi/WBwv/WBed/WOok/WKol/WVkf/WAkf 94 BIND( 95 IF( 96 STRSTARTS(?rubriekCode, "417") || 97 STRSTARTS(?rubriekCode, "418") || 98 STRSTARTS(?rubriekCode, "411") || 99 STRSTARTS(?rubriekCode, "412") || 100 STRSTARTS(?rubriekCode, "413") || 101 STRSTARTS(?rubriekCode, "414") || 102 STRSTARTS(?rubriekCode, "415") || 103 STRSTARTS(?rubriekCode, "416") || 104 STRSTARTS(?rubriekCode, "419") || 105 STRSTARTS(?rubriekCode, "420") || 106 STRSTARTS(?rubriekCode, "4221") || 107 STRSTARTS(?rubriekCode, "4223") || 108 STRSTARTS(?rubriekCode, "4224") || 109 STRSTARTS(?rubriekCode, "4225") || 110 STRSTARTS(?rubriekCode, "4229") || 111 STRSTARTS(?rubriekCode, "4226") || 112 STRSTARTS(?rubriekCode, "480") || 113 STRSTARTS(?rubriekCode, "481") || 114 STRSTARTS(?rubriekCode, "482") || 115 STRSTARTS(?rubriekCode, "483") || 116 STRSTARTS(?rubriekCode, "484") || 117 STRSTARTS(?rubriekCode, "423") || 118 STRSTARTS(?rubriekCode, "43") || 119 STRSTARTS(?rubriekCode, "44") || 120 STRSTARTS(?rubriekCode, "45") || 121 STRSTARTS(?rubriekCode, "46") || 122 STRSTARTS(?rubriekCode, "47") || 123 STRSTARTS(?rubriekCode, "486") || 124 STRSTARTS(?rubriekCode, "489") || 125 STRSTARTS(?rubriekCode, "905") || 126 STRSTARTS(?rubriekCode, "911") || 127 STRSTARTS(?rubriekCode, "912") || 128 STRSTARTS(?rubriekCode, "913") || 129 STRSTARTS(?rubriekCode, "914") || 130 STRSTARTS(?rubriekCode, "915") || 131 STRSTARTS(?rubriekCode, "921") || 132 STRSTARTS(?rubriekCode, "931") || 133 134 STRSTARTS(?rubriekCode, "WKpr") || 135 STRSTARTS(?rubriekCode, "WPer") || 136 STRSTARTS(?rubriekCode, "WAfs") || 137 STRSTARTS(?rubriekCode, "WWvi") || 138 STRSTARTS(?rubriekCode, "WBwv") || 139 STRSTARTS(?rubriekCode, "WBed") || 140 STRSTARTS(?rubriekCode, "WOok") || 141 STRSTARTS(?rubriekCode, "WKol") || 142 STRSTARTS(?rubriekCode, "WVkf") || 143 STRSTARTS(?rubriekCode, "WAkf"), 144 ?geld_bedrag, 0) AS ?q_bedrag 145 ) 146 # R.I: Prismant=904, RGS=WOvt 147 BIND(IF(STRSTARTS(?rubriekCode, "904") || STRSTARTS(?rubriekCode, "WOvt"), ?geld_bedrag, 0) AS ?r_i_bedrag) 148 # R.II: Prismant=900, RGS=WFbeRlm 149 BIND(IF(STRSTARTS(?rubriekCode, "900") || STRSTARTS(?rubriekCode, "WFbeRlm"), ?geld_bedrag, 0) AS ?r_ii_bedrag) 150 # R.III: Prismant=903, RGS=WWfa/WVhe 151 BIND(IF(STRSTARTS(?rubriekCode, "903") || STRSTARTS(?rubriekCode, "WWfa") || STRSTARTS(?rubriekCode, "WVhe"), ?geld_bedrag, 0) AS ?r_iii_bedrag) 152 # R.IV: Prismant=485/901, RGS=WFbe-WFbeRlm 153 BIND(IF(STRSTARTS(?rubriekCode, "485") || STRSTARTS(?rubriekCode, "901") || STRSTARTS(?rubriekCode, "WFbe"), ?geld_bedrag, 0) AS ?r_iv_plus_bedrag) 154 BIND(IF(STRSTARTS(?rubriekCode, "WFbeRlm"), ?geld_bedrag, 0) AS ?r_iv_min_bedrag) 155 # S.I: Prismant=n.v.t., RGS=WBel 156 BIND(IF(STRSTARTS(?rubriekCode, "WBel"), ?geld_bedrag, 0) AS ?s_i_bedrag) 157 # S.II: Prismant=902, RGS=WRed/WAad 158 BIND(IF(STRSTARTS(?rubriekCode, "902") || STRSTARTS(?rubriekCode, "WRed") || STRSTARTS(?rubriekCode, "WAad"), ?geld_bedrag, 0) AS ?s_ii_bedrag) 159 } 160 } 161 162 # Berekening S Resultaat na belastingen 163 BIND(?p_opbrengsten + ?q_totaal + ?r_i_totaal + ?r_ii_totaal + ?r_iii_totaal + (?r_iv_plus_totaal - ?r_iv_min_totaal) + ?s_i_totaal + ?s_ii_totaal AS ?s_resultaat) 164 165 # DEEL 2: D Eigen vermogen (balans op peildatum, uit 18.1) 166 { 167 SELECT 168 (SUM(IF(?jaarrekeningpost = "D Eigen vermogen", ?bedrag, 0)) AS ?eigenvermogen) 169 WHERE { 170 { 171 SELECT ?jaarrekeningpost (SUM(?bedrag_rubriek) AS ?bedrag) 172 WHERE { 173 { 174 # Middle select: totaal per rubriek (saldo + latere mutaties) 175 SELECT ?rubriek ?categorie (SUM(?geld_bedrag_post) + SUM(?saldo_waarde) / COUNT(?saldo_waarde) AS ?bedrag_rubriek) 176 WHERE { 177 { 178 # Innerste subquery: meest recente saldo per rubriek 179 SELECT ?rubriek ?categorie 180 (IF(BOUND(?saldo_bedrag), ?saldo_bedrag, 0) AS ?saldo_waarde) 181 ?peildatum_argument 182 (IF(BOUND(?saldo_datum), ?saldo_datum, ?unbound) AS ?begin_datum) 183 WHERE { 184 # BIND("2024-12-31"^^xsd:date AS ?peildatum) 185 BIND(?peildatum AS ?peildatum_argument) 186 187 # Prismant: prefix-mapping op 6-cijferige Grootboekrubrieken 188 { 189 { ?rubriek a onz-fin:Grootboekrubriek } 190 UNION 191 { ?rubriek a onz-fin:Grootboekrekening } 192 BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode) 193 VALUES (?prismantPrefix ?categorie) { 194 ("0511" "D.I") 195 ("05413" "D.IV") 196 ("05311" "D.V") 197 ("05342" "D.V") 198 ("05423" "D.V") 199 ("05323" "D.VI") 200 ("0539" "D.VII") 201 ("05493" "D.VII") 202 ("05915" "D.VII") 203 ("091" "D.VIII") 204 } 205 FILTER(STRSTARTS(?rubriekCode, ?prismantPrefix)) 206 } 207 UNION 208 { 209 # RGS: exacte mapping 210 VALUES (?rubriekCode ?categorie) { 211 ("BEivGok" "D.I") 212 ("BEivAgi" "D.II") 213 ("BEivHer" "D.III") 214 ("BEivWer" "D.IV") 215 ("BEivStr" "D.IV") 216 ("BEivBer" "D.V") 217 ("BEivBef" "D.VI") 218 ("BEivOvr" "D.VII") 219 ("BEivOre" "D.VIII") 220 } 221 BIND(IRI(CONCAT(STR(onz-fin:), ?rubriekCode)) AS ?rubriek) 222 { ?rubriek a onz-fin:Grootboekrubriek } 223 UNION 224 { ?rubriek a onz-fin:Grootboekrekening } 225 } 226 227 # Meest recente eindsaldo per rubriek (tiebreaker binnen OPTIONAL) 228 OPTIONAL { 229 ?rubriek onz-g:isAbout ?saldo . 230 ?saldo a onz-fin:EindSaldo ; 231 onz-fin:heeftGeldBedrag ?saldo_bedrag ; 232 onz-g:hasDate ?saldo_datum . 233 FILTER(?saldo_datum <= ?peildatum_argument) 234 FILTER NOT EXISTS { 235 ?rubriek onz-g:isAbout ?otherSaldo . 236 ?otherSaldo a onz-fin:EindSaldo ; 237 onz-g:hasDate ?otherDatum . 238 FILTER( 239 ?otherSaldo != ?saldo 240 && ?otherDatum <= ?peildatum_argument 241 && ( 242 ?otherDatum > ?saldo_datum 243 || (?otherDatum = ?saldo_datum && STR(?otherSaldo) > STR(?saldo)) 244 ) 245 ) 246 } 247 } 248 } 249 } 250 251 # Grootboekposten na saldo 252 OPTIONAL { 253 ?grootboek_post a onz-fin:Grootboekpost ; 254 onz-g:partOf ?rubriek ; 255 onz-g:hasDate ?datum ; 256 onz-fin:heeftGeldBedrag ?geld_bedrag_temp . 257 # Anti-dubbeltelling 258 FILTER NOT EXISTS { 259 ?grootboek_post onz-g:partOf ?child . 260 ?child onz-g:partOf ?rubriek . 261 FILTER(?child != ?rubriek) 262 { { ?child a onz-fin:Grootboekrekening } UNION { ?child a onz-fin:Grootboekrubriek } } 263 } 264 FILTER( 265 ?datum <= ?peildatum_argument 266 && (!BOUND(?begin_datum) || ?datum > ?begin_datum) 267 ) 268 } 269 BIND(IF(BOUND(?geld_bedrag_temp), ?geld_bedrag_temp, 0) AS ?geld_bedrag_post) 270 } 271 GROUP BY ?rubriek ?categorie 272 } 273 VALUES (?categorie ?jaarrekeningpost) { 274 ("D.I" "D Eigen vermogen") 275 ("D.II" "D Eigen vermogen") 276 ("D.III" "D Eigen vermogen") 277 ("D.IV" "D Eigen vermogen") 278 ("D.V" "D Eigen vermogen") 279 ("D.VI" "D Eigen vermogen") 280 ("D.VII" "D Eigen vermogen") 281 ("D.VIII" "D Eigen vermogen") 282 } 283 } 284 GROUP BY ?jaarrekeningpost 285 } 286 } 287 } 288} 289