Tuesday, February 23, 2016

WiFi Channels 12 and 13 on Asus ZenPad S 8 and Sony Xperia S not visible

I bought my daughter a Asus ZenPad S 8.0 (Z580C). Wonderfull android tablet with Android 5.0, but one day her WiFi stopped working.
Actually the wifi worked fine, just my home networks were not visible.
Turned out the the ZenPad just did not work on channels 12 and 13.
I turned off channels 12 and 13 use on my WiFi router and the problem was solved.
I found no options on either the ZenPad or XperiaS to enable those channels as yet.

Wednesday, January 27, 2016

SparQL SnomedCT with Jena Fuseki

Above is what I tweeted ... and then people asked for the link... So I have to write the recipe in a blog. Hope this answers the questions.

The result is a Web User Interface (and REST) to do SPARQL on the SNOMED CT ontology.

The ingredients:
  1. SNOMED CT RF2 files - We have a license and receive the CD version.
  2. Java 8 <https://www.oracle.com/java/>
  3. Git <https://git-scm.com/downloads>
  4. Apache Maven <https://maven.apache.org/download.cgi>
  5. IHTSDO snomed-publish <https://github.com/IHTSDO/snomed-publish>
  6. Apache Jena & Fuseki <https://jena.apache.org/>
  7. Patience or fast machines ;-)
The machine:
  1. I used a VM 2.8Ghz / 4Gb - I guess 8Gb is better, but this worked for me

1. Preparations
  1. Make sure you have Java 8 installed
  2. Get your hands on the RF2 files from SNOMED CT (I used the "snapshot" version)
    1. Delta contains SNOMED CT changes since the last release
    2. Full contains full history of SNOMED CT since 2002
    3. Snapshot contains the latest version of SNOMED CT
  3. Download and install Git
  4. I like the command line tools, but you could also go for the GUI version SourceTree <https://www.sourcetreeapp.com/>
  5. Download and install Maven
2. Build IHTSDO snomed-publish

The IHTSDO snomed-publish package contains a component called the rdfs-exporter that can convert the RF2 format into Tripples. The Triples file is needed to populate the Triple Store (TDB) that Fuseki uses.

Some background information:

Some package don't compile, I don't know why. We only need rdfs-export-main, but it depends on some of the other components. Luckily Maven has the "-fn" option, that makes maven not stop when a component fails.

Open a cmd box and go to the snomed-publish folder and run:
> mvn clean install -fn
You will see a lot of output and some errors. Just ignore.
Now go to client/rdfs-export folder and run:
> mvn install 
The result will be the rdfs-export.jar file in the client/rdfs-export-main/target folder.

3. Now we need the RF2 files to convert into Triples

Go the the RF2 folder and run (fill in the jar ):
> java -Xms4000m -jar /rdfs-export.jar -c sct2_Concept_Snapshot_INT_20150731.txt –d sct2_Description_Snapshot_INT_20150731.txt -t sct2_Relationship_Snapshot_INT_20150731.txt -if RF2 -of N3 -o sct.n3

The output will look something like this:


Use N3 can be directly used bij jena tdbloader! ?? rdfparse still seems nessesary..
> rdfparse sct.n3 > sct-pure.n3

4b. Create the Triple Store

Create tripple database from SCT N3 file... 
> tbdloader –-loc=d:\work\TBD sct-pure.n3

5. Start Fuseki

> fuseki-server –-loc=d:\work\TDB /sct

