Files
2026-03-20 17:13:38 +01:00

572 lines
17 KiB
PHP

<!DOCTYPE HTML>
<!--
Alpha by HTML5 UP
html5up.net | @n33co
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
-->
<html>
<head>
<?php
include('header.php');
?>
<title>Praxis Creutzburg - Rezepte anfordern</title>
<link rel="stylesheet" href="css/formulare.css" />
</head>
<body >
<!-- Header -->
<header id="header" class="../skel-layers-fixed">
<?php
include('menu.php');
include_once("inc/config.inc.php");
include_once("inc/functions.inc.php");
include_once('inc/functions.impfen.inc.php');
include_once('inc/functions.formulare.inc.php');
?>
</header>
<!-- Main -->
<section id="main" class="container">
<?php
echo showHeaderpraxis();
?>
<section class="box special">
<h2>Rezept und Formulare anfordern</h2>
<?php
if(isset($_POST["aktion"])){
if($_POST["aktion"] == "1"){
echo '<h4>Kontrollieren Sie Ihre Angaben!</h4><br>';
echo '<form action="'. $_SERVER['PHP_SELF'] .'" method=POST>';
echo '<table border="0">';
// Schleife durch Clemens 15.10.2018 - aktualisiert 01.02.2026
foreach ($_POST as $key => $value) {
if ($value === "" || $key === "submit" || $key === "aktion") {
continue;
}
if ($key === "category") {
$stmt = $pdo->prepare("
SELECT artname
FROM anfrageart
WHERE artid = :artid
LIMIT 1
");
$stmt->execute([
':artid' => $value
]);
$rowimpf = $stmt->fetch(PDO::FETCH_ASSOC);
$anfragearttext = $rowimpf['artname'] ?? '';
echo "<tr>
<td width='100' valign='top' class='fett'>{$key}:</td>
<td>" . htmlspecialchars($anfragearttext, ENT_QUOTES, 'UTF-8') . "</td>
</tr>\n";
echo "<input type='hidden' name='{$key}' value='" . htmlspecialchars($value, ENT_QUOTES, 'UTF-8') . "'>\n";
} else {
echo "<tr>
<td width='100' valign='top' class='fett'>{$key}:</td>
<td>" . htmlspecialchars($value, ENT_QUOTES, 'UTF-8') . "</td>
</tr>\n";
echo "<input type='hidden' name='{$key}' value='" . htmlspecialchars($value, ENT_QUOTES, 'UTF-8') . "'>\n";
}
}
echo '</table>';
echo '<input type="hidden" name="aktion" value="2" />';
echo '<input type="submit" value="Anfrage abschicken" />';
echo '</form >';
}else if($_POST["aktion"] == "2"){
$vorname = trim($_POST["Vorname"] ?? "");
$nachname = trim($_POST["Name"] ?? "");
$geburtstag = trim($_POST["Geburtsjahr"] ?? ""); // muss später YYYY-MM-DD sein
$email = trim($_POST["Email"] ?? "");
$tele = trim($_POST["Tel"] ?? "");
$plz = trim($_POST["plz"] ?? "");
$ort = trim($_POST["ort"] ?? "");
$strasse = trim($_POST["strasse"] ?? "");
$medikament1 = trim($_POST["Medikament1"] ?? "");
$medikament2 = trim($_POST["Medikament2"] ?? "");
$nachricht = trim($_POST["message"] ?? "");
$anforderungart = trim($_POST["category"] ?? "");
$abholung = $_POST["abholung"] ?? "Praxis";
if($abholung == "Praxis"){
$abholungnr="1";
}elseif($abholung == "Apotheke"){
$abholungnr="2";
}else{
$abholung == "Praxis";
$abholungnr="1";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
die("Ungültige E-Mail");
}
if (!$geburtstag) {
die("Geburtsdatum fehlt");
}
$karte = $_POST["karte"] ?? "";
if ($karte === "Privat") {
$karte = "Privatrezept (Selbstzahler)";
}
$nachricht = "Karte eingelesen: " . $karte . "<br>"."Abholungsort: " . $abholung . "<br>". $nachricht ;
// Impfstoff
//$impfstoff = $rowtime["impfstoff"];
$impfstofftext = null;
if (!empty($impfstoff)) {
$pdo = $pdo->prepare("SELECT impfname FROM impfstoff WHERE impfid = ?");
$pdo->execute([$impfstoff]);
$impfstofftext = $pdo->fetchColumn();
}
$sendmail = false;
$pdo->beginTransaction();
$stmt = $pdo->prepare("
INSERT INTO persons (vorname, nachname, email, geburtstag, tele, ort, plz, strasse)
VALUES (:vorname, :nachname, :email, :geburtstag, :tele, :ort, :plz, :strasse)
ON DUPLICATE KEY UPDATE
vorname = VALUES(vorname),
nachname = VALUES(nachname),
tele = VALUES(tele),
ort = VALUES(ort),
plz = VALUES(plz),
strasse = VALUES(strasse),
updated_at = CURRENT_TIMESTAMP
");
$stmt->execute([
':vorname' => $vorname,
':nachname' => $nachname,
':email' => $email,
':geburtstag' => $geburtstag,
':tele' => $tele,
':ort' => $ort,
':plz' => $plz,
':strasse' => $strasse
]);
// person_id holen (weil ON DUPLICATE nicht zuverlässig lastInsertId liefert)
$stmt = $pdo->prepare("SELECT person_id FROM persons WHERE email = ? AND geburtstag = ?");
$stmt->execute([$email, $geburtstag]);
$person_id = (int)$stmt->fetchColumn();
if (!$person_id) {
$pdo->rollBack();
die("Keine eindeutige Kennung (person_id)");
}else{
$hashvorher = $vorname . $nachname . $Email;
$hash = md5($hashvorher) . date("YmdHs");
$sendmail = true;
$med = [
1 => $medikament1,
2 => $medikament2,
3 => '',
4 => '',
5 => '',
6 => ''
];
$exists = false;
try {
$stmtDup = $pdo->prepare("
SELECT *
FROM anfragen
WHERE requester_person_id = :pid
AND anforderungart = :art
AND nachricht = :nachricht
AND create_time >= DATE_SUB(NOW(), INTERVAL 7 DAY)
");
$stmtDup->execute([
':pid' => $person_id,
':art' => $anforderungart,
':nachricht' => $nachricht
]);
$rows = $stmtDup->fetchAll(PDO::FETCH_ASSOC);
$medFieldAliases = [
1 => ['med1', 'medikament1', 'med_1'],
2 => ['med2', 'medikament2', 'med_2'],
3 => ['med3', 'medikament3', 'med_3'],
4 => ['med4', 'medikament4', 'med_4'],
5 => ['med5', 'medikament5', 'med_5'],
6 => ['med6', 'medikament6', 'med_6']
];
foreach ($rows as $row) {
$allMedsEqual = true;
for ($i = 1; $i <= 6; $i++) {
$dbValue = '';
foreach ($medFieldAliases[$i] as $fieldName) {
if (array_key_exists($fieldName, $row)) {
$dbValue = trim((string)($row[$fieldName] ?? ''));
break;
}
}
if ($dbValue !== $med[$i]) {
$allMedsEqual = false;
break;
}
}
if ($allMedsEqual) {
$exists = true;
break;
}
}
} catch (Throwable $t) {
error_log('Duplicate check failed in rezepte.php: ' . $t->getMessage());
$exists = false;
}
if (!$exists) {
$stmt = $pdo->prepare("
INSERT INTO anfragen
(requester_person_id, anforderungart, medikament1, medikament2,
nachricht, hash, create_time, ordnungsid, abholort, sicherenachricht,
source, created_by_account_id)
VALUES
(?, ?, ?, ?, ?, ?, NOW(), '1', ?, '0', 'mail', NULL)
");
$stmt->execute([
$person_id,
$anforderungart,
$medikament1,
$medikament2,
$nachricht,
$hash,
$abholungnr
]);
$anfrageid = (int)$pdo->lastInsertId();
$pdo->commit();
SendMailMessageVorlage($pdo, "3", $anfrageid , "18" );
echo "<h3>Nachricht abgeschickt!</h3><br>Sie bekommen eine Bestätigung per E-Mail!<br>Überprüfen Sie auch Ihren Spam-Filter!<br><br>Sie werden gleich weitergeleitet.<br> ";
header("refresh:15;rezepte.php");
}else{
if ($pdo->inTransaction()) {
$pdo->rollBack();
}
echo "<h3>Doppelte Anfrage</h3><br>Ihre Anfrage wurde schon in unserem System gespeichert.<br>Sie haben die identische Anfrage schon in den letzten sieben Tagen eingereicht.<br>Bitte warten Sie auf die Verarbeitung Ihrer Anfrage.<br><br>";
header("refresh:15;rezepte.php");
}
}
}
}else{
?>
<p>Wiederholungsrezepte und Formulare anfordern, nur nach ärztlicher Absprache und Kontakt. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.<br>
<br>Benutzen Sie eine Email-Adresse auf die Sie direkt zugreifen können. Bitte bestätigen Sie dann den Link in der Email. So können wir Ihnen im Verlauf den Stand der Bearbeitung Ihrer Anfrage sicher mitteilen.
<br><br><br>
Stellen Sie wiederholt Anfragen an die Praxis Creutzburg? <br>
Wollen Sie bis zu sechs Medikamente gleichzeitig beantragen?<br>
Benötigen Sie ein längeres Textfeld?<br>
<br>Dann nutzen Sie auch unseren <a href="https://www.praxis-creutzburg.de/intern/">Internen Bereich</a> für Patienten.</p><br>
<h4>Nutzen Sie unsere neue Datei-Upload-Funktion! </h4>
Sie können damit dem Praxis-Team Unterlagen per PDF zur Verfügung stellen.<br>
Den Upload finden Sie hier: <a href="https://praxis-creutzburg.de/dateiupload.php">Datei-Upload</a><br>
</header>
<div class="row">
<div class="12u">
<!-- Form -->
<section class="box">
<?php
// Urlaubsabfrage
$today = date("Y-m-d");
$stmt = $pdo->prepare("
SELECT urlaubid
FROM urlaub
WHERE start <= ?
AND ende >= ?
LIMIT 1
");
$stmt->execute([$today, $today]);
$urlaubid = $stmt->fetchColumn();
if (!$urlaubid) {
?>
<h3>Formular bitte ausfüllen und abschicken</h3>
<p>Gehen Sie nach unten zum Formular und füllen Sie es (wie gewohnt) aus.</p>
<?php echo '<form action="'. $_SERVER['PHP_SELF'] .'" method=POST>';
echo '<input type="hidden" name="aktion" id="aktion" value="1" />';
?>
<div class="row uniform 50%">
<?php
echo ShowFormularFragenBenutzer();
?>
</div>
<div class="row uniform 50%">
<br><br>
<div class="12u">
<label for="category">Ich benötige ein Rezept für:</label>
<div class="select-wrapper">
<select name="category" id="category" required >
<option value=""> Bitte wählen Sie aus</option>
<?php
$stmt = $pdo->prepare("
SELECT artid, artname
FROM anfrageart
WHERE rezept = 1
");
$stmt->execute();
while ($rowimpf = $stmt->fetch(PDO::FETCH_ASSOC)) {
$artname = $rowimpf["artname"];
$artid = $rowimpf["artid"];
?>
<option value="<?php echo htmlspecialchars($artid, ENT_QUOTES, 'UTF-8'); ?>">
<?php echo htmlspecialchars($artname, ENT_QUOTES, 'UTF-8'); ?>
</option>
<?php
}
?>
</select>
<div id="AstraInfobox"></div>
</div>
</div>
</div>
<div class="row uniform 50%">
<br><br>
<div class="12u">
<?php
$curdate = date('d.m.Y', time());
$curyear = date('Y', time());
$curMonth = date("m", time());
$curQuarter = ceil($curMonth/3);
$current_quarter = ceil(date('n') / 3);
$first_date = date('d.m.Y', strtotime(date('Y') . '-' . (($current_quarter * 3) - 2) . '-1'));
$last_date = date('t.m.Y', strtotime(date('Y') . '-' . (($current_quarter * 3)) . '-1'));
?>
<label for="category">Ich habe dieses Quartal schon meine Gesundheitskarte in der Praxis einlesen lassen:</label>
Aktuell befinden wir uns im <?php echo $curQuarter;?>. Quartal von <?php echo $curyear;?>. <br>
Dieses geht vom <b><?php echo $first_date;?> bis <?php echo $last_date;?></b> <br>
Heute ist der <?php echo $curdate ;?>.<br>Diese Angaben werden bei der Bearbeitung von unserem Praxisteam überprüft.<br>
War die Chipkarte dieses Quartal noch nicht eingelesen, ist die Abholung nur in der Praxis möglich.
<div class="select-wrapper">
<select name="karte" id="karte" required onchange="checkkarte()">
<option value=""> Bitte wählen Sie aus</option>
<option value="Ja">Ja</option>
<option value="Nein">Nein</option>
<option value="Privat">Privatrezept (Selbstzahler)</option>
</select>
</div>
</div>
</div>
<div class="row uniform 50%">
<br><br>
<div class="12u">
<label for="abholung">Ich möchte das Rezept hier abholen:</label>
<div class="select-wrapper">
<select name="abholung" id="abholung" required onchange="checkkarte()">
<option value=""> Bitte wählen Sie aus</option>
<option value="Praxis">Praxis Creutzburg</option>
<option value="Apotheke">Apotheke</option>
</select>
</div>
<input type="hidden" name="abholungh" value="" />
</div>
</div>
<br><br>
<div class="row uniform 50%">
<div class="6u 12u(3)">
<input type="text"name="Medikament1" size=2 maxlength="80" placeholder="Medikament, Wirkstoff, Packungsgröße" maxlength="150" />
</div>
<div class="6u 12u(3)">
<input type="text"name="Medikament2" size=2 maxlength="80" placeholder="Medikament, Wirkstoff, Packungsgröße" maxlength="150" />
</div>
<div class="12u">
<textarea name="message" id="message" placeholder="Ihre Nachricht/Bemerkung" rows="6" maxlength="150"></textarea>
</div>
</div>
<div class="row uniform">
<div class="12u">
<br>
Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.<br>
Ihre Daten werden HTTPS-verschlüsselt an unser System übertragen. Sie erhalten die Antwort per E-Mail mit TLS-Verschlüsselung. Mit Absenden Ihrer Anfrage stimmen Sie diesen Bedingungen zu.<br>
<br>Wünschen Sie eine vollständige HTTPS-verschlüsselte Kommunikation mit dem Praxisteam, dann nutzen Sie unseren <a href="https://www.praxis-creutzburg.de/intern/">Internen Bereich</a> für Patienten.<br>
</div>
</div>
<div class="row uniform">
<div class="12u">
<ul class="actions">
<li><input type="submit" value="Abschicken" onclick="checkkarte()" /></li>
<li><input type="reset" value="Reset" class="alt" /></li>
</ul>
</div>
</div>
</form>
<hr />
<script>
function checkkarte(){
if(document.getElementById('karte').value == "Nein" ) {
document.getElementById('abholung').value = "Praxis"
}
}
</script>
<?php }else{
echo "<h2>Praxis im Urlaub</h2>";
echo "Wir befinden uns aktuell im Urlaub.<br>Wenden Sie sich an unsere Vertretung oder warten Sie bis nach unserem Urlaub mit Ihrer Anfrage.<br><br>";
$today = date("Y-m-d");
$stmt = $pdo->prepare("
SELECT ende, vertretung, vertretertelefon, vertreteradresse, vertreterurl
FROM urlaub
WHERE start <= :today
AND ende >= :today
ORDER BY ende DESC
LIMIT 1
");
$stmt->execute([':today' => $today]);
$row = $stmt->fetch(); // liefert Array oder false
if ($row) {
$vertreter = $row["vertretung"] ?? null;
$vertretertelefon = $row["vertretertelefon"] ?? null;
$vertreteradresse = $row["vertreteradresse"] ?? null;
$vertreterurl = $row["vertreterurl"] ?? null;
$ende = $row["ende"] ?? null;
if ($ende) {
$endeausgabe = date("d.m.Y", strtotime("+1 day", strtotime($ende)));
} else {
$endeausgabe = null;
}
if (!empty($vertreter)) {
echo "Unsere Vertretung: " . htmlspecialchars($vertreter, ENT_QUOTES, 'UTF-8') . "<br>";
}
if (!empty($vertreterurl)) {
// optional: URL escapen/validieren
echo "Webseite Vertretung: " . htmlspecialchars($vertreterurl, ENT_QUOTES, 'UTF-8') . "<br>";
}
if (!empty($vertretertelefon)) {
echo "Telefonischer Kontakt Vertretung: " . htmlspecialchars($vertretertelefon, ENT_QUOTES, 'UTF-8') . "<br>";
}
if (!empty($vertreteradresse)) {
echo "Adresse Vertretung: " . htmlspecialchars($vertreteradresse, ENT_QUOTES, 'UTF-8') . "<br>";
}
if ($endeausgabe) {
echo "<br>Wir stehen Ihnen ab dem " . htmlspecialchars($endeausgabe, ENT_QUOTES, 'UTF-8') . " wieder zur Verfügung.<br><br><br>";
}
}
?>
<form action="index.php" method=POST>
<input type=submit class=button value="Zurück">
</form>
<?php
}
}
?>
</div>
</div>
</section>
<?php
include_once('footer.php');
?>
</body>
</html>