Anrufernummer verlinken, PraxisKI-Link auf /anfragen/
Der Hinweis aus dem letzten Commit zeigte auf die Startseite von PraxisKI. Richtig ist https://ki-praxis.praxis.local/anfragen/. Neue Spalte anfragen.anrufernummer VARCHAR(255) NULL wird jetzt bei Telefonanfragen als anklickbarer tel:-Link ausgegeben. GetTelefonLink() baut das Ziel aus Ziffern und einem fuehrenden Plus, zeigt die Nummer aber unveraendert an - Leerzeichen, Klammern, Slashes und Durchwahl-Bindestriche stoeren den Link damit nicht. Nummern ganz ohne Ziffer, etwa bei unterdrueckter Rufnummer, bleiben Text ohne Link. Der Rohwert wird in der Funktion maskiert. GetAnruferZeile() liefert die beschriftete Zeile nur fuer source='telefon' und nur, wenn eine Nummer da ist. In der Liste steht sie in der Kontaktspalte, wo Telefonnummern hingehoeren; dort ersetzt sie bei Anfragen ohne zugeordneten Patienten den Platzhalter "Kontaktdaten siehe Nachricht". In Antwortformular, Hinweisseite, Antwort einsehen und Patientenhistorie steht sie bei den uebrigen Anfrageinformationen. Die Abfragen der letzten beiden lasen die Spalte nicht mit, sie ist dort ergaenzt. Die Spalte ist derzeit in allen 309 Telefonanfragen NULL - die Anlage schreibt sie noch nicht. Bis dahin aendert sich die Anzeige nicht, der bisherige Rueckfall greift. Geprueft: GetTelefonLink gegen internationale, geklammerte, mit Leerzeichen und Durchwahl geschriebene Nummern sowie gegen Leerwert, NULL, reinen Text und einen Injektionsversuch - das Script kommt maskiert heraus, nicht als Markup. Listenlogik ueber alle 12789 Anfragen mit simulierter Nummer durchgerechnet: der Link erscheint genau dann, wenn source='telefon' ist und eine Nummer vorliegt, und Nicht-Telefonzeilen bekommen kein zusaetzliches <br> in die Kontaktspalte. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+13
-1
@@ -252,14 +252,20 @@ if(!check_worker()){
|
|||||||
// werden konnte. Frueher fielen diese Zeilen durch den INNER
|
// werden konnte. Frueher fielen diese Zeilen durch den INNER
|
||||||
// JOIN komplett aus der Liste.
|
// JOIN komplett aus der Liste.
|
||||||
$hatPerson = ($row["vorname"] !== null || $row["nachname"] !== null);
|
$hatPerson = ($row["vorname"] !== null || $row["nachname"] !== null);
|
||||||
|
// Die Anlage haelt die Rufnummer des Anrufers getrennt von den
|
||||||
|
// Stammdaten - sie kann von der hinterlegten abweichen.
|
||||||
|
$anruferzeile = GetAnruferZeile($row["source"] ?? "mail", $row["anrufernummer"] ?? null);
|
||||||
if($hatPerson){
|
if($hatPerson){
|
||||||
$userausgabe = $vorname . " " . $nachname . "<br>" . $ausgabegeburstag;
|
$userausgabe = $vorname . " " . $nachname . "<br>" . $ausgabegeburstag;
|
||||||
$adresse = $plz . " " . $ort . "<br>" . $strasse ;
|
$adresse = $plz . " " . $ort . "<br>" . $strasse ;
|
||||||
$kontakt = "$mail <br>Tel:<a href='tel:$tel'>$tel</a>";
|
$kontakt = "$mail <br>Tel:<a href='tel:$tel'>$tel</a>";
|
||||||
|
if($anruferzeile !== ""){
|
||||||
|
$kontakt .= "<br>" . $anruferzeile;
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
$userausgabe = "<i>Kein Patient zugeordnet</i>";
|
$userausgabe = "<i>Kein Patient zugeordnet</i>";
|
||||||
$adresse = "-";
|
$adresse = "-";
|
||||||
$kontakt = "<i>Kontaktdaten siehe Nachricht</i>";
|
$kontakt = ($anruferzeile !== "") ? $anruferzeile : "<i>Kontaktdaten siehe Nachricht</i>";
|
||||||
}
|
}
|
||||||
echo "<tr style='background-color:". $farbe. ";'><td>$userausgabe <br> $kontakt</td><td>$adresse</td><td>$ordnungsstring - $anfrageart <br>$WeitereInfos</td><td>$datumausgabe</td><td>$update_time<br>$checkausgabe<br>$ausgabeworker</td><td>";
|
echo "<tr style='background-color:". $farbe. ";'><td>$userausgabe <br> $kontakt</td><td>$adresse</td><td>$ordnungsstring - $anfrageart <br>$WeitereInfos</td><td>$datumausgabe</td><td>$update_time<br>$checkausgabe<br>$ausgabeworker</td><td>";
|
||||||
// "Antworten" verschickt eine Mailvorlage. Ohne zugeordnete Person
|
// "Antworten" verschickt eine Mailvorlage. Ohne zugeordnete Person
|
||||||
@@ -354,6 +360,7 @@ if(!check_worker()){
|
|||||||
echo "Bitte telefonisch beantworten und die Anfrage anschliessend ";
|
echo "Bitte telefonisch beantworten und die Anfrage anschliessend ";
|
||||||
echo "ueber <b>Telefonisch beantwortet</b> abschliessen.";
|
echo "ueber <b>Telefonisch beantwortet</b> abschliessen.";
|
||||||
echo "</div>";
|
echo "</div>";
|
||||||
|
echo GetAnruferZeile($row["source"] ?? "mail", $row["anrufernummer"] ?? null);
|
||||||
echo GetSprachnachrichtHinweis($row["source"] ?? "mail");
|
echo GetSprachnachrichtHinweis($row["source"] ?? "mail");
|
||||||
echo "<b>Nachricht:</b><br>" . nl2br(e((string)$row["nachricht"])) . "<br><br>";
|
echo "<b>Nachricht:</b><br>" . nl2br(e((string)$row["nachricht"])) . "<br><br>";
|
||||||
ZuruckzumAnfrageOverView();
|
ZuruckzumAnfrageOverView();
|
||||||
@@ -402,6 +409,7 @@ if(!check_worker()){
|
|||||||
$antworttext = $row["antworttext"] ?? null;
|
$antworttext = $row["antworttext"] ?? null;
|
||||||
|
|
||||||
$WeitereInfos = "";
|
$WeitereInfos = "";
|
||||||
|
$WeitereInfos .= GetAnruferZeile($row["source"] ?? "mail", $row["anrufernummer"] ?? null);
|
||||||
$WeitereInfos .= GetSprachnachrichtHinweis($row["source"] ?? "mail");
|
$WeitereInfos .= GetSprachnachrichtHinweis($row["source"] ?? "mail");
|
||||||
if ($medikamenteins) $WeitereInfos .= "Medikament1: $medikamenteins<br>";
|
if ($medikamenteins) $WeitereInfos .= "Medikament1: $medikamenteins<br>";
|
||||||
if ($medikamentzwei) $WeitereInfos .= "Medikament2: $medikamentzwei<br>";
|
if ($medikamentzwei) $WeitereInfos .= "Medikament2: $medikamentzwei<br>";
|
||||||
@@ -1085,6 +1093,7 @@ if(!check_worker()){
|
|||||||
a.sicherenachricht,
|
a.sicherenachricht,
|
||||||
a.abholort,
|
a.abholort,
|
||||||
a.source,
|
a.source,
|
||||||
|
a.anrufernummer,
|
||||||
|
|
||||||
p.person_id,
|
p.person_id,
|
||||||
p.vorname,
|
p.vorname,
|
||||||
@@ -1141,6 +1150,7 @@ if(!check_worker()){
|
|||||||
|
|
||||||
/* --- Anzeige-Strings --- */
|
/* --- Anzeige-Strings --- */
|
||||||
$WeitereInfos = "";
|
$WeitereInfos = "";
|
||||||
|
$WeitereInfos .= GetAnruferZeile($row["source"] ?? "mail", $row["anrufernummer"] ?? null);
|
||||||
$WeitereInfos .= GetSprachnachrichtHinweis($row["source"] ?? "mail");
|
$WeitereInfos .= GetSprachnachrichtHinweis($row["source"] ?? "mail");
|
||||||
if (!empty($medikamenteins)) {
|
if (!empty($medikamenteins)) {
|
||||||
$WeitereInfos .= "Medikament1: " . htmlspecialchars($medikamenteins, ENT_QUOTES, 'UTF-8') . "<br>";
|
$WeitereInfos .= "Medikament1: " . htmlspecialchars($medikamenteins, ENT_QUOTES, 'UTF-8') . "<br>";
|
||||||
@@ -1333,6 +1343,7 @@ if(!check_worker()){
|
|||||||
a.medikament5,
|
a.medikament5,
|
||||||
a.medikament6,
|
a.medikament6,
|
||||||
a.source,
|
a.source,
|
||||||
|
a.anrufernummer,
|
||||||
|
|
||||||
aa.artname AS anfrageart_name,
|
aa.artname AS anfrageart_name,
|
||||||
|
|
||||||
@@ -1393,6 +1404,7 @@ if(!check_worker()){
|
|||||||
$ordnungsstring = GetOrdnungsid($ordnungsid);
|
$ordnungsstring = GetOrdnungsid($ordnungsid);
|
||||||
|
|
||||||
$WeitereInfos = "";
|
$WeitereInfos = "";
|
||||||
|
$WeitereInfos .= GetAnruferZeile($row["source"] ?? "mail", $row["anrufernummer"] ?? null);
|
||||||
$WeitereInfos .= GetSprachnachrichtHinweis($row["source"] ?? "mail");
|
$WeitereInfos .= GetSprachnachrichtHinweis($row["source"] ?? "mail");
|
||||||
if (!empty($med1)) $WeitereInfos .= "Medikament1: " . htmlspecialchars($med1, ENT_QUOTES, 'UTF-8') . "<br>";
|
if (!empty($med1)) $WeitereInfos .= "Medikament1: " . htmlspecialchars($med1, ENT_QUOTES, 'UTF-8') . "<br>";
|
||||||
if (!empty($med2)) $WeitereInfos .= "Medikament2: " . htmlspecialchars($med2, ENT_QUOTES, 'UTF-8') . "<br>";
|
if (!empty($med2)) $WeitereInfos .= "Medikament2: " . htmlspecialchars($med2, ENT_QUOTES, 'UTF-8') . "<br>";
|
||||||
|
|||||||
+43
-1
@@ -646,10 +646,52 @@ function GetSprachnachrichtHinweis($source){
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
return "Transkript der Sprachnachricht - Aufnahme anhören: "
|
return "Transkript der Sprachnachricht - Aufnahme anhören: "
|
||||||
. "<a href=\"https://ki-praxis.praxis.local/\" target=\"_blank\" rel=\"noopener\">ki-praxis.praxis.local</a>"
|
. "<a href=\"https://ki-praxis.praxis.local/anfragen/\" target=\"_blank\" rel=\"noopener\">ki-praxis.praxis.local/anfragen</a>"
|
||||||
. " (nur im Praxisnetz)<br>";
|
. " (nur im Praxisnetz)<br>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Telefonnummer als anklickbaren tel:-Link ausgeben.
|
||||||
|
*
|
||||||
|
* Der Link vertraegt nur Ziffern und ein fuehrendes Plus; Klammern,
|
||||||
|
* Leerzeichen und Bindestriche fliegen fuer das Ziel raus, angezeigt wird
|
||||||
|
* die Nummer unveraendert. Nummern ohne jede Ziffer - etwa "unterdrueckt"
|
||||||
|
* bei unterdrueckter Rufnummer - werden nur als Text ausgegeben.
|
||||||
|
* Erwartet den Rohwert aus der Datenbank und maskiert selbst.
|
||||||
|
*/
|
||||||
|
function GetTelefonLink($nummer){
|
||||||
|
$nummer = trim((string)$nummer);
|
||||||
|
if($nummer === ""){
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
$ziel = preg_replace('/[^0-9]/', '', $nummer);
|
||||||
|
if($ziel === ""){
|
||||||
|
return htmlspecialchars($nummer, ENT_QUOTES, 'UTF-8');
|
||||||
|
}
|
||||||
|
if(substr($nummer, 0, 1) === "+"){
|
||||||
|
$ziel = "+" . $ziel;
|
||||||
|
}
|
||||||
|
return "<a href=\"tel:" . htmlspecialchars($ziel, ENT_QUOTES, 'UTF-8') . "\">"
|
||||||
|
. htmlspecialchars($nummer, ENT_QUOTES, 'UTF-8') . "</a>";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rufnummer des Anrufers als beschriftete Zeile.
|
||||||
|
*
|
||||||
|
* anfragen.anrufernummer fuellt die Telefonanlage; steht dort nichts, gibt
|
||||||
|
* es keine Zeile. Fuer alle Herkuenfte ausser "telefon" leer.
|
||||||
|
*/
|
||||||
|
function GetAnruferZeile($source, $anrufernummer){
|
||||||
|
if($source != "telefon"){
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
$link = GetTelefonLink($anrufernummer);
|
||||||
|
if($link === ""){
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return "Anruf von: " . $link . "<br>";
|
||||||
|
}
|
||||||
|
|
||||||
function GetPatientenartName($Patientenart){
|
function GetPatientenartName($Patientenart){
|
||||||
if($Patientenart == "0"){
|
if($Patientenart == "0"){
|
||||||
$impfenangebot = "Neupatient";
|
$impfenangebot = "Neupatient";
|
||||||
|
|||||||
Reference in New Issue
Block a user