Esperimenti con HL7

Healt Level Seven è uno standard di comunicazione che definisce di tutti gli standard per lo scambio, la gestione, l’integrazione, la condivisione e il reperimento di dati sanitari in formato elettronico.

Il messaggio Hl7 è un file di testo, una sorta di XML, ma non in formato markup.

Un messaggio Hl7 può essere di diversi tipi: contenere un referto strutturato (ad esempio i risultati di una analisi del sangue o di una spirometria), un referto PDF firmato digitalmente, una comunicazione di allineamento tra archivi o altro ancora.

Un messaggio è un testo distinto su più righe (segments). Ogni segmento ha un codice che ne definisce il contenuto (ad esempio PID, come Patient IDentification)

Ogni segmento è composta di campi (fields): nelle esempio del PID troveremo, in posizioni ben definite , informazioni come il cognome, il nome, il codice fiscale, la data di nascita del paziente. Ciascuna di queste informazioni è delimitata, all’interno della stessa riga, dal carattere pipe (|) e, al suo interno, lo stesso campo può anche essere suddiviso in più sottocampi delimitati dal carattere ^ (ad esempio, sempre in un segmento PID, l’indirizzo è contenuto tra due pipe e si trovano i campi, via, civico, cap, città, provincia delimitati da ^).

Analisi complessa

GNU OctaveSono tornato a far visita al mio Relatore di tesi, il prof. Mauro Bisiacco del Dipartimento Di Ingegneria dell’Informazione dell’Università di Padova. E’ stato un incontro piacevolissimo con una persona davvero speciale. Gli studenti lo adorano!

Incidentalmente, durante la chiacchierata, sono stato coinvolto in una questione riguardante un compito di Controlli Automatici, un dubbio sull’andamento di una funzione di trasferimento. La sera ho fatto ripartire i neuroni acciaccati che si occupavano di quegli argomenti e ne ho tratta una botta di gioventù. La mattina seguente gli ho mandato una mail con la soluzione qualitativa, era anche giusta. Mi sono preso lo sfizio di metterla in bella copia.

Il testo, redatto con LaTeX e con l’ausilio di GNU Octave per i grafici, un bellissimo clone open source di Matlab.

Alfresco: problemi a migrare verso la versione 4?

Ho trovato una interessantissima diatriba sui problemi incontrati nel migrare alla versione 4. Si è scomodato ad intervenire perfino il CEO di Alfresco Software.

Fino a metà il tono è costruttivo, poi ho lasciato stare. Vale la pena di leggerlo: http://bit.ly/HJDK4L

Lorem ipsum dolor sit amet…

Questo testo, scritto in un latino a dir poco maccheronico, è in uso dal XVII secolo come testo “demo”, come si direbbe adesso, per valutare l’impatto visivo di un testo scritto, il cui significato non è importante quanto la resa visuale dell’impaginazione.

La storia di questo strano testo, e di come sia coinvolto Cicerone, si trova tranquillamente su Wikipedia, ma in questo sito c’è addirittura un generatore di Lorem Ipsum 🙂

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam metus est, ultricies non feugiat eu, rhoncus et felis. Morbi in lorem in nisl ultricies ullamcorper. Etiam pretium adipiscing lorem, et congue…

Processi defunti in Linux

Processi in Linux

Oggi ho il problema che la macchina rallenta. Guardo i processi Linux e vedo un processo defunct. Google mi insegna che i processi defunct possono essere greedy.

“Lo ammazzo”, penso. Mica così facile. In informatica c’è anche il concetto di uccidere un defunto…

 $ kill -9 3462

ma il processo è ancora in piedi (e infatti li chiamano zombie).

Processi padri e figli

Google mi insegna che se il genitore del processo è a sua volta ancora vivo, può essere che non riesco ad eliminare il figlio. Ma chi è il padre di 3462? Non sapendo né leggere né scrivere faccio così

 $ ps -lax | grep 3462

