---
title: ""

format: 
  html:
    fig-width: 9
    fig-height: 8
    fig-dpi: 300
    #embed-resources: TRUE # Entwicklung
    #theme: "null" # Entwicklung
    embed-resources: FALSE # Veröffentlichung
    theme: none # Veröffentlichung
    header-includes: |
     <link rel="stylesheet" href="https://media.sciencemediacenter.de/static/fonts/circular/web.css">

mainfont: CircularSMCWeb

execute: 
  echo: FALSE
  output: asis
  warning: FALSE
  error: FALSE
---

```{r}
#| label: pakete_und_daten
#| output: false
library(tidyverse)
library(SMChelpR)
library(scales)
library(DT)
# library(zoo)
# library(plotly)
library(leaflet) # https://rstudio.github.io/leaflet/
library(geojsonio)
library(mapview) # to save maps as images, PhantomJS needed!
library(htmltools)
library(htmlwidgets)
library(leaflet.extras)
library(mapview) 


## wichtige Story-Parameter
storyNo <- 25060
file_name_code <- "Krankenhausplanung_April.qmd" ########################################
caption_MAGS <-
  "Quelle: Ministerium für Arbeit, Gesundheit und Soziales des Landes Nordrhein-Westfalen"
Datumsprefix_files <- FALSE # FALSE, wenn keine regelmäßige Aussendung / keine tagesaktuellen Daten


##############################

imagepath <-
  file.path("reports", storyNo)
dir.create(imagepath, showWarnings = FALSE, recursive = TRUE)

## workspace directory in RStudio interaktiv
if(rstudioapi::isAvailable()) {
  setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
}

if(is.na(file_name_code)){stop("Dateiname der qmd nicht gesetzt")}
if(!file.exists(file_name_code)){stop("qmd existiert nicht. Dateiname falsch?")}


file.copy(
  from = file_name_code, 
  to = file.path(imagepath, paste0(today()[Datumsprefix_files], "_"[Datumsprefix_files], file_name_code)), 
  overwrite = TRUE)
```


```{r}
#| label: set-graphic-parameters
#| output: false 

options(scipen = 999) # set scientific notation to be off
SMC_theme_ggplot()

if(exists("caption_")){stop("Caption wurde nicht angepasst")}

```

```{r}
#| label: load data

server_url <- "https://data.smclab.io/v1/graphql"

db_prefix <- "data_"

tabellenvars_query_body <- paste0(
  "query MyQuery {",
  db_prefix,
  "kliniken_nrw_krankenhausplanung_feststellungsbescheide {
    IK
    Kreis
    Landesteil
    Leistungsgruppe
    Leistungsgruppe_Id
    Name_Krankenhaus
    Planungsebene
    Regierungsbezirk
    Standortnummer
    Versorgungsgebiet
    beantragender_Standort_Name
    beantragte_Fallzahl
    genehmigte_Fallzahl
    relationship_standortnummer {
      Ort 
      lat
      lon
    }
  }
}"
)

nrw_krankenhausplanung_feststellung <-
  GraphQL_get_table_string(tabellenvars_query_body, datenserver = server_url) |>
  unnest(relationship_standortnummer) |>
  mutate(
    Genehmigung = case_when
    (
      Leistungsgruppe == "Intensivmedizin" ~
        case_when(
          genehmigte_Fallzahl == 3 ~ "Intensivmedizin hochkomplex",
          genehmigte_Fallzahl == 2 ~ "Intensivmedizin komplex",
          genehmigte_Fallzahl == 1 ~ "Intensivmedizin",
          genehmigte_Fallzahl == 0 ~ "keine Zuweisung"
        ),
      (
        Leistungsgruppe == "Komplexe Endokrinologie und Diabetologie" |
          Leistungsgruppe == "Komplexe Gastroenterologie" |
          Leistungsgruppe == "Komplexe Nephrologie" |
          Leistungsgruppe == "Komplexe Pneumologie" |
          Leistungsgruppe == "Komplexe Rheumatologie" |
          Leistungsgruppe == "Plastische und Rekonstruktive Chirurgie" |
          Leistungsgruppe == "Kinder- und Jugendchirurgie"
      ) ~
        case_when(
          genehmigte_Fallzahl == 1 ~ "Zuweisung",
          genehmigte_Fallzahl == 0 ~ "keine Zuweisung"
        ),
      (
        Leistungsgruppe != "Intensivmedizin" |
          Leistungsgruppe == "Komplexe periphere arterielle Gefäße"
      ) ~
        # remaining Leistungsgruppe
        case_when(
          genehmigte_Fallzahl > beantragte_Fallzahl &
            genehmigte_Fallzahl > 0 ~ "mehr genehmigt",
          genehmigte_Fallzahl == beantragte_Fallzahl &
            genehmigte_Fallzahl > 0 ~ "vollständig genehmigt",
          genehmigte_Fallzahl > 0 ~ "teilweise genehmigt",
          genehmigte_Fallzahl == 0 ~ "nicht genehmigt"
        )
    )
  )

bundeslaender <- geojsonio::topojson_read(file.path("bundeslaender_simplified.topojson"))

leistungsgruppe_of_interest <- c("Allgemeine Innere Medizin", 
                                 "Allgemeine Chirurgie", 
                                 "Endoprothetik Knie", 
                                 "Pankreaseingriffe", 
                                 "Kinder- und Jugendpsychiatrie und -psychotherapie - teilstationär", 
                                 "Herztransplantation")
leistungsgruppe_pending <- c("Pankreaseingriffe")
klinik_pending <- c("260550701", "260551165", "260550119")
klinik_special_case <- c("260510381")
leistungsgruppe_special_case <- c("Herztransplantation")

```



