Improving Mirth experience: manipolazione degli HL7

Ho dovuto progettare un’applicazione Mirth (un web service) che riceve un messaggio SOAP contenente un testo HL7 i cui dettagli sono qui riassunti:

  • sbustare il messaggio HL7 da SOAP;
  • salvare la testata in Oracle
  • se il documento HL7 è di tipo MDM, estrarre l’allegato contenuto nel campo OBX
  • salvare il documento nel NAS sotto la directory yyyy/mm/dd/nomefile.pdf.p7m
  • per ogni riga
    • salvarla in un’altra tabella Oracle
    • se la riga è di tipo TXA, al 16° segnaposto | (msg[‘TXA’][‘TXA.16’]) scrivere il path completo del NAS in cui è stato salvato il file.
    • invocare una procedura Oracle che controlla il dato e restituire al chiamante la sua stringa di risposta.

Uno dei punti più delicati è il penultimo. Ho percorso tre strade per poter arrivare alla soluzione.

1) modifica della riga di testo TXA utilizzando le espressioni regolari. Da questo punto di vista, attenzione ad applicare la funzione text.replace(regexp, newString) se text è una stringa Java ma non Javascript!!! Mirth ritorna un errore durante l’invocazione del costruttore (The choice of Java constructor replace matching JavaScript argument types (function,string) is ambiguous;): occorre prima trasformare la stringa text java in una stringa javascript con la seguente istruzione:

 text = text + “”;

dopodiché l’applicazione della regexp

/[|]{n}/

si comporta in modo stocastico (non mi becca la n-esima occorrenza di | e fa sostituzioni non richieste). NO WAY.

2) modifica della riga di testo TXA utilizzando la funzione split: questa istruzione non riconosce il needle | (e nemmeno ^; riconosce solo &); si tratta di caratteri di controllo delle espressioni regolari, ma anche l’applicazione di un carattere di escape () non sortisce effetto. NO WAY.

3) modifica del messaggio XML nel filter dell’applicazione destination, attraverso l’istruzione

 msg['TXA']['TXA.16'] = $('oggi') + '/' + $('filename') + ".pdf.p7m";

poi riconverto l’XML in HL7

 var raw = SerializerFactory.getHL7Serializer(false, false, true).fromXML(msg);

e procedo con lo split delle righe.

Attenzione: l’uso del Filter mi permette di modificare il messaggio raw PRIMA dell’esecuzione dello step di destination. Se uso il transformer, non funziona (Mirth esegue il transformer dopo aver eseguito lo step di destination).

Intervista a Joe Incandela (Esperimento CMS)

Su Youtube, qui per mia (e Vostra?) comodità.

Il bosone di Higgs “a portata di mano”

La nostra comprensione dell’Universo sta per cambiare

Il sito del CERN di oggi è completamente polarizzato su questa notizia sensazionale: la particella di Dio sarebbe stata scoperta. Questo che segue è il testo che in questi giorni trovate nella home page del Cern di Ginevra.

Gli staff che lavorano agli esperimenti ATLAS e CMS del CERN hanno presentato oggi il bosone di Higgs lungamente atteso. Entrambi gli esperimenti hanno visto forti indicazioni di una nuova particella che potrebbe essere il bosone di Higgs, in una regione di massa di circa 126 GeV.

Il portavoce dell’esperimento CMS Joe Incandela ha detto:

“The results are preliminary but the 5 sigma signal at around 125 GeV we’re seeing is dramatic. This is indeed a new particle. We know it must be a boson and it’s the heaviest boson ever found,The implications are very significant and it is precisely for this reason that we must be extremely diligent in all of our studies and cross-checks.”

Sono stati analizzati trilioni di collisioni [1 trilione = 1018] protone-protone avvenute nell’LHC (Large Hadron Collider) nel 2011 e 2012. Il Modello Standard prevede che un bosone di Higgs decada in differenti particelle – ciò che l’esperimento dell’LHC ha mostrato.

Entrambi gli esperimenti ATLAS e CMS hanno dato un livello di attendibilità a questo risultato pari a 5 sigma sulla scala che i fisici usano per descrivere la certezza di una scoperta:

  • 1 sigma significa che i risultati possono consistere solamente in alcune fluttuazioni casuali dei dati,
  • 3 sigma significa un’osservazione e
  • 5 sigma vuol dire una scoperta.

I risultati presentati oggi sono preliminari, essendo i dati relativi al 2012 ancora sotto analisi. E’ attesa la pubblicazione dell’analisi completa verso la fine di luglio.

Leggi l’avviso originale sul sito del CERN

Leggi tutto l’articolo sul sito del CERN.

Nota sulla discrepanza dei valori della massa del bosone scritti ed evidenziati sopra: durante la conferenza stampa è stato dato il numero in modo più preciso:

125.3 +/- 0.6 GeV with 4.9 sigma significance

[Fonte]

