====== BKK Pflegefinder Daten exportieren ====== Auf der Suchseite des [[https://pflegefinder.bkk-dachverband.de/|BKK Pflegefinders]] kann man bequem nach vielen Kriterien filtern, um eine Liste mit Pflegeheimen zu erhalten. Eventuell benötigt man aber die Daten in einer Excel-Liste, um die Institutionen abzutelefonieren und sich in eigenen Spalten z.B. Notizen hinzu zu fügen? Hier ein kurzes Tutorial, um Suchergebnisse des BKK Pflegefinders als Excel-Liste zu exportieren. ===== Benötigte Werkzeuge ===== * [[https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwimm6Xl4fH9AhVQTKQEHay1CN0QFnoECAoQAQ&url=https%3A%2F%2Fcurl.se%2F&usg=AOvVaw0oc3LfIV2zPzc8rVOg4kq6|cURL]]: zum Download der Daten von der BKK-Seite * [[https://stedolan.github.io/jq/|jq]]: zum Aufbereiten der JSON-Daten als CSV * [[https://git-scm.com/downloads|Git Bash]]: zum Ausführen der Befehle ===== Daten exportieren ===== Zuerst werden die Daten als JSON abgerufen. Netterweise stellt der BKK Pflegefinder auf der Webseite die Daten der Pflegeheime im Hintergrund über eine REST API zur Verfügung. Ich teste die API-Aufrufe, indem ich in der Weboberfläche die Suche ausführe, und mir parallel mit den Browser Entwicklertools (Taste ''F12''?) die äquivalenten cURL-Aufrufe anschaue. Ich rufe den folgenden Befehl in einer Git Bash auf: curl 'https://pflegefinder.bkk-dachverband.de/api/nursing-homes?required=1&statistics=1&zip=Wiesbaden%20-%20Nordenstadt&location=36696&maxDistance=10&careType=inpatientCare&order=%2Bdistance&limit=20&offset=20https://pflegefinder.bkk-dachverband.de/api/nursing-homes?required=1&statistics=1&zip=Wiesbaden%20-%20Nordenstadt&location=36696&maxDistance=10&careType=inpatientCare&order=%2Bdistance&limit=50&offset=0' \ -H 'authority: pflegefinder.bkk-dachverband.de' \ -H 'accept: application/json, text/javascript, */*; q=0.01' \ -H 'referer: https://pflegefinder.bkk-dachverband.de/pflegeheime/searchresult.php?required=1&statistics=1&searchdata%5Bzip%5D=Wiesbaden+-+Nordenstadt&searchdata%5Blocation%5D=36696&searchdata%5BmaxDistance%5D=10&searchdata%5BcareType%5D=inpatientCare' \ -H 'sec-ch-ua: "Microsoft Edge";v="111", "Not(A:Brand";v="8", "Chromium";v="111"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "Windows"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: same-origin' \ -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.43' \ -H 'x-requested-with: XMLHttpRequest' \ --compressed -o Suchergebnisse.json In der URL werden folgende Parameter benutzt, die man am besten zuerst über die Webseite ausprobiert: * zip=Wiesbaden%20-%20Nordenstadt - bei PLZ oder Ort suchen * location=36696 - ergibt sich aus der Ort-Suche * maxDistance=10 - im Umkreis von X Kilometern * careType=inpatientCare - Vollstationäre Pflege * limit=50 - Rufe max. 50 Datensätze ab * offset=0 - Starte ab dem ersten (Nr.0) Datensatz Dieser Aufruf oben erzeugt eine Datei ''Suchergebnisse.json''. ===== CSV-Datei vorbereiten ===== Ich erzeuge die CSV-Datei mit der ersten Zeile, den Spaltenköpfen: $ echo id,name,telephone,street,zip,city,price1,price2,lat,lon > Suchergebnisse.csv Danach liegt eine CSV-Datei namens ''Suchergebnisse.csv'' vor. ===== JSON-Daten aufbereiten ===== Nun werden die JSON-Suchergebnisse mit dem Tool **jq** nach CSV umgewandelt. jq -r ".data[] | [.id, .name, .telephone, .street, .zip, .city, .price1, .price2, .lat, .lon]|@csv" Suchergebnisse.json \ > Suchergebnisse.csv Die Pflegeheime findet man im Schlüssel ''data''. Iem Datensatz einer Pflegeeinrichtung, im Schlüssel ''facilityInformation'', gibt es noch viele weitere Felder: facilityInformation: [ aerzte_vereinbarung: 1, andere_bewohnergruppen: 1, apotheken: 1, barrierefreiheit: 1, beatmungspflichtige: 2, blinde_sehbehinderte: 2, diaetkost: 1, eigene_mahlzeiten: 1, ... ] Diese Felder könnte z.B. man per .facilityInformation.aerzte_vereinbarung in den oben genannten jq-Aufruf mit aufnehmen. Die Werte 1, 2 oder 4 sind vermutlich //1 - vorhanden//, //2 - nicht vorhanden// bzw. //4 - keine Angaben//. ===== Zum Schluss ===== Wir haben nun eine CSV-Datei mit Spaltenköpfen in der ersten Zeile, und den Heim-Daten in den folgenden Zeilen. In der CSV-Datei sind die Spalten leider durch das Komma-Zeichen '','' getrennt. Dadurch öffnet sich die Datei nicht sauber in Excel, die Werte müssen evtl. durch die Funktion //Text in Spalten// getrennt werden. Oder man schaltet vor dem Öffnen der CSV-Datei mit Excel die Windows-Region um auf //Englisch (Vereinigte Staaten)//, öffnet die Datei mit Excel, speichert ab als ''.xlsx'' und stellt Windows-Region wieder zurück auf //Deutschland (Deutsch)//. Weitere Tipps zum Laden der CSV-Datei in Excel [[https://so-arbeiten-wir-morgen.de/kurztipp-trennzeichengetrennte-csv-datei-mit-komma-statt-mit-semikolon/|hier]] oder von Microsoft z.B. [[https://support.microsoft.com/de-de/office/importieren-oder-exportieren-von-textdateien-txt-oder-csv-5250ac4c-663c-47ce-937b-339e391393ba|hier]]. Viel Erfolg beim Nachvollziehen!