```{r}
#| label: Funktion Kartenvisualisierung


Leistungsgruppengrafik <- function(leistungsgruppe, datenpfad_clinics){

tabellenname <- "kliniken_nrw_krankenhausplanung_feststellungsbescheide"

COLOR_BLUE <- '#4477AA'
COLOR_GREEN <- '#228833'
COLOR_YELLOW <- '#CCBB44'
COLOR_RED <-  '#EE6677'
COLOR_GREY <- '#eeeeee'
COLOR_DARKGREY <- '#5A5A5A'


markers_query_body <- str_glue(
  "query MyQuery {{
        {db_prefix}{tabellenname}(where: {{Leistungsgruppe: {{_eq: \"{leistungsgruppe}\"}}}}) {{
          IK
          Standortnummer
          Leistungsgruppe
          Leistungsgruppe_Id
          Name_Krankenhaus
          beantragender_Standort_Name
          beantragte_Fallzahl
          genehmigte_Fallzahl
          genehmigte_Fallzahl_anhoerung_eins
          genehmigte_Fallzahl_anhoerung_zwei
          relationship_standortnummer {{
            Ort
            lat
            lon
          }}
          relationship_nrw_additional_geodaten {{
            lat
            lon
          }}
        }}
      }}"
)


markers_data <- GraphQL_get_table_string(querystring = markers_query_body, datenserver = server_url) |>
  unnest(relationship_standortnummer, names_sep = "_") |>
  rename(lat_inek = relationship_standortnummer_lat, lon_inek = relationship_standortnummer_lon) |>
  rename(Ort = relationship_standortnummer_Ort) |>
  mutate(
    genehmigte_Fallzahl_anhoerung_zwei = if_else(
      is.na(genehmigte_Fallzahl_anhoerung_zwei),
      genehmigte_Fallzahl_anhoerung_eins,
      genehmigte_Fallzahl_anhoerung_zwei
    )
  )

if (is.data.frame(markers_data$relationship_nrw_additional_geodaten)) {
  markers_data <- markers_data |>
    unnest(relationship_nrw_additional_geodaten, names_sep = "_") |>
    rename(lat_manuell = relationship_nrw_additional_geodaten_lat, lon_manuell = relationship_nrw_additional_geodaten_lon) |>
    mutate(
      lat = if_else(is.na(lat_inek), lat_manuell, lat_inek),
      lon = if_else(is.na(lon_inek), lon_manuell, lon_inek)
    ) |>
    select(
      c(
        "IK",
        "Standortnummer",
        "Leistungsgruppe",
        "Name_Krankenhaus",
        "beantragender_Standort_Name",
        "beantragte_Fallzahl",
        "genehmigte_Fallzahl",
        "genehmigte_Fallzahl_anhoerung_eins",
        "genehmigte_Fallzahl_anhoerung_zwei",
        "lat",
        "lon"
      )
    )
  
} else {
  markers_data <- markers_data |>
    mutate(
      relationship_nrw_additional_geodaten =
        if_else(
          is.na(relationship_nrw_additional_geodaten),
          list(tibble(lat = NA_real_, lon = NA_real_)),
          relationship_nrw_additional_geodaten
        )
    ) |>  # deal with the issue of relationship_nrw_addition_geodaten is NA and thus the following renames failing
    unnest(relationship_nrw_additional_geodaten, names_sep = "_") |>
    rename(lat_manuell = relationship_nrw_additional_geodaten_lat, lon_manuell = relationship_nrw_additional_geodaten_lon) |>
    mutate(
      lat = if_else(is.na(lat_inek), lat_manuell, lat_inek),
      lon = if_else(is.na(lon_inek), lon_manuell, lon_inek)
    ) |>
    select(
      c(
        "IK",
        "Standortnummer",
        "Leistungsgruppe",
        "Name_Krankenhaus",
        "beantragender_Standort_Name",
        "beantragte_Fallzahl",
        "genehmigte_Fallzahl",
        "genehmigte_Fallzahl_anhoerung_eins",
        "genehmigte_Fallzahl_anhoerung_zwei",
        "lat",
        "lon"
      )
    )
}

markers_data <- markers_data |>
  pivot_longer(
    cols = starts_with("genehmigte_Fallzahl"),
    names_to = "Datenstand",
    values_to = "genehmigte_Fallzahl"
  ) |>
  mutate(
    Datenstand = case_when(
      Datenstand == "genehmigte_Fallzahl_anhoerung_eins" ~ "1. Anhörung",
      Datenstand == "genehmigte_Fallzahl_anhoerung_zwei" ~ "2. Anhörung",
      Datenstand == "genehmigte_Fallzahl" ~ "Feststellungsbescheide",
      TRUE ~ Datenstand
    )
  ) |>
  arrange(Datenstand)


markers_data <- markers_data |>
  mutate(
    IK_char = as.character(IK),
    color = case_when(
      Leistungsgruppe %in% leistungsgruppe_pending &
        IK_char %in% klinik_pending
      ~ COLOR_DARKGREY,
      
      Leistungsgruppe == "Intensivmedizin" ~
        case_when(
          genehmigte_Fallzahl == 3 ~ COLOR_BLUE,
          genehmigte_Fallzahl == 2 ~ COLOR_GREEN,
          genehmigte_Fallzahl == 1 ~ COLOR_YELLOW,
          genehmigte_Fallzahl == 0 ~ COLOR_RED
        ),
      (
        Leistungsgruppe == "Komplexe Endokrinologie und Diabetologie" |
          Leistungsgruppe == "Komplexe Gastroenterologie" |
          Leistungsgruppe == "Komplexe Nephrologie" |
          Leistungsgruppe == "Komplexe Pneumologie" |
          Leistungsgruppe == "Komplexe Rheumatologie" |
          Leistungsgruppe == "Plastische und Rekonstruktive Chirurgie" |
          Leistungsgruppe == "Kinder- und Jugendchirurgie"
      ) ~
        case_when(
          genehmigte_Fallzahl == 1 ~ COLOR_GREEN,
          genehmigte_Fallzahl == 0 ~ COLOR_RED
        ),
      (
        Leistungsgruppe != "Intensivmedizin" |
          Leistungsgruppe == "Komplexe periphere arterielle Gefäße"
      ) ~
        # remaining Leistungsgruppe
        case_when(
          is.na(beantragte_Fallzahl) ~ NA,
          # Return NA if beantragte_Fallzahl is NA
          genehmigte_Fallzahl > beantragte_Fallzahl &
            genehmigte_Fallzahl > 0 ~ COLOR_BLUE,
          genehmigte_Fallzahl == beantragte_Fallzahl &
            genehmigte_Fallzahl > 0 ~ COLOR_GREEN,
          genehmigte_Fallzahl > 0 ~ COLOR_YELLOW,
          genehmigte_Fallzahl == 0 ~ COLOR_RED
        )
    )
  ) |>
  mutate(fillColor = color) |>
  # new function
  mutate(
    label = if_else(
      Leistungsgruppe %in% leistungsgruppe_pending & IK_char %in% klinik_pending,
      paste0(
        "<strong>", Name_Krankenhaus, "</strong>",
        "<br/>",
        "<p>beantragender Klinikstandort: ", beantragender_Standort_Name,
        "<br/>",
        "<p>beantragte Fallzahl: ", beantragte_Fallzahl,
        "<br/>",
        "genehmigte Fallzahl: ", genehmigte_Fallzahl,
        "<br/><i>Nach Gerichtsentscheid vorläufig genehmigt.</i></p>"
      ),
      if_else(
        Leistungsgruppe %in% leistungsgruppe_special_case & IK_char %in% klinik_special_case,
        paste0(
          "<strong>", Name_Krankenhaus, "</strong>",
          "<br/>",
          "<p>beantragender Klinikstandort: ", beantragender_Standort_Name,
          "<br/>",
          "<p>beantragte Fallzahl: ", beantragte_Fallzahl,
          "<br/>",
          "genehmigte Fallzahl: ", genehmigte_Fallzahl,
          "<br/><i>Nach Gerichtsentscheid vorläufig <br>bisheriger Versorgungsauftrag genehmigt.</i></p>"
        ),
        paste0(
          "<strong>", Name_Krankenhaus, "</strong>",
          "<br/>",
          "<p>beantragender Klinikstandort: ", beantragender_Standort_Name,
          "<br/>",
          "<p>beantragte Fallzahl: ", beantragte_Fallzahl,
          "<br/>",
          "genehmigte Fallzahl: ", genehmigte_Fallzahl,
          "<br/>  </span></p>"
        )
      )
    )
  ) |>
  rowwise() |> # transform rowwise to html tag
  mutate(label = HTML(label)) |> 
  write_csv(datenpfad_clinics)

get_legend_colors_and_labels <- function(leistungsgruppe) {
  if (leistungsgruppe == "Intensivmedizin") {
    legend_colors <- c(COLOR_BLUE, COLOR_GREEN, COLOR_YELLOW, COLOR_RED)
    legend_labels <- c(
      "Intensivmedizin hochkomplex",
      "Intensivmedizin komplex",
      "Intensivmedizin",
      "keine Zuweisung"
    )
  } else if (leistungsgruppe == "Komplexe Endokrinologie und Diabetologie" |
             leistungsgruppe == "Komplexe Gastroenterologie" |
             leistungsgruppe == "Komplexe Nephrologie" |
             leistungsgruppe == "Komplexe Pneumologie" |
             leistungsgruppe == "Komplexe Rheumatologie" |
             leistungsgruppe == "Plastische und Rekonstruktive Chirurgie" |
             leistungsgruppe == "Kinder- und Jugendchirurgie") {
    legend_colors <- c(COLOR_GREEN, COLOR_RED)
    legend_labels <- c("Zuweisung", "keine Zuweisung")
  } else if (leistungsgruppe %in% leistungsgruppe_pending) {
    legend_colors <- c(COLOR_BLUE, COLOR_GREEN, COLOR_YELLOW, COLOR_RED, COLOR_DARKGREY)
    legend_labels <- c(
      "mehr genehmigt",
      "vollständig genehmigt",
      "teilweise genehmigt",
      "nicht genehmigt",
      "Genehmigung nach <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&thinsp;Gerichtsentscheid"
    )
  } else {
    # For groups without exceptions, use only 4 categories.
    legend_colors <- c(COLOR_BLUE, COLOR_GREEN, COLOR_YELLOW, COLOR_RED)
    legend_labels <- c(
      "mehr genehmigt",
      "vollständig genehmigt",
      "teilweise genehmigt",
      "nicht genehmigt"
    )
  }
  
  return(list(colors = legend_colors, labels = legend_labels))
}

base_map_parameters <- get_base_map_parameters()
base_map_parameters["min_lat"] <- 49.5
base_map_parameters["minZoom"] <- 5
base_map_parameters["maxZoom"] <- 12
base_map_parameters["min_lon"] <- 4.5
base_map_parameters["max_lon"] <- 10.8
base_map_parameters["max_lat"] <- 52.8
base_map_parameters["center_lon"] <- 10.2
base_map_parameters["center_lat"] <- 49.4
base_map_parameters["zoom"] <- 7.25

circle_marker_parameters <- get_circle_marker_parameters()
circle_marker_parameters["radius"] <- 5
circle_marker_parameters["stroke"] <- FALSE
circle_marker_parameters$options$riseOffset <- 100

# text is too long for the legend box
title_text <- if (leistungsgruppe == "Kinder- und Jugendpsychiatrie und -psychotherapie - teilstationär") {
  "Kinder- und <br>Jugendpsychiatrie <br>und -psychotherapie <br>- teilstationär"
} else {
  paste0(leistungsgruppe)
}

map <-
  create_base_map(base_map_parameters = base_map_parameters) |>
  setMapWidgetStyle(list(background = "white")) |>
  addMapPane("basemap", zIndex = 500) |>
  addTiles(
    urlTemplate = "https://tileserver.smc.report/data/all_zoom_levels_nrw/{z}/{x}/{y}.png",
    options = pathOptions(pane = "basemap"),
    attribution = "© <a href='https://www.openstreetmap.org/copyright'>OpenStreetMap contributors</a>",
    group = "basemap"
  ) |>
  addMapPane("markerPane", zIndex = 600) |>
  addCircleMarkers(
    data = markers_data,
    label = markers_data$label,
    fillColor = markers_data$fillColor,
    color = markers_data$color,
    radius = circle_marker_parameters$radius,
    stroke = circle_marker_parameters$stroke,
    weight = circle_marker_parameters$weight,
    fillOpacity = circle_marker_parameters$fillOpacity,
    labelOptions = circle_marker_parameters$labelOptions,
    options = circle_marker_parameters$options,
    group = markers_data$Datenstand
  ) |>
  addLegend(
    "topright",
    colors = get_legend_colors_and_labels(leistungsgruppe)$colors,
    labels = get_legend_colors_and_labels(leistungsgruppe)$labels,
    title = HTML(
      paste0(
        #leistungsgruppe,
        title_text,
        "<br/>",
        "<small>Entscheidung des Landes: </small>",
        "<br/>"
      )
    ),
    opacity = 1
  ) |>
  addResetMapButton() |>
  addScaleBar(position = "bottomleft") |>
  #leaflet.extras::addFullscreenControl(position = "topleft") |>
  addGroupedLayersControl(
    # baseGroups = c("basemap"),
    overlayGroups = list(
      "Datenstand" = c("1. Anhörung", "2. Anhörung", "Feststellungsbescheide")
    ),
    position = c("bottomright"),
    options = groupedLayersControlOptions(
      groupCheckboxes = FALSE,
      collapsed = FALSE,
      groupsCollapsable = FALSE,
      sortLayers = FALSE,
      sortGroups = FALSE,
      sortBaseLayers = FALSE,
      exclusiveGroups = list("Datenstand")
    )
  ) |>
  addSearchFeatures(
    targetGroups  = c("Feststellungsbescheide"),
    options = searchFeaturesOptions(
      zoom = 10,
      openPopup = FALSE,
      autoCollapse = TRUE,
      position = "topleft",
      marker = list(
        icon = NULL,
        animate = TRUE,
        circle = list(
          radius = 10,
          weight = 3,
          color = "orange",
          stroke = TRUE,
          fill = FALSE
        )
      )
    )
  )

return(map)
}
```



