ATC-Code Abfrage über php
Zitat von Diabetologie Schonnebeck am 17. September 2026, 8:42 UhrHallo zusammen,
hat jemand von euch schon einmal eine PHP-Abfrage der aktiven Medikation anhand von ATC-Codes umgesetzt?
Ich möchte für die Schnellinfo bei Diabetespatienten automatisch erkennen, welche Medikamentengruppen aktuell eingesetzt werden, z. B.:
Metformin
SGLT2-Hemmer
DPP-4-Hemmer
GLP-1-Rezeptoragonisten
Insulin
Ideal wäre also eine Abfrage der aktiven Medikamente/Dauermedikamente nach ATC-Code bzw. ATC-Code-Bereichen, sodass PHP anschließend z. B. eine kompakte Ausgabe wie
DM-Therapie: Metformin | SGLT2 | Insulinerzeugen könnte.
Hat jemand so etwas schon gebastelt oder kennt eine Variable/Funktion, mit der sich der ATC-Code der aktiven Medikation in PHP auswerten lässt?
Vielen Dank!
Hallo zusammen,
hat jemand von euch schon einmal eine PHP-Abfrage der aktiven Medikation anhand von ATC-Codes umgesetzt?
Ich möchte für die Schnellinfo bei Diabetespatienten automatisch erkennen, welche Medikamentengruppen aktuell eingesetzt werden, z. B.:
-
Metformin
-
SGLT2-Hemmer
-
DPP-4-Hemmer
-
GLP-1-Rezeptoragonisten
-
Insulin
Ideal wäre also eine Abfrage der aktiven Medikamente/Dauermedikamente nach ATC-Code bzw. ATC-Code-Bereichen, sodass PHP anschließend z. B. eine kompakte Ausgabe wie
DM-Therapie: Metformin | SGLT2 | Insulin
erzeugen könnte.
Hat jemand so etwas schon gebastelt oder kennt eine Variable/Funktion, mit der sich der ATC-Code der aktiven Medikation in PHP auswerten lässt?
Vielen Dank!
Zitat von bro am 17. September 2026, 9:05 UhrDas entspricht dieser Umsetzung im weitesten Sinne, sollte also machbar sein
allerdings ATC + Schnellinfo geht imho nicht. Aber sowas könnte funktionieren: Die Grundlagen hatte ich schon in Claude, das ist das Ergebnis, könnte aber MO langsam machen. Claude mein nein, ich meine vielleicht, aber das wird man sehen.
{PHP}
/* ==========================================================================
dm_schnellinfo_v1.php
Schnellinfo: erkennt aktive Diabetes-Medikation nach Wirkstoffgruppe und
gibt eine kompakte Zeile „DM-Therapie: X | Y | Z“ aus.Hintergrund: In MO-Textkategorie-/Schnellinfo-Skripten gibt es keinen
ATC-Code als Platzhalter (ATC-Filterung existiert nur im Statistik-
Modul). Das Skript arbeitet daher wie wiederverordnung_v1.11.php mit
dem Freitext-Merge-Field der aktiven Dauermedikation und matcht
Wirkstoff-/Handelsnamen per Substring (analog zur Gruppierungslogik in
w_group_key_v5 dort).Gruppen: Metformin, SGLT2-Hemmer, DPP-4-Hemmer, GLP-1-Rezeptoragonisten,
Insulin.Fixkombinationen zaehlen bewusst in MEHREREN Gruppen (z.B. Xultophy =
Insulin + GLP-1; Janumet = DPP-4 + Metformin). Jede Medikamentenzeile
wird unabhaengig gegen jede Gruppe geprueft – kein „erste Gruppe
gewinnt“.PFLEGE
– Neue Praeparate: passendes Keyword (klein geschrieben) in die
betroffene(n) Gruppe(n) in w_dm_gruppen_v1() eintragen.
– Fixkombi mit zwei Wirkstoffklassen -> Keyword in BEIDE betroffenen
Gruppen eintragen (siehe Kommentare unten).
– INN-Wortstaemme (z.B. ‚glargin‘, ’semaglutid‘) fangen generische
Verordnungen/Biosimilars ab, ohne dass jeder Hersteller-Name einzeln
gepflegt werden muss.
========================================================================== */$w_dm_raw_active = ‚{Medikamente:ASCII:DATUM}‘;
if (!function_exists(‚w_dm_gruppen_v1‘)) {
function w_dm_gruppen_v1() {
return array(
‚Metformin‘ => array(
‚metformin‘, ’siofor‘, ‚glucophage‘, ‚diabetase‘, ‚mediabet‘,
// Fixkombis mit Metformin (zweiter Wirkstoff steht zusaetzlich
// in seiner eigenen Gruppe unten)
’synjardy‘, ‚xigduo‘, ‚ebymect‘, ‚vokanamet‘, ’segluromet‘,
‚janumet‘, ‚velmetia‘, ‚ristfor‘, ‚eucreas‘, ‚icandra‘, ‚zomarist‘,
‚komboglyze‘, ‚jentadueto‘, ‚vipdomet‘,
),
‚SGLT2‘ => array(
‚empagliflozin‘, ‚jardiance‘, ‚dapagliflozin‘, ‚forxiga‘,
‚canagliflozin‘, ‚invokana‘, ‚ertugliflozin‘, ’steglatro‘,
// Fixkombis mit SGLT2-Anteil
’synjardy‘, ‚xigduo‘, ‚ebymect‘, ‚vokanamet‘, ’segluromet‘,
‚glyxambi‘, ’steglujan‘,
),
‚DPP4‘ => array(
’sitagliptin‘, ‚januvia‘, ‚xelevia‘, ‚vildagliptin‘, ‚galvus‘,
’saxagliptin‘, ‚onglyza‘, ‚linagliptin‘, ‚trajenta‘,
‚alogliptin‘, ‚vipidia‘,
// Fixkombis mit DPP4-Anteil
‚janumet‘, ‚velmetia‘, ‚ristfor‘, ‚eucreas‘, ‚icandra‘, ‚zomarist‘,
‚komboglyze‘, ‚jentadueto‘, ‚vipdomet‘, ‚glyxambi‘, ’steglujan‘,
),
‚GLP1‘ => array(
’semaglutid‘, ‚ozempic‘, ‚rybelsus‘, ‚wegovy‘,
‚dulaglutid‘, ‚trulicity‘, ‚liraglutid‘, ‚victoza‘, ’saxenda‘,
‚exenatid‘, ‚byetta‘, ‚bydureon‘, ‚tirzepatid‘, ‚mounjaro‘,
‚lixisenatid‘, ‚lyxumia‘,
// Fixkombi mit Basalinsulin + GLP-1
‚xultophy‘, ’suliqua‘,
),
‚Insulin‘ => array(
// INN-Staemme (fangen generische „Insulin glargin XY“-Biosimilars ab)
‚insulin‘, ‚glargin‘, ‚detemir‘, ‚degludec‘, ‚lispro‘, ‚aspart‘, ‚glulisin‘,
// Basalinsuline
‚lantus‘, ‚toujeo‘, ‚levemir‘, ‚tresiba‘, ‚abasaglar‘, ’semglee‘,
// Bolus/kurzwirksame Analoga
‚apidra‘, ’novorapid‘, ‚humalog‘, ‚liprolog‘, ‚fiasp‘, ‚trurapi‘,
// Humaninsuline/Mischinsuline (Novo-Nordisk-Produkte laufen
// 2026/27 aus, bleiben aber in Bestandslisten/Historie relevant)
‚actrapid‘, ‚actraphane‘, ‚insulatard‘, ‚protaphane‘, ‚mixtard‘, ’novomix‘,
‚insuman‘, ‚huminsulin‘, ‚berlinsulin‘,
// Kombi Basal+Bolus
‚ryzodeg‘,
// Fixkombi mit GLP-1
‚xultophy‘, ’suliqua‘,
),
);
}
}if (!function_exists(‚w_dm_schnellinfo_v1‘)) {
function w_dm_schnellinfo_v1($raw_active) {
$lines = explode(„\n“, str_replace(array(„\r“, „\\par“, „\\pard“), „\n“, $raw_active));
$gruppen = w_dm_gruppen_v1();
$treffer = array();foreach ($lines as $line) {
if (trim(strip_tags($line)) == “) continue;
$l = strtolower($line);
foreach ($gruppen as $name => $keywords) {
if (in_array($name, $treffer)) continue;
foreach ($keywords as $kw) {
if (strpos($l, $kw) !== false) { $treffer[] = $name; break; }
}
}
}// Feste Anzeige-Reihenfolge statt Fund-Reihenfolge (lesbarer/vergleichbar)
$reihenfolge = array(‚Metformin‘, ‚SGLT2‘, ‚DPP4‘, ‚GLP1‘, ‚Insulin‘);
$sortiert = array();
foreach ($reihenfolge as $r) {
if (in_array($r, $treffer)) $sortiert[] = $r;
}return $sortiert;
}
}$w_dm_treffer = w_dm_schnellinfo_v1($w_dm_raw_active);
if (!empty($w_dm_treffer)) {
echo ‚DM-Therapie: ‚ . implode(‚ | ‚, $w_dm_treffer);
}
{/PHP}
Das entspricht dieser Umsetzung im weitesten Sinne, sollte also machbar sein
allerdings ATC + Schnellinfo geht imho nicht. Aber sowas könnte funktionieren: Die Grundlagen hatte ich schon in Claude, das ist das Ergebnis, könnte aber MO langsam machen. Claude mein nein, ich meine vielleicht, aber das wird man sehen.
{PHP}
/* ==========================================================================
dm_schnellinfo_v1.php
Schnellinfo: erkennt aktive Diabetes-Medikation nach Wirkstoffgruppe und
gibt eine kompakte Zeile „DM-Therapie: X | Y | Z“ aus.
Hintergrund: In MO-Textkategorie-/Schnellinfo-Skripten gibt es keinen
ATC-Code als Platzhalter (ATC-Filterung existiert nur im Statistik-
Modul). Das Skript arbeitet daher wie wiederverordnung_v1.11.php mit
dem Freitext-Merge-Field der aktiven Dauermedikation und matcht
Wirkstoff-/Handelsnamen per Substring (analog zur Gruppierungslogik in
w_group_key_v5 dort).
Gruppen: Metformin, SGLT2-Hemmer, DPP-4-Hemmer, GLP-1-Rezeptoragonisten,
Insulin.
Fixkombinationen zaehlen bewusst in MEHREREN Gruppen (z.B. Xultophy =
Insulin + GLP-1; Janumet = DPP-4 + Metformin). Jede Medikamentenzeile
wird unabhaengig gegen jede Gruppe geprueft – kein „erste Gruppe
gewinnt“.
PFLEGE
– Neue Praeparate: passendes Keyword (klein geschrieben) in die
betroffene(n) Gruppe(n) in w_dm_gruppen_v1() eintragen.
– Fixkombi mit zwei Wirkstoffklassen -> Keyword in BEIDE betroffenen
Gruppen eintragen (siehe Kommentare unten).
– INN-Wortstaemme (z.B. ‚glargin‘, ’semaglutid‘) fangen generische
Verordnungen/Biosimilars ab, ohne dass jeder Hersteller-Name einzeln
gepflegt werden muss.
========================================================================== */
$w_dm_raw_active = ‚{Medikamente:ASCII:DATUM}‘;
if (!function_exists(‚w_dm_gruppen_v1‘)) {
function w_dm_gruppen_v1() {
return array(
‚Metformin‘ => array(
‚metformin‘, ’siofor‘, ‚glucophage‘, ‚diabetase‘, ‚mediabet‘,
// Fixkombis mit Metformin (zweiter Wirkstoff steht zusaetzlich
// in seiner eigenen Gruppe unten)
’synjardy‘, ‚xigduo‘, ‚ebymect‘, ‚vokanamet‘, ’segluromet‘,
‚janumet‘, ‚velmetia‘, ‚ristfor‘, ‚eucreas‘, ‚icandra‘, ‚zomarist‘,
‚komboglyze‘, ‚jentadueto‘, ‚vipdomet‘,
),
‚SGLT2‘ => array(
‚empagliflozin‘, ‚jardiance‘, ‚dapagliflozin‘, ‚forxiga‘,
‚canagliflozin‘, ‚invokana‘, ‚ertugliflozin‘, ’steglatro‘,
// Fixkombis mit SGLT2-Anteil
’synjardy‘, ‚xigduo‘, ‚ebymect‘, ‚vokanamet‘, ’segluromet‘,
‚glyxambi‘, ’steglujan‘,
),
‚DPP4‘ => array(
’sitagliptin‘, ‚januvia‘, ‚xelevia‘, ‚vildagliptin‘, ‚galvus‘,
’saxagliptin‘, ‚onglyza‘, ‚linagliptin‘, ‚trajenta‘,
‚alogliptin‘, ‚vipidia‘,
// Fixkombis mit DPP4-Anteil
‚janumet‘, ‚velmetia‘, ‚ristfor‘, ‚eucreas‘, ‚icandra‘, ‚zomarist‘,
‚komboglyze‘, ‚jentadueto‘, ‚vipdomet‘, ‚glyxambi‘, ’steglujan‘,
),
‚GLP1‘ => array(
’semaglutid‘, ‚ozempic‘, ‚rybelsus‘, ‚wegovy‘,
‚dulaglutid‘, ‚trulicity‘, ‚liraglutid‘, ‚victoza‘, ’saxenda‘,
‚exenatid‘, ‚byetta‘, ‚bydureon‘, ‚tirzepatid‘, ‚mounjaro‘,
‚lixisenatid‘, ‚lyxumia‘,
// Fixkombi mit Basalinsulin + GLP-1
‚xultophy‘, ’suliqua‘,
),
‚Insulin‘ => array(
// INN-Staemme (fangen generische „Insulin glargin XY“-Biosimilars ab)
‚insulin‘, ‚glargin‘, ‚detemir‘, ‚degludec‘, ‚lispro‘, ‚aspart‘, ‚glulisin‘,
// Basalinsuline
‚lantus‘, ‚toujeo‘, ‚levemir‘, ‚tresiba‘, ‚abasaglar‘, ’semglee‘,
// Bolus/kurzwirksame Analoga
‚apidra‘, ’novorapid‘, ‚humalog‘, ‚liprolog‘, ‚fiasp‘, ‚trurapi‘,
// Humaninsuline/Mischinsuline (Novo-Nordisk-Produkte laufen
// 2026/27 aus, bleiben aber in Bestandslisten/Historie relevant)
‚actrapid‘, ‚actraphane‘, ‚insulatard‘, ‚protaphane‘, ‚mixtard‘, ’novomix‘,
‚insuman‘, ‚huminsulin‘, ‚berlinsulin‘,
// Kombi Basal+Bolus
‚ryzodeg‘,
// Fixkombi mit GLP-1
‚xultophy‘, ’suliqua‘,
),
);
}
}
if (!function_exists(‚w_dm_schnellinfo_v1‘)) {
function w_dm_schnellinfo_v1($raw_active) {
$lines = explode(„\n“, str_replace(array(„\r“, „\\par“, „\\pard“), „\n“, $raw_active));
$gruppen = w_dm_gruppen_v1();
$treffer = array();
foreach ($lines as $line) {
if (trim(strip_tags($line)) == “) continue;
$l = strtolower($line);
foreach ($gruppen as $name => $keywords) {
if (in_array($name, $treffer)) continue;
foreach ($keywords as $kw) {
if (strpos($l, $kw) !== false) { $treffer[] = $name; break; }
}
}
}
// Feste Anzeige-Reihenfolge statt Fund-Reihenfolge (lesbarer/vergleichbar)
$reihenfolge = array(‚Metformin‘, ‚SGLT2‘, ‚DPP4‘, ‚GLP1‘, ‚Insulin‘);
$sortiert = array();
foreach ($reihenfolge as $r) {
if (in_array($r, $treffer)) $sortiert[] = $r;
}
return $sortiert;
}
}
$w_dm_treffer = w_dm_schnellinfo_v1($w_dm_raw_active);
if (!empty($w_dm_treffer)) {
echo ‚DM-Therapie: ‚ . implode(‚ | ‚, $w_dm_treffer);
}
{/PHP}
-.- . ..-. -. . .–. .- -. .. -.- {…. / – – – . / – – .–. / … / – – – – – / – – – – – / -..-. / -..-. / –.. / . / .. / – / .-. / . / .. / …. / . / -. / -….- / -… / . / — / -… / .- / -.-. / …. / – / ..- / -. / –. / .-.-.- / -… / .-.. / — / –. / … / .–. / — / – / .-.-.- / -.-. / — / –}