Default Shiro config of Fuseki stops Fuseki from showing any datasets when accessed not from localhost. Simpy edit run/shiro.ini and change “/$/** = localhostFilter” to “/$/** = anon” does the trick.

Now you can browse to localhost:3030 and you should see something like this:

Click on "query" and have fun sparql-ing SNOMED CT!

Some SPARXL examples:

Get properties and values of a specific class "Procedure (procedure)"

PREFIX rdfs:
SELECT ?property ?obj
  sct:71388002 ?property ?obj .

Check if a class is a kind of "Procedure (procedure)" regardless of path length.

SELECT ?property ?obj
  sct:250404007 ?property ?obj .
    sct:250404007 rdfs:subClassOf+ sct:71388002 .

Wednesday, March 18, 2015

Get Outlook Web Premium on Linux with Chrome

I switched to Linux Mint and use Chrome as my preferred browser. No I ran into the "issue" that Outlook decided to switch to the Lite version. That is really annoying.
There is an easy fix for that! It is an Extension for Chrome called "User-Agent Spoofer for Chrome".
You can configure it to spoof the User-Agent only for the web outlook URL.
The User-Agent can be found in "chrome://version" page.
  1. Go to the menu and select "More tools / Extensions"
  2. Click "options"
  3. Select the "Permanent spoof list"
  4. Fill in your domain
  5. I selected "Android KitKat" as User-Agent and that seems to work just fine
... Hmm. That did not work. The trick is to first select IE10 and then you will get an ActiveX message. Ignore that and change the User-Agent to the Windows version. Something like this: 

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36

This is actually the same as for Linux except the "(Windows NT 6.1)" part.

Some functionality that is still not working :-(
  1. Attach files

Tuesday, October 29, 2013

X-Mouse or Focus-Follow-Mouse on Windows 7

I started using Windows 7 only because my Windows XP machine's harddisk was failing on me. My new machine came with Windows 7 installed. After some tweaking the settings I could not find a way to enable the Focus-Follow-Mouse-Without-Raising-Windows behaviour I was used to. On Windows XP I used Tweak UI to enable this, but that doesnot exist for Windows 7. Turned out the following C# Console Application does the trick!

For more info look at the SystemParametersInfo function documentation at MSDN.

using System.Runtime.InteropServices;

namespace SPI
    class Program
        [DllImport("user32", CharSet = CharSet.Auto)]
        public static extern bool SystemParametersInfo(uint uiAction, uint uiParam, bool pvParam, uint fuWinIni);

        /// Determines whether active window tracking (activating the window the mouse is on) is on or off. The pvParam parameter must point
        /// to a BOOL variable that receives TRUE for on, or FALSE for off.
        /// Windows NT, Windows 95:  This value is not supported.
        public const uint SPI_GETACTIVEWINDOWTRACKING = 0x1000;
        /// Sets active window tracking (activating the window the mouse is on) either on or off. Set pvParam to TRUE for on or FALSE for off.
        /// Windows NT, Windows 95:  This value is not supported.
        public const uint SPI_SETACTIVEWINDOWTRACKING = 0x1001;
        /// Determines whether windows activated through active window tracking will be brought to the top. The pvParam parameter must point
        /// to a BOOL variable that receives TRUE for on, or FALSE for off.
        /// Windows NT, Windows 95:  This value is not supported.
        public const uint SPI_GETACTIVEWNDTRKZORDER = 0x100C;
        /// Determines whether or not windows activated through active window tracking should be brought to the top. Set pvParam to TRUE
        /// for on or FALSE for off.
        /// Windows NT, Windows 95:  This value is not supported.
        public const uint SPI_SETACTIVEWNDTRKZORDER = 0x100D;

        static void Main(string[] args)
            // set mouse to x-mouse behaviour, focus on window under mouse without raising the window to top
            bool enable = true;
            bool disable = false;
            SystemParametersInfo(SPI_SETACTIVEWINDOWTRACKING, 0, enable, 0);
            SystemParametersInfo(SPI_SETACTIVEWNDTRKZORDER, 0, disable, 0);

Thursday, October 3, 2013

Everybody does Detailed Clinical Models

... and they don't even know it ;-)

DCM is like a closet where you can organize your clothes, metadata about a Clinical Model in. It is not restrictive, just gives guidance on good practices and information you have (or should have).
Forms of Clinical Models that cover parts of that metadata are: IMH Clinical Elements, OpenEHR/13606 Archetypes, Clinical Content Models, HL7 v3 Templates, BioSHaRE, BRIDGE and even Spreadsheets (used often). Normally when implemented in an EHR or Clinical Research Applications there will also be some Standard Operating Procedure (SOP).
DCM is about organizing (documenting) all relevant metadata or references, e.g. SOP, data elements/structure, coding, use, mis-use, constraints/validation, business rules, derivation, etc. But it does not force you to document this.
There are multiple ways to document this. You could use a metadata tool, UML, spreadsheet, Mindmaps, EHR system, OpenClinica, Archetype Modeling Workbench, XML Editor, etc.
What the DCM Standard (ISO13972) and UML Styleguide do is give you guidance on how to use UML for Clinical Models. It tells you where to put the metadata such as author and status and which metadata should be registered with the model and which with a model repository were you store the model.

Archetype Modeling Language
Currently there is an initiative working toward an official OMG UML Profile for this called the Archetype Modeling Language (AML). Here we combine the efforts from OpenEHR, the DCM UML Styleguide, ISO11179 Metadata Registry, DoD/VA FHIM, Clinical Information Modeling Initiative and HL7 v3 in a form that can accommodate, but not replace, all.
The goal of AML is to be able to express Clinical Models in UML, and also to be able to generate downstream artifacts, such as ADL files. It will also enable other views of the model for specific stakeholders, e.g. mindmaps, spreadsheets, documents.
AML will also enable to import models defined in other forms, and the result will be a consistent view of those models, so that you can compare them.
Currently we are working on prototyping the profile in MDHT and Sparx Enterprise Architect. The OMG process is rigid (needs to be), and it is volunteer work, so work is slow :-(

Saturday, November 28, 2009

Code versus Id

Why is it so difficult to see the difference between code and id?
Even in standards they mix the two. RFC3881, a standard for Audit Messages in Healthcare Applications used in NEN7513 and IHE ATNA, uses it wrong. Specificaly on EventID were the attributes are CodeSystem, etc, so it should be called EventCode.
In the ISO Datatypes used in HL7 there are two datatypes, namely II (Instance Identifier) and CD (Concept Descriptor).
I think the distinction is clear. There are codes for kinds of animals, and each animal has its own id in the form of a name. So my cat(==code) her name(==id) is Michi.
That's all folks.

Monday, September 7, 2009

Livescribe Podcast Recorder

This pen also works great as a podcasts recorder! You can use the internal microphone or the 3D microphone/earphone.
The audio is in aac format and can be saved as wav from the sessions view in Livescribe Desktop or you can just search for the aac file and convert it.
Here is how using the aTunes 1.13.1 (== great audio player/manager) command line tools in the win_tools directory:
  • Convert the aac to a "audiodump.wav" file:
    mplayer c:\My Lifescribe\Library\...\Sessions\audio-#.aac -ao pcm:fast -vc null -vo null

  • Encode to mp3:
    lame audiodump.wav audiodump.mp3 --tl [album name] --tt [title] --ta [artist] --ty [year]

Et voila. You got the audio as a mp3 file ready for publishing and listening on your mp3 player!
On to my first Healthcare IT podcast ;-) Don't even know if anyone is interested in healthcare standards news as a podcast... but I sure want it. There is so much happening on and so little time to read all the news...