Altra nota: nei risultati si usa spesso questa unita di misura: fb che sta per femtobarn, dove femto è il prefisso per la scala di grandezza 10-15 e il barn è un’area equivalente a 10-24 cm2. Si usa, nella pratica, il femtobarn inverso (fb-1) per misurare il numero di collisioni per unità di area. Dire che in ATLAS e CMS nel 2012 si sono raccolti 6 fb-1 di dati equivale a dire che si è assistito a 6 x 1039 eventi/cm2.

Samba

Samba - toolsuite per interoperabilità *nix/Win
Samba – toolsuite per interoperabilità *nix/Win

Samba è un software client/server simile ad FTP per condividere risorse disco tra client Linux/Windows.

Verifico se a bordo ho un server samba che gira

 $ ps ax | grep samba
 $

se risponde così non abbiamo un demone samba che gira a bordo. Del resto un demone samba nella nostra macchina ha senso se vogliamo condividere porzioni del NOSTRO disco con altri client Linux/Windows. Per ora il mio problema è accedere via samba ad una risorsa NAS esterna. Quindi va bene così. Ho un client a bordo?

 $ sudo apt-get install smbclient 
 ... smbclient è già alla versione più recente.
 0 aggiornati, 0 installati, 0 da rimuovere e 7 non aggiornati.

Ce l’ho già! Lo uso:

 $ marcob@jsbach:~$ smbclient -U myuser -W dom01 //nas.server.com/shared
 Enter myuser's password: 
 Domain=[DOM01] OS=[EMC-SNAS:T5.6.51.320] Server=[NT1]
 smb: >

I comandi di samba: quali sono? i soliti cd, ls funzionano. un po’ MSDOS / UNIX style, ma funziona!

Link utili

Samba website

Come fu che mi innamorai della Fisica

Maggio 1988, Università di Padova, Facoltà di Ingegneria, lezione di Fisica II. Nell’aula P400 di via Paolotti a Padova siamo stretti come sardine. Durante una lezione sulle onde, capita un temporale molto forte: l’aula è un prefabbricato e il soffitto è in lamiera. Il frastuono della tempesta copre la lezione del prof. Nicolosi che, per stemperare il caos che si è scatenato, dice di andarci a leggere un’interessante articolo sulla formazione dei temporali nella “Fisica di Feynman”.

Ovviamente, per il frastuono, non sento quello che dice e vado a chiederglielo a fine lezione. Poi mi fiondo in biblioteca al DEI e prendo uno dei volumi, quello che parla della formazione dei temporali.

Apro la prima pagina del librone rosso in inglese con traduzione a fronte e vedo questo:

Richard Feynman

Richard Feynman

Pensavo di aprire uno dei libri di fisica grigi che avevo visto fino a quel momento. Ma quel libro vibrava come la membrana di quei bonghi. Un professore di Fisica che suona i bonghi!!!

Quella immagine così desueta, seguita da come e quanto profondamente Feynman – nelle pagine seguenti – spiegava la Fisica, dalle leggi della dinamica alla Meccanica Quantistica, mi fece innamorare della Fisica e della Matematica.

Cambiò tutto per me da quel giorno, sul piano dell’approccio alla conoscenza. Pur consapevole dei miei limiti, c’era un’esperienza intellettuale da amare. Era più importante capire che passare l’esame.

Tutt’oggi credo sia così. Sempre nei limiti miei e di ciò che faccio. Ma la curiosità è il motore principale della mia piccola vita.

Ve be’… per sdrammatizzare i toni ascoltatevi Elio, sempre a proposito di bonghi.

Come modificare la frequenza di aggiornamento degli RSS in Firefox

Lo strumento degli RSS (Really Simple Syndicate) è da tempo un metodo facile poco oneroso di tenerci aggiornati sui portali dei giornali, dei notiziari o nei forum. Sono sostanzialmente dei file XML che vengono generati in tempo reale lato server e vengono letti  a campionamento lato client tramite dei componenti detti RSS reader come software a sé stante e come componenti del browser.

Mi è stato chiesto con che frequenza viene fatto questo campionamento. Ho trovato come si fa per Firefox e per comodità me lo scrivo qui.

Da interfaccia “normale” non c’è modo di impostare qeusto parametro, occorre andare nella gestione avanzata:

  1. scrivete about:config nella barra degli indirizzi e premete invio.
  2. il browser vi scongiura di fare attenzione: voi prometteteglielo e andate avanti
  3. appare un elenco di proprietà molto lungo: per districarsi basta cominciar a digitare nella barra di ricerca la stringa
    browser.bookmarks.livemark_refresh_seconds
  4. normalmente non la troverete, per cui dovete aggiungere questo parametro cliccando su Nuovo > Intero
  5. scrivete browser.bookmarks.livemark_refresh_seconds (fate copia incolla) e selezionate il numero di secondi. 300 secondi fanno 5 minuti, è ragionevole, ma fate vobis.

Ok, finito. Va be’ non me lo sono inventato, ho trovato qui il suggerimento, ma per chi mastica poco l’inglese lo sforzo sarà servito.

 

Alan Turing (23 giugno 1912 – 7 giugno 1954)

Foto del passaporto di Alan Turing all'età di 16 anni.
Foto del passaporto di Alan Turing all’età di 16 anni.

