From 7b5f6eb6bfa3b35e2d62d2041a9f07f917094ab2 Mon Sep 17 00:00:00 2001 From: Jochen Hanisch-Johannsen Date: Sat, 31 May 2025 07:58:20 +0200 Subject: [PATCH] Initialer Commit: curriculare Analyse NFS-H --- .gitignore | 80 ++++++ APrV-Kuerzel_zu_Kompetenzbereichen.csv | 54 ++++ README.md | 32 +++ config_lms.py | 5 + lms-verteilung.xlsx | Bin 0 -> 10639 bytes lms_statistische-analyse.py | 381 +++++++++++++++++++++++++ 6 files changed, 552 insertions(+) create mode 100644 .gitignore create mode 100644 APrV-Kuerzel_zu_Kompetenzbereichen.csv create mode 100644 README.md create mode 100644 config_lms.py create mode 100644 lms-verteilung.xlsx create mode 100644 lms_statistische-analyse.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f64f4f5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,80 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ + +# Pytest +.pytest_cache/ + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre +.pyre/ + +# profiling +prof/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# pipenv +Pipfile.lock + +# pyright +.pyright/ + +# vscode +.vscode/ + +# system files +.DS_Store + +# Output files +# Ignore only generated or temporary figures in Abbildungen/ +Abbildungen/*.tmp.* +Abbildungen/*_entwurf.* +*.html +*.png diff --git a/APrV-Kuerzel_zu_Kompetenzbereichen.csv b/APrV-Kuerzel_zu_Kompetenzbereichen.csv new file mode 100644 index 0000000..9acbd7f --- /dev/null +++ b/APrV-Kuerzel_zu_Kompetenzbereichen.csv @@ -0,0 +1,54 @@ +Kürzel,Kompetenzbereich +1a,fachlich +1b,fachlich +1c,fachlich +1d,fachlich +1e,fachlich +1f,fachlich +2a,fachlich +2b,fachlich +2c,fachlich +2d,methodisch +2e,methodisch +2f,methodisch +2g,methodisch +2h,methodisch +3a,sozial +3b,sozial +3c,sozial +3d,sozial +3e,sozial +4a,methodisch +4b,methodisch +4c,methodisch +5a,methodisch +5b,methodisch +5c,methodisch +5d,methodisch +5e,methodisch +6a,methodisch +6b,methodisch +6c,methodisch +6d,methodisch +7a,fachlich +7b,fachlich +7c,fachlich +7d,fachlich +7e,fachlich +7f,fachlich +7g,fachlich +7h,fachlich +7i,fachlich +8a,personal +8b,personal +8c,personal +8d,personal +9a,personal +9b,personal +9c,personal +9d,personal +9e,personal +10a,sozial +10b,sozial +10c,sozial +10d,sozial diff --git a/README.md b/README.md new file mode 100644 index 0000000..d3b487f --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +# Learning Management System – Curriculum Analyse + +Dieses Projekt enthält die vollständige Python-gestützte Analyse der curricularen Struktur des digitalen Bildungsraums „NFS-H“. Ziel ist die datenbasierte Validierung der curricularen Kohärenz anhand der Ausbildungs- und Prüfungsverordnung für Notfallsanitäter*innen (NotSan-APrV). + +## Zielsetzung + +Nachgewiesen werden: +- curriculare Konsistenz (Korrelation Aufgaben vs. Dauer, r = 0.66) +- inhaltliche Validität (Deckung mit APrV-Themenverteilung: 47/27/26) +- strukturierte Kompetenzorientierung (fachlich, sozial, personal, methodisch) +- Visualisierungen zur quantitativen Analyse + +## Inhalt + +- `lms_statistische-analyse.py`: Hauptskript zur statistischen Auswertung +- `lms-verteilung.xlsx`: Zuordnung von Handlungssituationen zu APrV-Kürzeln +- `APrV-Kuerzel_zu_Kompetenzbereichen.csv`: Mapping von Kürzeln zu Kompetenzbereichen +- Visualisierungen werden automatisiert erzeugt; exportierte PNG-Dateien sind optional und werden lokal gespeichert + +## Methoden + +- Automatisierte Zuordnung über Pandas +- Visualisierung mit Plotly (Boxplots, Tortendiagramme, Balkendiagramme) +- Vergleich mit APrV-Gesetzesvorgaben als Referenzstruktur + +## Lizenz + +MIT License – siehe `LICENSE` + +## Hinweis + +Dieses Repository ist Bestandteil der Dissertationsarbeit an der Charité – Universitätsmedizin Berlin. \ No newline at end of file diff --git a/config_lms.py b/config_lms.py new file mode 100644 index 0000000..ae21bbe --- /dev/null +++ b/config_lms.py @@ -0,0 +1,5 @@ + +# Visualisierungs- und Darstellungsparameter für Plotly-Diagramme +plotly_theme = "dark" # CI-konformes Plotly-Theme: "dark" oder "light" +export_fig_visual = False # Steuerung, ob Visualisierungen exportiert werden +export_fig_png = False # Separater Schalter für PNG-Export diff --git a/lms-verteilung.xlsx b/lms-verteilung.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9ba80692ea7ffeed29a2b84d3258a04b6ddeb825 GIT binary patch literal 10639 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 ozwztu>VNf%e^#fY_>=m-y`-WHG