ma scopro un metodo ancora più figo, l’albero dei processi

 $ pstree -p
 init(1)─┬─GoogleTalkPlugi(3281)─┬─{GoogleTalkPlug}(3282)
       │                       ├─{GoogleTalkPlug}(3284)
       │                       ├─{GoogleTalkPlug}(3285)
       │                       └─{GoogleTalkPlug}(3286)
       ├─NetworkManager(1129)─┬─dhclient(2566)
       │                      └─{NetworkManager}(2567)
       ├─acpid(1338)
       ├─anacron(1336)───sh(3017)───run-parts(3019)───apt(3025)───apt-key(3428)───wget(3437)
       ├─apache2(1784)─┬─apache2(1807)
       │               ├─apache2(1810)
       │               ├─apache2(3146)
       │               ├─apache2(3168)
       │               ├─apache2(3171)
       │               ├─apache2(3250)
       │               ├─apache2(3347)
       │               ├─apache2(3494)
       │               ├─apache2(3564)
       │               └─apache2(3601)
       ├─atd(1356)
       ├─avahi-daemon(1127)───avahi-daemon(1128)
       ├─bonobo-activati(2869)─┬─{bonobo-activat}(2870)
       │                       └─{bonobo-activat}(2881)
       ├─clock-applet(2931)───{clock-applet}(2943)
       ├─console-kit-dae(1133)─┬─{console-kit-da}(1134)
....
       ├─gvfsd(2705)
       ├─gvfsd-burn(2962)
       ├─gvfsd-metadata(2950)
       ├─gvfsd-trash(2908)
       ├─gweather-applet(2921)─┬─sh(3462)
       │                       ├─{gweather-apple}(2939)
       │                       └─{gweather-apple}(2975)
       ├─irqbalance(1350)
       ├─modem-manager(1131)
       ├─mysqld(1470)─┬─{mysqld}(1614)
       │              ├─{mysqld}(1615)
       │              ├─{mysqld}(1616)
       │              ├─{mysqld}(1617)
       │              ├─{mysqld}(1839)
       │              ├─{mysqld}(1840)
       │              ├─{mysqld}(1841)
       │              ├─{mysqld}(1846)
       │              ├─{mysqld}(1847)
       │              ├─{mysqld}(1873)
       │              └─{mysqld}(1912)
       ├─nmbd(2620)
       ├─notification-ar(2928)───{notification-a}(2938)
       ├─notify-osd(2905)───{notify-osd}(2906)
       ├─polkitd(1869)
       ├─pulseaudio(2716)─┬─gconf-helper(2808)───{gconf-helper}(2811)
       │                  ├─{pulseaudio}(2753)
       │                  ├─{pulseaudio}(2777)
       │                  └─{pulseaudio}(2802)
       ├─python(2925)───{python}(2958)
       ├─rsyslogd(1101)─┬─{rsyslogd}(1244)
       │                └─{rsyslogd}(1245)
       ├─rtkit-daemon(1863)─┬─{rtkit-daemon}(1866)
       │                    └─{rtkit-daemon}(1867)
       ├─samba(1679)─┬─samba(1703)
       │             ├─samba(1705)
       │             ├─samba(1712)
       │             └─samba(1714)
       ├─slapd(1365)───{slapd}(1368)
       ├─smbd(1093)───smbd(1243)
       ├─syndaemon(2876)
       ├─system-service-(3006)
       ├─trashapplet(2887)───{trashapplet}(2891)
       ├─udevd(457)─┬─udevd(704)
       │            └─udevd(706)
       ├─udisks-daemon(2775)─┬─udisks-daemon(2776)
       │                     └─{udisks-daemon}(2999)
       ├─upowerd(1865)
       ├─upstart-udev-br(453)
       ├─wnck-applet(2885)───{wnck-applet}(2892)
       └─wpa_supplicant(1383)

mmm troppo prolisso, meglio greppare:

 $ pstree -p | grep 3462
       |-gweather-applet(2921)-+-sh(3462)

Ecco cos’era! il programmino della situazione meteo

 $ kill -9 2921

Così è sparito anche il defunct, e il computer tira un sospiro di sollievo.

Link utili suill’argomento processi

Altri post su Linux

Problemino XML

Piccoli problemi che possono fare perdere un po’ di tempo.

Attenti ai caratteri <, & nei file XML, i parser non li digeriscono se non si trovano nei punti giusti!

Un piccolo TODO nel caso ci si imbatta in errori di tipo XML_ERR_NAME_REQUIRED

Neutrini: il comunicato ufficiale di OPERA

Traduco quello che si leggeva ieri 23 febbraio 2012 sul sito dell’Istituto Nazionale di Fisica Nucleare (INFN):

NEUTRINOS: STATEMENT ISSUED BY THE OPERA COLLABORATION