::: m-news-single__ce

- NRW startet als erstes Bundesland mit Klinikreform
- deutliche Konzentration bei komplizierten Eingriffen erkennbar 
- höherer Bedarf bei Kinder- und Jugendpsychiatrie 


Am 1. April tritt in Nordrhein-Westfalen die Krankenhausreform in Kraft. NRW ist damit das erste Bundesland, das die Versorgungsplanung grundlegend ändert. Die bundesweite Klinikreform von Gesundheitsminister Karl Lauterbach beruht in weiten Teilen auf dem Konzept aus NRW. Ziel der Reform ist es, die medizinische Versorgung durch Spezialisierung und Qualitätsstandards zu verbessern.​ 

Anstelle der bisherigen Planung nach Bettenkapazität erfolgt nun eine Zuweisung von Leistungsgruppen (LG) an die Krankenhäuser. Dies bedeutet, dass Kliniken bestimmte medizinische Leistungen nur noch anbieten dürfen, wenn sie die dafür erforderlichen Qualitätskriterien erfüllen. Durch diese Spezialisierung soll sichergestellt werden, dass Patientinnen und Patienten bei komplexen Eingriffen nur noch in erfahrenen Einrichtungen behandelt werden, während die Grund- und Notfallversorgung flächendeckend erhalten bleibt. 