Sentii parlare di Alan Turing per la prima volta al corso di Automi e linguaggi formali nel 1988. Era tenuto dal prof. Pagello al DEI dell’Università di Padova, corso che credo ora vada sotto il nome di Informatica Teorica. Seguii il corso ma non diedi l’esame. Ma mi rimasero impresse molte cose profonde, come la tesi di Church, il problema della computabilità. E, ovviamente, la macchina di Turing. Si descriveva un “macinino” che assomigliava alla vecchia macchina per scrivere meccanica, che aveva una testina con due soli simboli: 0 e 1 e poteva scrivere su un nastro infinito che poteva avanzare di un passo per volta in una direzione o in quella opposta.

Mi dissero che una funzione è effettivamente computabile se la può calcolare una macchina di Turing (tesi di Church).

Pensai che fosse una meraviglia, il più potente calcolatore che potevamo pensare non poteva essere più potente di questo macinino, e mi venne subito in mente l’astrazione meravigliosa della macchina di Carnot per la Termodinamica. Sadi Carnot era un ingegnere. Turing un matematico. Oggi ricorrono i cento anni dalla sua nascita.

Conobbi la storia di Turing leggendo nel 2000 il bellissimo libro di Simon Singh “Codici e Segreti” (scheda) e mi rimase nel cuore la sua triste vicenda umana. Ne parlai ai ragazzi delle classi quarte dell’ITIS Zuccante due anni dopo, quando tenni due giorni di lezione sulla crittografia e l’ecommerce: in una lezione tecnica non era forse il caso di parlare di omosessualità, di discriminazione.

C’erano anche i miei ex insegnati tra gli uditori, mi sembrava di eccedere. Ma venuto il momento di parlare di Turing e di Enigma, non ci pensai e lo feci e raccontai come la polizia venne a sapere dei suoi costumi sessuali, di come fu da quel momento in poi sottoposto a internamento in nome di una ipocrita moralità. Spero che questa storia sia rimasta anche nei loro cuori. Una storia che non parla solo di omofobia, ma anche di ingratitudine, ottusità e cattiveria.

Sicuramente lui ha lasciato molto nel nostro mondo. Morì suicidandosi addentando una mela avvelenata, che venne trovata accanto al cadavere. Una mela con un morso. Sembra il logo della Apple. Steve Jobs, quando gli fu chiesto se c’era qualche relazione tra le due cose, disse “No, ma ci piacerebbe tanto che ci fosse”.

Aggiungo il collegamento ad una risorsa che riporta l’articolo scritto da Turing il 12 novembre 1936 nel quale descrive per la prima volta la sua macchina calcolatrice.

SoapUI: un utile strumento per testare servizi web… e non solo!

soapui

Il test di servizi web è particolarmente delicato in quanto spesso si vanno a toccare punti delicati del protocollo HTTP. SoapUI è un software disponibile in varie versioni (free e Pro) e ho messo insieme un po’ di appunti prodotti strada facendo e risolvendo via via vari problemi.

Sempre nel solco del mio solito proposito, di essere utile a qualcun altro.

Vai all’howto

Retroilluminazione tastiera

Ogni tanto il mio pc da’ di matto. Sostengo sempre l’idea che l’informatica non sia una scienza esatta.

Stamattina, con l’avvento del caldo estivo, la tastiera ha deciso di accendere la retroilluminazione. E, con il caldo che fa, non è proprio una situazione confortevole.

Giro per il web, visto che non trovo comandi nelle Impostazioni di Sistema di Ubuntu, e trovo questo suggerimento

$ echo 0 | sudo tee -a /sys/class/leds/mmc0::/brightness

che scrive uno 0 ( o un 255 all’occorrenza) nel file brightness nella directory sopra (attenzione: i sono caratteri di escape, il nome della directory è /sys/class/leds/mmc0::/) (probabilmente occorrerebbe lanciare qualche altro comando, ma non è scritto).

Ciò non sortisce alcun effetto e le mani continuano ad abbrustolirsi.

Trovo un post molto più entry level in Launchpad: basta premere Fn + <right-arrow> per far ciclare la retroilluminazione da spento ad acceso passando anche per uno stato intermedio. Anche Fn + <left-arrow> va bene.

Questo invece funziona.

Marchiori lascia Volunia

Con un articolo al Sole 24 Ore di venerdì 8 giugno Massimo Marchiori ha rassegnato le dimissioni da direttore tecnico del progetto Volunia da lui ideato per dissapori con il Consiglio di Amministrazione.

Ha voluto specificare che il progetto è stato frainteso fin dall’inizio come “nuovo motore di ricerca”, che gli sono state imposte delle scelte da lui non condivise, tra le quali quella di sviluppare un proprio motore di ricerca. Marchiori afferma nel suo comunicato stampa, di rimanere in Volunia con le sue sole quote societarie ma di non volere più mettere a disposizione le sue competenze, a meno che non cambi qualcosa.

Il testo è disponibile anche nel sito dell’Università di Padova [english]