Page 1 of 2 1 2 LastLast
Results 1 to 15 of 19

Thread: Javascript (zucht)

  1. #1

    Javascript (zucht)

    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:
    1. Heeft iemand een betere suggestie voor mijn algoritme?
    2. 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
    Last edited by Bart B; 10-Jul-22 at 00:40. Reason: typo

  2. #2
    Bart, hoe komt het dat het klembord alleen platte tekst heeft? Waar komt de inhoud van het klembord vandaan?

    Wanneer ik van een webstek informatie uit een tabel kopieer, komt er platte tekst bij plakken in Notepad/Kladblok, maar als ik in Notepad++ gebruik maak van Paste Special kan ik de HTML code zien. Is het klembord werkelijk platte tekst, of is er nog verborgen HTML-code. In het laatste geval kan je makkelijk zien welke waarde in welke kolom staat.

    Succes!

  3. #3
    Aangezien ik alleen een browser + JavaScript tot mijn beschikking heb, moet ik het doen met wat er van het klembord in een tekstvak in de browser geplakt wordt.
    En aangezien het tekstvak alleen platte tekst kan bevatten, plakt hij de platte tekst erin.
    Die tekst is dan het uitgangspunt van mijn speurtocht.

    Normaal gesproken als je als applicatie opgemaakte tekst op het klembord zet (bijv. HTML), dan plaats je ook de platte tekst op het klembord.
    In Lazarus kan ik naar believen dan de platte text (ClipBoard.AsText) of de HTML (ClipBoard.GetAsHTML) gebruiken.

    Bart

  4. #4
    Quote Originally Posted by Bart B View Post
    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).
    Waarom blijft dat over?
    Kun je wat meer vertelen over de output en de manier van afvangen?

    Later heb je het over dat een gebruiker iets zelf knipt en plakt?
    Waarom? En waarom kan dat dan niet in lazarus.

    Als je wel echte html output hebt kun je nog steeds meer lazarus aan de gang.

    Als het echt met javascript moet en je hebt een tabel in html dan moet je via DOM werken.

    https://www.w3schools.com/js/js_htmldom.asp

  5. #5
    Quote Originally Posted by rvk View Post
    Kun je wat meer vertelen over de output en de manier van afvangen?
    OK, het ECD draait in de browser.
    We hebben alleen Edge as browser, geen alternatief beschikbaar.

    Dit is ongeveer zoals de data in het ECD geresenteert wordt:

    RR Pols Temp AF Saturatie
    2022-03-12, 08:30 120/80 80 37.2 14 98
    2022-03-11, 08:30 120/80 80 37.2
    2022-03-10, 08:30 - / - 37.2 98
    2022-03-09, 08:30 120/80 80 37.2 14 98
    2022-03-07, 08:30 120/80 80 38


    De gebruiker selecteert de data (P/RR/T etc) in het ECD, plakt deze in mijn stukje gereedschap, klikt op een button, mijn gereedschap doet zijn werk, gebruiker selecteert de gegenereerde tekst, kopieert die en plakt die waar hij/zij hem wil hebben.

    En ja, natuurlijk kan de gebruiker dit ook handmatig doen, maar dat is irritant, vandaar dit stukje gereedschap, gewoon voor ons eigen gebruikersgemak.

    Quote Originally Posted by rvk View Post
    Later heb je het over dat een gebruiker iets zelf knipt en plakt?
    Waarom?
    De gebruiker plakt in mijn tooltje omdat ik even geen andere oplossing weet.

    Quote Originally Posted by rvk View Post
    Waarom blijft dat over?
    En waarom kan dat dan niet in lazarus.
    Bij gebrek aan enige ander vorm van programmeertaal die beschikbaar is blijft dan Javascript over.

    Dit kan ik niet in Lazarus oplossen omdat de ICT niet toestaat dat er executables worden gezet op de server.
    Ik moest zelfs al toestemming vragen om batchbestanden te mogen uitvoeren (en xcopy, attrib en meer van dat soort basaal DOS gereedschap: allemaal geblokkeerd door de ICT in het kader van de veiligheid).
    (Enige tijd geleden:
    ICT-er zit op mijn computer, ziet 4 batchbestanden op de server, gooit die zonder overleg en zonder naar de inhoud te kjken weg met de mededeling: "het is niet de bedoeling dat u gaat zitten programmeren op ons systeem!".)

    En zelfs als dat wel zou mogen, dan zou ik steeds thuis moeten ontwikkelen (alwaar ik het ECD niet kan benaderen), toestemming van ICR vragen om nieuwe versie op server te zetten, bestuderen wat ik nu weer fout heb gedaan, wachten tot ik weer thuis etc.
    (De ICT gaat uiteraard niet goedvinden dat fpc+Lazarus wordt geïnstalleerd.)

    Quote Originally Posted by rvk View Post
    Als het echt met javascript moet en je hebt een tabel in html dan moet je via DOM werken.
    Ik denk niet dat in Tabblad 1 (mijn tooltje) de DOM kan benaderen van Tabblad 2 (het ECD)

    Misschien is het mogelijk om in Javascript de HTML van het klembord te halen?

    Bart

  6. #6
    Ik ken de exacte situatie natuurlijk niet, maar over het algemeen is het best tricky om dit soort tools op eigen houtje te ontwikkelen in de medische sector. Het kan zo maar zijn dat je met een simpele scriptje/tooltje onder de Medical Device Regulation(MDR) valt. Als er behoefte is aan dit soort functionaliteit, dan lijkt het mij beter dat je de formele weg bewandeld hoe frustrerend deze ook soms kan zijn.

  7. #7
    Quote Originally Posted by Bart B View Post
    (De ICT gaat uiteraard niet goedvinden dat fpc+Lazarus wordt geïnstalleerd.)
    Uiteraard geldt dat ook voor elke vorm van javascript, toch?

    Quote Originally Posted by Bart B View Post
    Ik denk niet dat in Tabblad 1 (mijn tooltje) de DOM kan benaderen van Tabblad 2 (het ECD)
    Draait die browser ook op een server of lokaal bij de gebruiker?

    Ik neem aan dat je niet zomaar met curl oid die pagina's op kunt halen.

    Als je wel enig controle hebt over de browser (computer gebruiker) kun je nog veel doen met greasemonkey/tampermonkey. Die draaien dan in dezelfde dom-omgeving als het ECD.

    Of als de gebruiker de pagina op kan slaan met save as, kom je ook aan de html.

    Quote Originally Posted by Bart B View Post
    Misschien is het mogelijk om in Javascript de HTML van het klembord te halen?
    Ja, dat kan.
    Google is your friend (javascript windows clipboard edge)
    https://stackoverflow.com/a/53271775/1037511

    Alleen, hoe krijg je de html op het clipboard.
    (Of doet een copy ook html codes?)

  8. #8
    Quote Originally Posted by luigi View Post
    Ik ken de exacte situatie natuurlijk niet, maar over het algemeen is het best tricky om dit soort tools op eigen houtje te ontwikkelen in de medische sector. Het kan zo maar zijn dat je met een simpele scriptje/tooltje onder de Medical Device Regulation(MDR) valt.
    Lijkt me stug in dit geval.
    Dan zou kopiëren en plakken in Word er ook onder vallen.[/quote]
    Quote Originally Posted by luigi View Post
    Als er behoefte is aan dit soort functionaliteit, dan lijkt het mij beter dat je de formele weg bewandeld hoe frustrerend deze ook soms kan zijn.
    Er is geen officiële weg.

    Bart

  9. #9
    Quote Originally Posted by rvk View Post
    Uiteraard geldt dat ook voor elke vorm van javascript, toch?
    Dat wordt een beetje lastig voor ze (de ICT boys).
    Het ECD draait niet zonde Javascript, dus globaal uitzetten gaat niet.
    Hetzelfde geldt voor ons intranet (of wat ook voor door mag gaan).

    Quote Originally Posted by rvk View Post
    Draait die browser ook op een server of lokaal bij de gebruiker?
    Ik denk op de server.
    We loggen in in een Citrix omgeving via een thin client (de thin client draait denk ik een *nix variant).

    Quote Originally Posted by rvk View Post
    Ik neem aan dat je niet zomaar met curl oid die pagina's op kunt halen.
    Nee dus.

    Quote Originally Posted by rvk View Post
    Als je wel enig controle hebt over de browser
    Ik mag niet eens zelf mijn homepage instellen.

    Quote Originally Posted by rvk View Post
    Of als de gebruiker de pagina op kan slaan met save as, kom je ook aan de html.
    Dat vraagt teveel interactie van de gebruiker, de meesten snappen niet eens dat dat kan, laat staan hoe dat moet (zeker sinds browsers geen menu-balk meer hebben).

    Quote Originally Posted by rvk View Post
    Ja, dat kan.
    Google is your friend (javascript windows clipboard edge)
    https://stackoverflow.com/a/53271775/1037511
    Mooi, ik zal eens kijken wat dat oplevert.

    Quote Originally Posted by rvk View Post
    Alleen, hoe krijg je de html op het clipboard.
    Dat hoeft niet, de hele opzet is nu juist om er platte tekst van te maken, maar dan niet zoals het klembord dat als platte tekst aanlevert (c.q. zoals de applicatie dat op het klembord zet).
    Copy/paste in een brief en klaar is Kees.

    Bart

  10. #10
    Kan je niet met chromium die pagina laden? Voor lazarus is er een chomium (https://wiki.freepascal.org/CEF4Delphi), en daarin kan je zelf ook javascript uitvoeren en doorgeven aan je pascal code. Ik heb dit ook al eens gedaan, zal eens zoeken of een klein voorbeeld voor je maken. Dan kan je daarin die pagina laden, met de DOM kan je dan de table (zal een table zijn vermoed ik) kunnen extraheren en in je pascal code gebruiken

  11. #11
    Quote Originally Posted by Reidinga View Post
    Kan je niet met chromium die pagina laden? Voor lazarus is er een chomium (https://wiki.freepascal.org/CEF4Delphi), en daarin kan je zelf ook javascript uitvoeren en doorgeven aan je pascal code. Ik heb dit ook al eens gedaan, zal eens zoeken of een klein voorbeeld voor je maken. Dan kan je daarin die pagina laden, met de DOM kan je dan de table (zal een table zijn vermoed ik) kunnen extraheren en in je pascal code gebruiken
    Lazarus was al niet mogelijk omdat dat niet op de server uitgevoerd mocht worden.
    En er wordt via Citrix op een server-omgeving ingelogd en van daaruit dus een browser gestart.

    Quote Originally Posted by Reidinga View Post
    We loggen in in een Citrix omgeving via een thin client (de thin client draait denk ik een *nix variant).
    ...
    Bij gebrek aan enige ander vorm van programmeertaal die beschikbaar is blijft dan Javascript over.
    Dit kan ik niet in Lazarus oplossen omdat de ICT niet toestaat dat er executables worden gezet op de server.
    Overigens zul je dus waarschijnlijk ook geen javascript of eigen html op die server uit mogen voeren.
    Of is het de bedoeling dat je die ergens anders 'host' en dan via een browser oproept zodat de gebruiker daar wat in kan plakken?

  12. #12
    Ik mag op het werk wel gewoon eenhtml pagina maken en die openen in de browser.
    Die pagina bevat alleen en textarera en een button.
    De gebruiker plakt de platte tekst in de textarea en klikt op de button.
    Zie hier het werkend voorbeeld.
    http://svn.code.sf.net/p/flyingsheep...sis_tools.html
    Dat bestand, inclusief de bijbehorende .js staat gewoon op de fileserver.
    In essentie heb je niet meer nodig dan notepad om dat te maken (leuk is anders, maar het kan).

    Wat ik zou willen onderzoekn of ik via een button de klembord data als HTML te pakken te krijgen (text/html ?).
    Kijken wat ik dan krijg en of ik me daar doorheen kan werken.
    Als dat lukt dat is mijnn output altijd correct (geen heuristics meer nodig), althans dat hoop ik.

  13. #13
    Als de writeText werkt voor je clipboard dan kun je ook nog readText proberen.
    Als de gebruiker dan iets op het clipboard heeft staan dan kun je dat direct inlezen.

    Theoretisch zou je het zelfs zo kunnen doen dat de gebruiker de tekst naar het clipboard kopieert, dan die pagina opent,
    de pagina ziet dat het op het clipboard staat en converteert het direct en zet het weer op het clipboard.
    Daarna hoeft de gebruiker alleen nog te plakken daar waar die wil
    (maar dat zou je zelfs ook nog kunnen doen met een automatisch download van een .txt ofzo

  14. #14
    Als het om bloeddruk (RR), pols (P), temperatuur (T), ademfrequentie (AF) en saturatie (Sat). en deze gegevens worden gebruikt om een diagnose / medicijn voor te schrijven
    zou ik er toch nog maar is goed over nadenken. Stel er sluip toch een verandering van waardes plaats met jou javascript-oplossing dan wordt hier op een verkeerde diagnose / medicijn hoeveelheid op toegepast met
    alle (levensbedreigende) gevolgen van dien terwijl jij het alleen maar makkelijker voor de gebruiker wilde maken.

    Stel dat je het nu wel goed krijgt en volgende week besluit de webservices de html weergave te veranderen waardoor jou knip/plakwerkt plots andere dingen knipt/plak, ik zou hier echt mijn vingers niet aan branden.....

    Gr, Fonzie
    Last edited by Fonzie; 14-Jul-22 at 12:51.

  15. #15
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    (B.v. floating point problemen agv locale)

Page 1 of 2 1 2 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •