Variable Patientenalter
Zitat von Sebastian Fornaschon am 27. Juni 2025, 16:13 UhrVielen Dank für die schnelle Reaktion. Bei einem Geburtsdatum von 23.06.2021 wirft das Skript aber „2025 Jahre, 6 Monate und 27 Tage“ aus. Da ist irgendwo noch ein Fehler. Mit meinen rudimentärem Verständnis sehe ich aber nicht wo …
Habe noch mal eine alternative mit den Tagen gefunden. Ist nicht exakt wg. Schaltjahren etc aber reicht für meine Bedürfnisse:
{PHP} $alter = "{Patient.AlterTage}"; $jahre = floor($alter / 365); $rest = $alter - ($jahre * 365); $monate = floor ($rest / 30.4); $tage = $rest - ($monate * 30.4); echo $jahre . " Jahre, " . $monate . " Monate und " . $tage . " Tage."; {/PHP}
Vielen Dank für die schnelle Reaktion. Bei einem Geburtsdatum von 23.06.2021 wirft das Skript aber „2025 Jahre, 6 Monate und 27 Tage“ aus. Da ist irgendwo noch ein Fehler. Mit meinen rudimentärem Verständnis sehe ich aber nicht wo …
Habe noch mal eine alternative mit den Tagen gefunden. Ist nicht exakt wg. Schaltjahren etc aber reicht für meine Bedürfnisse:
{PHP}
$alter = "{Patient.AlterTage}";
$jahre = floor($alter / 365);
$rest = $alter - ($jahre * 365);
$monate = floor ($rest / 30.4);
$tage = $rest - ($monate * 30.4);
echo $jahre . " Jahre, " . $monate . " Monate und " . $tage . " Tage.";
{/PHP}
Zitat von Peter Quick am 27. Juni 2025, 22:17 UhrIch habe das Skript mal durch Google Gemini gejagt, der Code ist korrekt. Es könnte am Format der Eingabe liegen. Hier der Vorschlag von Gemini, müßte,man nur noch die Datumsübergabe anpassen. Der Code ab php 5.3 wären übrigens 5 Zeilen… -))) Indamed sollte dringend das php upgraden….
<?php // --- EINGABEDATEN --- // Hier werden die Daten von deinem System eingesetzt. // Zum Testen setzen wir feste Werte: $geburtsdatum_str = "28.10.1990"; // Beispiel: "{Patient.Geburtdatum}" $heute_str = "27.06.2025"; // Beispiel: "{Datum}" // --- DATUMSTEILE EXTRAHIEREN --- // Wir prüfen, ob das Format stimmt, indem wir zählen, wie viele Teile entstehen. $g_teile = explode('.', $geburtsdatum_str); $h_teile = explode('.', $heute_str); // --- ABSICHERUNG --- // Das Skript wird nur ausgeführt, wenn beide Daten das korrekte Format (Tag.Monat.Jahr) haben. if (count($g_teile) == 3 && count($h_teile) == 3) { // list() ist hier eine gute Wahl, um die Teile zuzuweisen. list($g_tag, $g_monat, $g_jahr) = $g_teile; list($h_tag, $h_monat, $h_jahr) = $h_teile; // In Integer umwandeln, um damit rechnen zu können. $g_tag = (int)$g_tag; $g_monat = (int)$g_monat; $g_jahr = (int)$g_jahr; $h_tag = (int)$h_tag; $h_monat = (int)$h_monat; $h_jahr = (int)$h_jahr; // --- BERECHNUNG DER DIFFERENZ --- $jahre = $h_jahr - $g_jahr; $monate = $h_monat - $g_monat; $tage = $h_tag - $g_tag; // --- KORREKTUR, FALLS TAGE NEGATIV SIND --- // Wenn die Tage im Minus sind, "borgen" wir uns einen Monat. if ($tage < 0) { $monate -= 1; // Wir brauchen die Anzahl der Tage des Vormonats. $vor_monat = $h_monat - 1; $vor_jahr = $h_jahr; if ($vor_monat == 0) { $vor_monat = 12; $vor_jahr--; } // cal_days_in_month() ist die korrekte Funktion hierfür und in PHP 5.2 verfügbar. $tage += cal_days_in_month(CAL_GREGORIAN, $vor_monat, $vor_jahr); } // --- KORREKTUR, FALLS MONATE NEGATIV SIND --- // Wenn die Monate im Minus sind, "borgen" wir uns ein Jahr. if ($monate < 0) { $jahre -= 1; $monate += 12; } echo $jahre . " Jahre, " . $monate . " Monate und " . $tage . " Tage"; } else { // Fehlermeldung, falls die Eingabedaten nicht stimmen. echo "Fehler: Ungültiges Datumsformat. Bitte TT.MM.JJJJ verwenden."; } ?>
Ich habe das Skript mal durch Google Gemini gejagt, der Code ist korrekt. Es könnte am Format der Eingabe liegen. Hier der Vorschlag von Gemini, müßte,man nur noch die Datumsübergabe anpassen. Der Code ab php 5.3 wären übrigens 5 Zeilen… -))) Indamed sollte dringend das php upgraden….
<?php
// --- EINGABEDATEN ---
// Hier werden die Daten von deinem System eingesetzt.
// Zum Testen setzen wir feste Werte:
$geburtsdatum_str = "28.10.1990"; // Beispiel: "{Patient.Geburtdatum}"
$heute_str = "27.06.2025"; // Beispiel: "{Datum}"
// --- DATUMSTEILE EXTRAHIEREN ---
// Wir prüfen, ob das Format stimmt, indem wir zählen, wie viele Teile entstehen.
$g_teile = explode('.', $geburtsdatum_str);
$h_teile = explode('.', $heute_str);
// --- ABSICHERUNG ---
// Das Skript wird nur ausgeführt, wenn beide Daten das korrekte Format (Tag.Monat.Jahr) haben.
if (count($g_teile) == 3 && count($h_teile) == 3) {
// list() ist hier eine gute Wahl, um die Teile zuzuweisen.
list($g_tag, $g_monat, $g_jahr) = $g_teile;
list($h_tag, $h_monat, $h_jahr) = $h_teile;
// In Integer umwandeln, um damit rechnen zu können.
$g_tag = (int)$g_tag;
$g_monat = (int)$g_monat;
$g_jahr = (int)$g_jahr;
$h_tag = (int)$h_tag;
$h_monat = (int)$h_monat;
$h_jahr = (int)$h_jahr;
// --- BERECHNUNG DER DIFFERENZ ---
$jahre = $h_jahr - $g_jahr;
$monate = $h_monat - $g_monat;
$tage = $h_tag - $g_tag;
// --- KORREKTUR, FALLS TAGE NEGATIV SIND ---
// Wenn die Tage im Minus sind, "borgen" wir uns einen Monat.
if ($tage < 0) {
$monate -= 1;
// Wir brauchen die Anzahl der Tage des Vormonats.
$vor_monat = $h_monat - 1;
$vor_jahr = $h_jahr;
if ($vor_monat == 0) {
$vor_monat = 12;
$vor_jahr--;
}
// cal_days_in_month() ist die korrekte Funktion hierfür und in PHP 5.2 verfügbar.
$tage += cal_days_in_month(CAL_GREGORIAN, $vor_monat, $vor_jahr);
}
// --- KORREKTUR, FALLS MONATE NEGATIV SIND ---
// Wenn die Monate im Minus sind, "borgen" wir uns ein Jahr.
if ($monate < 0) {
$jahre -= 1;
$monate += 12;
}
echo $jahre . " Jahre, " . $monate . " Monate und " . $tage . " Tage";
} else {
// Fehlermeldung, falls die Eingabedaten nicht stimmen.
echo "Fehler: Ungültiges Datumsformat. Bitte TT.MM.JJJJ verwenden.";
}
?>
Zitat von Sebastian Fornaschon am 4. Juli 2025, 10:19 UhrMoin,
noch eine Frage zu den Einsatzmöglichkeiten von PHP in MO. Ich bin dabei den Terminkalender für nächstes Jahr frei zu schalten. Kann ich PHP auch als Eintragstext bei zyklischen Terminen benutzen?
Wir blocken Zeitkontingente, die ab einer gewissen Vorlaufzeit freigeben werden. Hier wäre es perfekt wenn über PHP der Eintrag: „Freigegeben für Termine ab dem XX.YY.ZZ“ auftraucht. Dann wissen die MFA ab wann sie in den Zeitkontingenten Termine legen dürfen.
Moin,
noch eine Frage zu den Einsatzmöglichkeiten von PHP in MO. Ich bin dabei den Terminkalender für nächstes Jahr frei zu schalten. Kann ich PHP auch als Eintragstext bei zyklischen Terminen benutzen?
Wir blocken Zeitkontingente, die ab einer gewissen Vorlaufzeit freigeben werden. Hier wäre es perfekt wenn über PHP der Eintrag: „Freigegeben für Termine ab dem XX.YY.ZZ“ auftraucht. Dann wissen die MFA ab wann sie in den Zeitkontingenten Termine legen dürfen.