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:
2026-09-08 17:41:36 +02:00
co-authored by Claude Opus 5
parent e39c00105e
commit 4dabad0b22
2 changed files with 56 additions and 2 deletions
+43 -1
View File
@@ -646,10 +646,52 @@ function GetSprachnachrichtHinweis($source){
return "";
}
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>";
}
/**
* 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){
if($Patientenart == "0"){
$impfenangebot = "Neupatient";