Zum Start der Reform beleuchtet das SMC im folgenden Data Report beispielhaft einige ausgewählte Leistungsgruppen. 

Eine vollständige Übersicht zu den Ergebnissen der Krankenhausplanung in NRW auf Basis der Feststellungsbescheide ist zudem über unser [interaktives Dashboard](https://krankenhausplanung-nrw.smc.report/){target="_blank"} abrufbar. Die Daten können für journalistische Zwecke frei genutzt werden.

Statements von Fachleuten zur neuen Versorgungssituation in NRW finden Sie [hier](https://sciencemediacenter.de/angebote/nrw-reformiert-seine-krankenhaeuser-bewertung-und-zukunft-25059){target="_blank"}.

*Zuteilung von Leistungen: So viele Kliniken erhalten mehr oder weniger*
```{r}
#| label: Tabelle Anzahl Kliniken pro Kategorie in absoluten Zahlen

tmp <- 
  nrw_krankenhausplanung_feststellung |> 
  summarise(n = n(), .by = c("Leistungsgruppe"))

# nur relevante leistungsgruppen, in absoluten zahlen
nrw_krankenhausplanung_feststellung |> 
  summarise(n = n(), .by = c("Leistungsgruppe", "Genehmigung")) %>%
  filter(Leistungsgruppe %in% leistungsgruppe_of_interest) %>%
  pivot_wider(names_from = Genehmigung, values_from = n) |>
  left_join(tmp, by = "Leistungsgruppe") |>
  datatable(
    rownames = FALSE,
    options = list(
    dom = 't',      
    paging = FALSE, 
    searching = FALSE, 
    info = FALSE
  ))

```

```{=html}
<center></center>
```

### Grundversorgung  

Kliniken der Grundversorgung sind vor allem jene, die die Leistungsgruppen „Allgemeine Innere Medizin“ und „Allgemeine Chirurgie“ vereinen. Nennenswerte Veränderungen ergeben sich hier durch die Klinikreform wie zu erwarten nicht – die Grundversorgung soll weitgehend erhalten bleiben, um die Erreichbarkeit zu gewährleisten. Das Versprechen der Landesregierung war im Vorfeld, dass die Erreichbarkeit der Grund- und Notfallversorgung für 90 Prozent der Bevölkerung in NRW [nur 20 Minuten Fahrzeit ](https://www.land.nrw/pressemitteilung/minister-laumann-so-funktioniert-es-mit-der-krankenhausplanung-fuer-nordrhein#:~:text=Er%20stellt%20sicher%2C%20ein%20Krankenhaus,dem%20Auto%20erreichbar%20sein%20muss.){target="_blank"} betragen soll – kürzer als die [bundesweite Vorgabe von 30 Minuten](https://www.bundesgesundheitsministerium.de/presse/pressemitteilungen/krankenhausreform-kabinett-pm-15-05-24.html){target="_blank"}. 

**Kennzahlen für die Leistungsgruppe „Allgemeine Innere Medizin“:**

- 306 Kliniken haben die LG beantragt 
- 36 Prozent dieser Kliniken (109) können künftig mehr Fälle behandeln als beantragt 
- 37 Prozent (114) sollen weniger Fälle behandeln als beantragt 
- 24 Prozent (73) dürfen so viele Fälle behandeln wie beantragt 
- 3 Prozent (10) dürfen die LG nicht besetzen 

```{r}
#| label: Karte Allgemeine Innere Medizin

filename <- "Allgemeine_Innere_Medizin"

htmlpfad <- file.path(imagepath, paste0(filename, ".html"))
datenpfad_clinics <- file.path(imagepath,
                               paste0(filename, "_Kliniken.csv"))

datenpfad_distance <- file.path(imagepath, paste0(filename, "_Bundeslaender.topojson"))
write_bundeslaender <- topojson_write(input = bundeslaender, file = datenpfad_distance)

data_map <- tibble(
  fileformat = c("csv", "topojson"),
  filename_suffix = c("Kliniken", "Bundeslaender"))

images_map <- tibble(fileformat = c("html"),
                     filename_suffix = c(""))

map <- Leistungsgruppengrafik("Allgemeine Innere Medizin", datenpfad_clinics)

mapshot(map, url = htmlpfad)

map

image_helper_light(
  filename = filename,
  filepath = imagepath,
  data = data_map,
  images = images_map,
  captions = caption_MAGS
)
```


**Kennzahlen für die Leistungsgruppe „Allgemeine Chirurgie“:**

- 286 Kliniken haben die LG beantragt 
- 12 Prozent dieser Kliniken (33) können künftig mehr Fälle behandeln als beantragt 
- 64 Prozent (182) sollen weniger Fälle behandeln als beantragt 
- 21 Prozent (59) dürfen so viele Fälle behandeln wie beantragt 
- 4 Prozent (12) dürfen die LG nicht besetzen 

```{r}
#| label: Karte Allgemeine Chirurgie

filename <- "Allgemeine_Chirurgie"

htmlpfad <- file.path(imagepath, paste0(filename, ".html"))
datenpfad_clinics <- file.path(imagepath,
                               paste0(filename, "_Kliniken.csv"))

datenpfad_distance <- file.path(imagepath, paste0(filename, "_Bundeslaender.topojson"))
write_bundeslaender <- topojson_write(input = bundeslaender, file = datenpfad_distance)

data_map <- tibble(
  fileformat = c("csv", "topojson"),
  filename_suffix = c("Kliniken", "Bundeslaender"))

images_map <- tibble(fileformat = c("html"),
                     filename_suffix = c(""))

map <- Leistungsgruppengrafik("Allgemeine Chirurgie", datenpfad_clinics)

mapshot(map, url = htmlpfad)

map

image_helper_light(
  filename = filename,
  filepath = imagepath,
  data = data_map,
  images = images_map,
  captions = caption_MAGS
)
```


### Endoprothetik Knie

Das Einsetzen eines künstlichen Kniegelenks wird gern als „Cash Cow“ der Kliniken betrachtet. In der Vergangenheit hatten gestiegene Fallpauschalen den Kliniken einige Anreize geboten, vermehrt künstliche Kniegelenke einzusetzen – [nicht immer ist das medizinisch notwendig](https://media.sciencemediacenter.de/_legacy/user_upload/Operation-Explorer/Knieprothesen-Report_SMC-Operation-Explorer_2018-06-19.pdf){target="_blank"}. 

Im Zuge der Klinikreform ist nun ersichtlich, dass deutlich weniger Kliniken Fälle in der LG „Endoprothetik Knie“ durchführen dürfen als beantragt. 

**Kennzahlen für die Leistungsgruppe „Endoprothetik Knie“:** 

- 214 Kliniken haben die LG beantragt 
- 15 Prozent dieser Kliniken (32) können künftig mehr Fälle behandeln als beantragt 
- 38 Prozent (81) sollen weniger Fälle behandeln als beantragt 
- 11 Prozent (23) dürfen so viele Fälle behandeln wie beantragt 
- 36 Prozent (78) dürfen die LG nicht besetzen 

```{r}
#| label: Karte Endoprothetik Knie

filename <- "Endoprothetik_Knie"

htmlpfad <- file.path(imagepath, paste0(filename, ".html"))
datenpfad_clinics <- file.path(imagepath,
                               paste0(filename, "_Kliniken.csv"))

datenpfad_distance <- file.path(imagepath, paste0(filename, "_Bundeslaender.topojson"))
write_bundeslaender <- topojson_write(input = bundeslaender, file = datenpfad_distance)

data_map <- tibble(
  fileformat = c("csv", "topojson"),
  filename_suffix = c("Kliniken", "Bundeslaender"))

images_map <- tibble(fileformat = c("html"),
                     filename_suffix = c(""))

map <- Leistungsgruppengrafik("Endoprothetik Knie", datenpfad_clinics)

mapshot(map, url = htmlpfad)

map

image_helper_light(
  filename = filename,
  filepath = imagepath,
  data = data_map,
  images = images_map,
  captions = caption_MAGS
)
```


Der Wunsch nach einer Konzentration der Fallzahlen ist zu erkennen. Eine Einschränkung ist, dass bei den abgelehnten Kliniken grundsätzlich nicht klar ist, inwiefern zuvor überhaupt schon Fälle im Bereich der Knieendoprothetik (oder bei anderen LG) erbracht wurden. Hierzu bedarf es zum Beispiel eines Abgleichs der tatsächlich erbrachten Fallzahlen aus den [Qualitätsberichten der Kliniken](https://qb-referenzdatenbank.g-ba.de/#/suche){target="_blank"}. Bei vielen Leistungsgruppen haben sich Kliniken auch erstmals beworben – so auch manche, obwohl sie zuvor noch nie einen Eingriff auf dem jeweiligen Gebiet durchgeführt haben. 

Für die LG „Endoprothetik Knie“ diagnostiziert das NRW-Gesundheitsministerium in einigen Versorgungsgebieten eine [Überzeichnung des Bedarfs](https://www.mags.nrw/system/files/media/document/file/240614_anhoerungsschreiben_vg1_0.pdf){target="_blank"}. Bei der Zuweisung der zu erbringenden Fallzahlen orientierte sich das Land auch an der gesetzlichen [Mindestmenge für Kniegelenk-Totalendoprothesen pro Jahr](https://www.g-ba.de/presse/pressemitteilungen-meldungen/123/#:~:text=August%202004%20%E2%80%93%20Der%20Gemeinsame%20Bundesausschuss,pro%20Krankenhaus%20pro%20Jahr%20festzulegen.){target="_blank"}. Sie liegt bei 50. [Hierzu merkt das Ministerium an](https://www.mags.nrw/system/files/media/document/file/240614_anhoerungsschreiben_vg2.pdf){target="_blank"}, „dass die Vorgabe des Gemeinsamen Bundesausschusses die unterste Grenze einer Fallzahl ist, die zu erbringen ist. Daher wurde bei der Planung regelmäßig auf einen höheren Wert abgestellt“. 

So gibt es lediglich zwei Kliniken in NRW, denen Fallzahlen genehmigt wurden, die nur knapp der Mindestmenge entsprechen: die Uniklinik Düsseldorf (50 Fälle) und das Helios Klinikum Warburg (60). Nach den ersten beiden Anhörungsrunden sollte die Uniklinik Düsseldorf aufgrund der geringen Fallzahl die LG eigentlich nicht besetzen dürfen. Im [endgültigen Feststellungsbescheid](https://www.mags.nrw/system/files/media/document/file/ebene_vg_vg_1.pdf){target="_blank"} sprach man der Uniklinik aber 50 Fälle zu. Beantragt wurden 65 Fälle. 

### Pankreaseingriffe

Bösartige Neubildungen der Bauchspeicheldrüse (Pankreas) weisen bei Patientinnen und Patienten mit die niedrigsten Überlebensraten aller Krebserkrankungen auf. Die erforderlichen Eingriffe sind kompliziert, Gelegenheitschirurgie soll vermieden werden. Im Zuge der Klinikreform ist daher auch bei der LG „Pankreaseingriffe“ eine Konzentration erkennbar. 

**Kennzahlen für die Leistungsgruppe „Pankreaseingriffe“:**

- 111 Kliniken haben die LG beantragt 
- 9 Prozent dieser Kliniken (10) können künftig mehr Fälle behandeln als beantragt 
- 16 Prozent (18) sollen weniger Fälle behandeln als beantragt 
- 14 Prozent (16) dürfen so viele Fälle behandeln wie beantragt 
- 60 Prozent (67) dürfen die LG nicht besetzen 

```{r}
#| label: Karte Pankreaseingriffe

filename <- "Pankreaseingriffe"

htmlpfad <- file.path(imagepath, paste0(filename, ".html"))
datenpfad_clinics <- file.path(imagepath,
                               paste0(filename, "_Kliniken.csv"))

datenpfad_distance <- file.path(imagepath, paste0(filename, "_Bundeslaender.topojson"))
write_bundeslaender <- topojson_write(input = bundeslaender, file = datenpfad_distance)

data_map <- tibble(
  fileformat = c("csv", "topojson"),
  filename_suffix = c("Kliniken", "Bundeslaender"))

images_map <- tibble(fileformat = c("html"),
                     filename_suffix = c(""))

map <- Leistungsgruppengrafik("Pankreaseingriffe", datenpfad_clinics)

mapshot(map, url = htmlpfad)

map

image_helper_light(
  filename = filename,
  filepath = imagepath,
  data = data_map,
  images = images_map,
  captions = caption_MAGS
)
```


Das Land NRW strebt künftig eine noch deutlichere Konzentration an, wie es in den Begleitschreiben an die Kliniken heißt. Im [Regierungsbezirk Düsseldorf](https://www.mags.nrw/system/files/media/document/file/240621_anhoerungsschreiben_rb_d.pdf){target="_blank"} sollten schon jetzt nur Kliniken berücksichtigt werden, die Pankreaseingriffe mindestens alle zwei Wochen durchführen. Auch bei dieser LG sieht das Ministerium eine Bedarfsüberzeichnung seitens der Kliniken. Vereinzelte Beschwerden von Kliniken gegen die Entscheidungen des Landes hatten vor Gericht bislang keinen Erfolg. So urteilte das [Verwaltungsgericht Düsseldorf](https://www.vg-duesseldorf.nrw.de/behoerde/presse/pressemitteilungen/2025/14_03_251/index.php){target="_blank"} im Fall einer klagenden Wuppertaler Klinik: „Das Land hat nachvollziehbar dargelegt, dass eine höhere Anzahl erbrachter medizinischer Leistungen der Leistungsgruppe mit einer steigenden ärztlichen Erfahrung verbunden ist.“ Die Entscheidung der Bezirksregierung Düsseldorf, die Wuppertaler Klinik in diesem Fall von der Versorgung auszuschließen, sei rechtmäßig. 

In Wuppertal hatten das Agaplesion Bethesda Krankenhaus und das Cellitinnen-Krankenhaus St. Petrus die LG „Pankreaseingriffe“ beantragt. In beiden Fällen lehnte das Land den Antrag ab. Als einziger Versorger in dieser Region hat das Helios Universitätsklinikum Wuppertal den Zuschlag erhalten. Auch in der Region Aachen hatte zum Beispiel das Marienhospital Beschwerde eingereicht – [ebenfalls vorläufig zu Unrecht](https://www.vg-aachen.nrw.de/behoerde/presse/pressemitteilungen/07_250321/index.php){target="_blank"}. 

Erfolgreich klagten derweil das [Knappschaftskrankenhaus Recklinghausen](https://www.recklinghaeuser-zeitung.de/recklinghausen/knappschaftskrankenhaus-recklinghausen-gericht-entscheidet-pankreas-eingriffe-operationen-w1011360-6000936463/){target="_blank"}, das Prosper-Hospital Recklinghausen sowie das Evangelische Klinikum Gelsenkirchen. In allen Fällen stellte das [Gericht](https://www.vg-gelsenkirchen.nrw.de/behoerde/presse/pressemitteilungen/07_250318/index.php){target="_blank"} in erster Instanz Fehler bei der Berücksichtigung von Fallzahlen in den vorangegangenen Jahren fest. Zudem habe das Land mehrere Standorte eines Trägers gemeinschaftlich betrachtet, obwohl für die Expertise auf einzelne Standorte abzustellen sei. Die Auswahlentscheidung sei „ermessensfehlerhaft“. Die drei Kliniken dürfen nun vorläufig weiterhin Pankreaseingriffe vornehmen. Beantragt hatten die Häuser 30, 20 und 45 Fälle. 

Komplexe Eingriffe am Pankreas unterliegen seit 2025 einer gesetzlichen Mindestmenge von 20 Fällen pro Jahr. Inwieweit nun Kliniken, die nur knapp die Mindestmenge erfüllen, die Versorgungsqualität in ihrer Region tatsächlich verbessern oder ob eine entschlossenere Bündelung von Fallzahlen nicht zu besseren Ergebnissen führt, ist zu prüfen. Das Ministerium behält sich [Anpassungen](https://www.mags.nrw/krankenhausplanung-neuer-krankenhausplan){target="_blank"} vor. 

### Kinder- und Jugendpsychiatrie und -psychotherapie - teilstationär

Während im Bereich der Knie- und Pankreaseingriffe die Versorgung gebündelt und stärker konzentriert werden soll, sieht das Land bei der Kinder- und Jugendpsychiatrie eine notwendige Erweiterung des Leistungsangebots. Der Grund dafür ist, dass die bisherige Bedarfsprognose auf Daten beruhen, die vor der Corona-Pandemie erhoben wurden. Seitdem sei die Nachfrage gestiegen. In manchen Regionen sieht das Land eine Unterversorgung. „Das Land hat sich daher entschlossen, wo notwendig, zunächst eine Erweiterung von bis zu 20 Prozent und somit bis zur im Krankenhausplan vorgesehenen Schwankungsbreite zuzulassen“, heißt es in [Begleitschreiben](https://www.mags.nrw/system/files/media/document/file/vg_7_anhoerung_lb_31_32_anlage.pdf){target="_blank"} an die Kliniken. Für jede LG erteilt das Land eine [Schwankungsbreite](https://www.mags.nrw/system/files/media/document/file/krankenhausplan_nrw_2022.pdf){target="_blank"}, in deren Rahmen die Krankenhäuser von den festgelegten Fallzahlen abweichen dürfen. Die Schwankungsbreite für den Leistungsbereich „Kinder- und Jugendpsychiatrie“ liegt bei 25 Prozent.  

Ob die Erweiterung realistisch ist, ist allerdings zweifelhaft: Die [Psychotherapeutenkammer NRW berichtet](https://www.ptk-nrw.de/aktuelles/meldungen/detail/eklatanter-fachkraeftemangel-in-der-kinder-und-jugendlichenpsychiatrie){target="_blank"} von einem einschränkenden Fachkräftemangel in diesem Bereich. 

**Kennzahlen für die LG „Kinder- und Jugendpsychiatrie und -psychotherapie (teilstationär)“:**

- 67 Kliniken haben die LG beantragt 
- 30 Prozent dieser Kliniken (20) können künftig mehr Fälle behandeln als beantragt 
- 9 Prozent (6) sollen weniger Fälle behandeln als beantragt 
- 57 Prozent (38) dürfen so viele Fälle behandeln wie beantragt 
- 5 Prozent (3) dürfen die LG nicht besetzen 

```{r}
#| label: Karte Kinder- und Jugendpsychiatrie und -psychotherapie - teilstationär

filename <- "Kinder_Jugendpsychiatrie_teilstationaer"

htmlpfad <- file.path(imagepath, paste0(filename, ".html"))
datenpfad_clinics <- file.path(imagepath,
                               paste0(filename, "_Kliniken.csv"))

datenpfad_distance <- file.path(imagepath, paste0(filename, "_Bundeslaender.topojson"))
write_bundeslaender <- topojson_write(input = bundeslaender, file = datenpfad_distance)

data_map <- tibble(
  fileformat = c("csv", "topojson"),
  filename_suffix = c("Kliniken", "Bundeslaender"))

images_map <- tibble(fileformat = c("html"),
                     filename_suffix = c(""))

map <- Leistungsgruppengrafik("Kinder- und Jugendpsychiatrie und -psychotherapie - teilstationär", datenpfad_clinics)

mapshot(map, url = htmlpfad)

map

image_helper_light(
  filename = filename,
  filepath = imagepath,
  data = data_map,
  images = images_map,
  captions = caption_MAGS
)
```


### Herztransplantation

Die Transplantation eines Herzens ist ein Eingriff, den nur wenige Kliniken durchführen können. Es bestehen hohe Anforderungen an Personal und Ausstattung. Zudem wird es ab 2026 ebenfalls eine gesetzlich vorgeschriebene Mindestmenge von 10 Eingriffen pro Jahr geben. 

```{r}
#| label: Karte Herztransplantation

filename <- "Herztransplantation"

htmlpfad <- file.path(imagepath, paste0(filename, ".html"))
datenpfad_clinics <- file.path(imagepath,
                               paste0(filename, "_Kliniken.csv"))

datenpfad_distance <- file.path(imagepath, paste0(filename, "_Bundeslaender.topojson"))
write_bundeslaender <- topojson_write(input = bundeslaender, file = datenpfad_distance)

data_map <- tibble(
  fileformat = c("csv", "topojson"),
  filename_suffix = c("Kliniken", "Bundeslaender"))

images_map <- tibble(fileformat = c("html"),
                     filename_suffix = c(""))

map <- Leistungsgruppengrafik("Herztransplantation", datenpfad_clinics)

mapshot(map, url = htmlpfad)

map

image_helper_light(
  filename = filename,
  filepath = imagepath,
  data = data_map,
  images = images_map,
  captions = caption_MAGS
)
```


In NRW hatten fünf Kliniken die LG „Herztransplantation“ beantragt. Drei Kliniken lehnte das Land zunächst ab: die Unikliniken in Bonn, Köln und Essen. Die zwei „Hochburgen“ in NRW sind die Uniklinik Düsseldorf und das Herz- und Diabeteszentrum Bad Oeynhausen. Im Fall der Uniklinik Essen kam es zu einem [Rechtsstreit](https://www.justiz.nrw.de/presse/2025-03-18-2){target="_blank"}, der nun in erster Instanz zugunsten der Uniklinik ausging. 

Das Land hatte der Klinik lediglich erlaubt, kombinierte Herz-Lungen-Transplantationen durchzuführen, jedoch keine eigenständigen Herztransplantationen. Für die kombinierten Eingriffe sollte die Uniklinik zudem Kooperationen mit anderen Häusern eingehen. Das Verwaltungsgericht Gelsenkirchen sah die „Belange von Forschung und Lehre“ sowie gewisse Ausstattungen vor Ort (Maschinenperfusionsverfahren) vom Land nicht ausreichend berücksichtigt. Vorläufig dürfen deshalb in Essen weiterhin Herztransplantationen im Umfang des bisherigen Versorgungsauftrags durchgeführt werden. Im vergangenen Jahr erfolgten der Uniklinik zufolge [14 Herztransplantationen](https://www.uk-essen.de/presse/verwaltungsgericht-gelsenkirchen-universitaetsmedizin-essen-darf-weiterhin-herztransplantationen-durchfuehren/){target="_blank"}. Damit wäre die künftige Mindestmenge in Höhe von 10 Fällen erfüllt. [In den Vorjahren](https://dso.de/BerichteTransplantationszentren/Essen%20Herz%202023.pdf){target="_blank"} lagen die Zahlen niedriger: 2023 bei 5, 2022 bei 11, 2021 bei 10 und zwischen 2018 und 2020 bei 4. [Die Fallzahlen in Düsseldorf und Bad Oeynhausen](https://dso.de/BerichteTransplantationszentren/Grafiken%20D%202023%20Herz.pdf){target="_blank"} lagen zuletzt deutlich darüber. 

### Datengrundlage und Code

Der Report basiert auf den Ergebnissen der Anhörungsverfahren zwischen Kliniken, dem Ministerium für Arbeit, Gesundheit und Soziales sowie den Krankenkassen in NRW. Konkret wurden die Anhörungsschreiben sowie die Feststellungsbescheide (PDF) für die Leistungsgruppen auf allen Planungsebenen ausgelesen und visualisiert. 

Den Code für diesen Data Report stellen wir [hier]( `r file.path(imagepath, paste0(today()[Datumsprefix_files], "_"[Datumsprefix_files], file_name_code))` ){target="_blank"} zur Verfügung. Neben Standard R-Paketen wird ein eigenes Paket verwendet, das [hier](https://github.com/sciencemediacenter/SMChelpR){target="_blank"} bereitgestellt wird.

### Ihre Ansprechpersonen in Redaktion und SMC Lab

Wenn Sie Fragen zu diesen Daten haben oder weitere Auswertungen erhalten wollen, kann das SMC Lab Auswertungen erzeugen.


*Redaktion*\
Philipp Jacobs, Redakteur für Medizin und Lebenswissenschaften\
Helena Salamun, Redakteurin für Medizin und Lebenswissenschaften\
[redaktion\@sciencemediacenter.de](mailto:redaktion@sciencemediacenter.de){.email}

*Datenauswertung*\
Lars Koppers\
Mani Erfanian Abdoust\
[lab\@sciencemediacenter.de](mailto:lab@sciencemediacenter.de){.email}


Telefon: +49 221 8888 25-0\
E-Mail Inhalt: [redaktion\@sciencemediacenter.de](mailto:redaktion@sciencemediacenter.de){.email}\
E-Mail Datenauswertung: [lab\@sciencemediacenter.de](mailto:lab@sciencemediacenter.de){.email}
:::