La collaborazione OPERA, nel continuare la sua campagna di verifiche nelle misurazioni della velocità del neutrino, ha identificato due problemi che possono alterare significativamente i risultati che sono stati comunicati. Il primo è legato all’oscillatore usato per le marcature temporali generate tra due sincronizzazioni con il GPS. Il secondo punto è relativo al collegamento in fibra ottica che trasposta il segnale dal GPS esterno all’orologio di riferimento di OPERA.
Queste due anomalie possono alterare il tempo di volo del neutrino in opposte direzioni. Mentre continuiamo le nostre indagini, al fine di di quantificare in modo non ambiguo l’effetto sui risultati osservati, la Collaborazione è in procinto di effettuare nuove misurazioni sulla velocità del neutrino non appena un nuovo gruppo di fasci di neutrini sarà disponibile nel 2012. Un rapporto esauriente sulle verifiche accennate poc’anzi e sui risultati verrà prontamente comunicato ai comitati scientifici e alle agenzie.

[Fonte: sito INFN]

Neutrini: much ado for nothing

Mi sono sorpreso stamattina, mentre andavo al lavoro, nel leggere sul sito dell’ANSA una notizia in evidenza: i neutrini non vanno più veloci della luce. E a ruota tutti i quotidiani più importanti d’Italia.

Oehh la peppa! Che notiziona! Sono subito andato a guardare il sito di OPERA, l’esperimento guidato Antonio Ereditato di cui ho parlato qualche tempo fa. Nulla. Il sito dell’INFN del Gran Sasso riporta tra le ultime news quella di settembre 2011 (OPERA experiment reports anomaly in flight time of neutrinos from CERN to INFN Gran Sasso).

Allora sono andato sul sito del CERN. Ancora niente. Inciso: molti collegano questo esperimento al CERN: l’esperimento è in Italia, è nei laboratori dell’INFN del Gran Sasso, il rivelatore di neutrini è lì e il CERN fornisce “solo” la materia prima, i neutrini (e naturalmente non serve un tunnel per farli arrivare da Ginevra) e il segnale GPS della partenza.

Cercando su Google cose del tipo netutrinos opera light speed le notizie erano di due tipi: giornali italiani con lanci di pochi minuti prima che strombettavano l’evento; e notizie ferme invariabilmente a novembre 2011, ma solo nei siti che contano (quelli che si occupano di Fisica).

Capire da dove è partita la notizia… è più facile trovare il bosone di Higgs.

Un giornalista di Scienze Magazine cita sources familiar with the experiment,  secondo altri (ad esempio Il Fatto Quotidiano) il tutto è partito da FoxNews che citava una notizia proveniente da fonte incerta divulgata da AAAS ( American Association for the Advancement of Science). Ovviamente neanche nel sito dell’AAAS non ho trovato nulla (la latest news è del 16 febbraio e parla dell’assegnazione del premio Interactive Media Award).

Be’ ragazzi, posso dirlo? Che pollaio!

Insomma, la partita è ancora aperta, ad Einstein tremano ancora le chiappe – si fa per dire, sono certo che si sarebbe divertito anche lui – e orizzonti inquietanti sono ancora davanti a noi. Ereditato ha precisato l’infondatezza della fuga di notizie e, questa sì che la notizia: è ancora tutto da verificare, ci sarà ancora molto con cui entusiasmarci!

Ma soffermiamoci sul merito della disquisizione. Un mio collega ha esclamato “È evidente che quella dei neutrini più veloci della luce è una pagliacciata!”.

Evidente. Che peccato, si è appena laureato in filosofia, non me l’aspettavo da lui.

Insomma, non ha senso fare il il tifo né per v/c <1 né per v/c > 1. Un principio fisico non è mica un atto di fede o una squadra di calcio. Non per rango o importanza, ma perché è una cosa diversa. Il principio è tale finché non succede qualcosa di verificabile, ripetibile e misurabile che lo smentisce, in quel momento viene declassato da principio a effetto di una causa che sta ancora più a priori.

Io tifo per la Fisica, per la Scienza, per chi lavora onestamente, seriamente e con passione. Il mio grandissimo prof di Meccanica Razionale mi diceva: facciamo un lavoro in cui ci divertiamo come pazzi. E, in più, ci pagano!

D’altra parte è anche bello che la gente si appassioni alla scienza, ma non si può affrontare con lo stesso spirito notizie come questa e le farfalle di Belen.

SQL injection – una tecnica di hacking per violare i database

sql-injectionTempo fa scrissi questo articoletto sulla tecnica di SQL injection che è una metodologia di attacco che consente, se non si prendono le necessarie cautele, di violare un database.

Nell’esempio c’è la descrizione del problema assieme ad un metodo di protezione contro gli attacchi basato su PHP e Oracle.

Altre modifiche su Opencart

Altre modifiche al multi-store realizzato con Opencart.

In particolare volevo che clienti e Amministratore potessero vedere da quale negozio erano stati inoltrati gli ordini, di base questa funzionalità non c’è. Nelle pagine di how-to le indicazioni per raggiungere questo scopo.