Ik probeer de output van een programma (een elektronisch patiënten dossier) een beetje op te schonen.
Helaas staat de ICT niet toe dat ik daar een zelf geschreven executable (in Lazarus) voor gebruik.
Blijft over: Javascript (zucht) in Edge (dubbele zucht).
(OK, IE (op Windows 2012 Server) was helemaal om te huilen, de meest simple javascript die prima werkte in FF of Chrome vertikte iets nuttigs te doen in IE)
De te verwerken tekst komt van het klembord als plain text, de oorspronkelijk data zijn tabulair weergegeven, maar de tekst op het klembord helaas niet.
Het gaat om gegevens over bloeddruk (RR), pols (P), temperatuur (T), ademfrequentie (AF) en saturatie (Sat).
De gegevens woden voorafgegaan door datum+tijd.
Typische voorbeelden (tabulair weergegeven):
Code:
2022-03-30, 11:34 120/85 80 37.2 12 96
2022-03-18, 08:00 - / - 80 95
Zoals je ziet zijn alle waardes optioneel (nou ja, je moet er tenminste 1 invullen).
Als de RR ontbreekt staat er '- / -' (zonder quotes), als ander waardes ontbreken staat er gewoon niets.
Op het klembord ziet e.e.a. er als volgt uit:
Code:
2022-03-30, 11:34
20/85
80
37.2
12
96
2022-03-18, 08:00
- / -
80
95
De kunst is nu om de data weer terug te toveren naar:
Code:
2022-03-30, 11:34 RR 120/85 P 80 T 37.2 AF 12 Sat 96%
2022-03-18, 08:00 P 80 Sat 95%
Doel van dit alles is om de data begrijpelijk in bijv een document te kunnen plakken als tekst.
Vooralsnog is dit mij algoritme:
Spilt de data met datum als scheidingspunt -> array met strings
Loop door de array
Split iedere arraywaarde opnieuw met op "\n" -> data array met strings van 1 regel
Als de data array 6 velden heeft: makkie, je weet dan wat ieder veld bevat
Zo niet:
1e veld is altijd datum+tijd
Overige velden:
- als er een decimaalteken in staat: temperatuur
- als er nog geen temperatuur is gevonden wordt het een beetje gokken
- als er wel al temperatuuur is gevonden is het of AF of Sat, AF boven 60 is onwaarschijnlijk en Sat < 70 ook
Aangezien ik feitelijk de ballen verstand heb van Javascript, rotzooi ik maar wat aan, net zolang to het werkt.
Ik heb enige rudimentaire kennis van split(), join(), for loops, regulair expressions en met die gereedschapskist werk ik dan.
Behalve een browser en een notepad kloon heb ik geen enkel ontwikkelgereedschap.
Voor mij onbegrijpelijke foutmeldingen: "replace is geen functie" (o.i.d) op een simpele regex, in een functie die ik eerst getest heb in een ander .js bestand, gekopieerd en geplakt (in de aanroep ergens eerder een paar haajes na een functienaam vergeten, kostte me een uur de tijd om daar achter te komen).
In Lazarus zou ik het probleem wat anders tackelen.
Lees het klembord als HTML
Parse de tabel (ja, de HTML representatie is een tabel, tenminste dat denk ik want in Word plakt die met opmaak als tabel).
Ieder veld staat altijd op de juiste plaats.
Ongetwijfeld zijn hier ook mensen die meer verstand van Javascript hebben.
Vragen:
- Heeft iemand een betere suggestie voor mijn algoritme?
- Kan iemand in voor mij begrijpelijk taal feedback geven op mijn implementatie van dit algoritme: http://svn.code.sf.net/p/flyingsheep.../ysis_tools.js, het gaat om de functie cleanup_rr
Dingen die ik zelf nog bedacht ter verbetering van het betere gokwerk:
Pols waarde kan gevolgd worden door '(r.a.)', '(i.a.)' of '(i.i.)'
Temp waarde kan gevolgd worden door '(oor)', '(oraal)' of '(rectaal)', dit is mogelijk nog belangrijk omdat Temp niet altijd een decimaal punt bevat (dit wordt niet afgedwongen of gecorrigeerd bij invoer: '37' is dus een valide waarde voor temp).
Bart
Bookmarks