- From: Eric Prud'hommeaux <eric@w3.org>
- Date: Wed, 25 Feb 2009 10:46:30 -0500
- To: Holger Stenzhorn <holger.stenzhorn@deri.org>
- Cc: helen.chen@agfa.com, public-semweb-lifesci@w3.org
- Message-ID: <20090225154630.GG2154@w3.org>
On Wed, Feb 25, 2009 at 10:42:04AM -0500, Eric Prud'hommeaux wrote: > * Holger Stenzhorn <holger.stenzhorn@deri.org> [2009-02-25 00:50-0300] > > Helen, > > > > Have you tried installing the "Microsoft Visual C++ 2008 Redistributable > > Package (x86)" on your computer, as I mentioned to you in an earlier > > mail? (Thus we are not using the exact same environment... :-)) Well, > > that should make the SWtransformer.exe that I compiled with Visual > > Studio 2008 run on your machine as well. > > > > Also it is not quite the case that I have the same compilation problems > > for Cygwin as I do. It is only true that I also cannot compile the > > latest SVN version - versions before worked (if I remember right). When > > you add the boost-include (included in Cygwin and as shown in the log > > [1] I sent you earlier) then the whole missing boost errors disappear. > > But still, with the latest SVN checkout I get the error in [1] > > > > Cheers, > > Holger > > > > [1] > > bash-3.2$ PWD=. INCLUDES="-Iwin > > -I/cygdrive/c/cygwin/usr/include/boost-1_33_1" make test > > g++ -DYYTEXT_POINTER=1 -g -O0 -W -Wall -Wextra -Wnon-virtual-dtor -ansi > > -std=c++98 -Iwin -I/cygdrive/c/cygwin/usr/include/boost-1_33_1 -I. > > -I/usr/include/libxml2 -I./SPARQLfedParser -I./TurtleSParser > > -pipe -c -o RdfDB.o RdfDB.cpp > > In file included from RdfDB.hpp:9, > > from RdfDB.cpp:5: > > ResultSet.hpp:362: error: base `w3c_sw::ResultSet' with only non-default > > constructor in class without a constructor > > I think that's from a version back, so I'm guessing a bit at the error. > I pulled a couple silly classes out. try v430 (HEAD, as of now) Oh, one more point, I'm committing to the const-happy branch (which I will roll back into trunk once we are done). svn co https://swobjects.svn.sourceforge.net/svnroot/swobjects/branches/const-happy Holger or Helen, are you in BOS? > > make: *** [RdfDB.o] Error 1 > > > > > > helen.chen@agfa.com schrieb: > >> > >> Eric > >> > >> Thanks for continuing working on SWtranformer program. It is indeed > >> an important piece of work. > >> > >> We have been trying to compile the program without much success. > >> > >> My colleague Jos De Roo is using Linux and your r398 compiles and > >> works on his machine, but not the latest version. > >> Holger and I use cygwin, and we can not compile it at all, see some of > >> the compile log in the attached file. > >> Holger also made a window exe file but I can not run on my computer, > >> although we are using the same Window XP system, may due to missing > >> some vc++ library. > >> > >> Will you please take a quick look at the log and see if you can give > >> us some advises? > >> > >> Thanks for your help. > >> > >> > >> Helen > >> > >> > >> > >> > >> > >> > >> > >> *Eric Prud'hommeaux <eric@w3.org>* > >> Sent by: public-semweb-lifesci-request@w3.org > >> > >> 02/21/2009 10:27 AM > >> > >> > >> To > >> public-semweb-lifesci@w3.org > >> cc > >> > >> Subject > >> [COI] Re: COI protocol #8 demo progress > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> * Eric Prud'hommeaux <eric@w3.org> [2008-10-11 12:11-0400] > >> > I've created an sdtm query — sdtm.rq > >> > to query data mapped from hl7 — hl7-sdtm.rq > >> > which is mapped from the db — db-hl7.rq > >> > > >> > I poked around to look for things like the relationship between a > >> > patient and a medication, but am not super confident that I've aligned > >> > with existing structures (say, in XML). > >> > > >> > You can try this at home by downloading an executable for your > >> > operating system from http://www.w3.org/2008/04/SPARQLfed/ and running > >> > cat sdtm.rq | \ > >> > SWtransformer -q - hl7-sdtm.rq | \ > >> > SWtransformer -q - db-hl7.rq -s http://hospital.example/DB/ | \ > >> > mysql -u root DiabeticPatientsDataSet --table > >> > where the db comes from > >> http://www.w3.org/2008/04/DiabeticPatientsDataSet/ > >> > >> The latest from the const-happy branch (390) pushes filters down to SQL > >> sdtm: FILTER (?code = 6809 || ?code = 6810) > >> becomes rim: FILTER ( ?code = 6809 || ?code = 6810 ) > >> becomes sql: WHERE (indicCode_gen0.ingredient = 6809 OR > >> indicCode_gen0.ingredient = 6810) > >> > >> This should build with [[ > >> svn co > >> https://swobjects.svn.sourceforge.net/svnroot/swobjects/branches/const-happy > >> const-happy > >> cd const-happy > >> make bin/SWtransformer > >> ]] > >> > >> and then you can test it à la: > >> [[ > >> eric@mouni:/tmp/const-happy$ bin/SWtransformer -q > >> tests/healthCare/in-list/sdtm.rq tests/healthCare/in-list/hl7-sdtm.rq > >> | bin/SWtransformer -q - tests/healthCare/in-list/db-hl7.rq -s > >> http://hospital.example/DB/ | mysql -u root DiabeticPatientsDataSet > >> patient dob sex takes > >> indicDate > >> 1517441 1964-09-01 00:00:00 Female > >> Glucophage TABS 2007-07-23 00:00:00 > >> 1517441 1964-09-01 00:00:00 Female > >> Glucophage TABS 2007-07-23 00:00:00 > >> 1517000 1958-01-01 00:00:00 Male > >> Metformin HCl 500 MG Tablet 2007-06-29 > >> 00:00:00 > >> 1517000 1958-01-01 00:00:00 Male > >> Metformin HCl 500 MG Tablet 2007-06-29 > >> 00:00:00 > >> 1517403 1981-05-11 00:00:00 Male > >> Metformin HCl 500 MG Tablet 2008-01-03 > >> 00:00:00 > >> 1505583 1950-02-25 00:00:00 Female > >> Metformin HCl 500 MG Tablet 2008-01-14 > >> 00:00:00 > >> 1234561 1983-01-02 00:00:00 Male > >> GlipiZIDE-Metformin HCl 2.5-250 MG Tablet > >> 2007-09-28 00:00:00 > >> 1234561 1983-01-02 00:00:00 Male > >> GlipiZIDE-Metformin HCl 2.5-250 MG Tablet > >> 2007-09-28 00:00:00 > >> 1234562 1963-12-27 00:00:00 Female > >> GlipiZIDE-Metformin HCl 2.5-250 MG Tablet > >> 2007-09-28 00:00:00 > >> 1234562 1963-12-27 00:00:00 Female > >> GlipiZIDE-Metformin HCl 2.5-250 MG Tablet > >> 2008-07-28 00:00:00 > >> 1234563 1983-02-25 00:00:00 Male > >> GlipiZIDE-Metformin HCl 2.5-250 MG Tablet > >> 2007-07-28 00:00:00 > >> 1517441 1964-09-01 00:00:00 Female > >> Glucophage TABS 2007-07-23 00:00:00 > >> 1517441 1964-09-01 00:00:00 Female > >> Glucophage TABS 2007-07-23 00:00:00 > >> 1516986 1995-06-13 00:00:00 Male > >> Metformin HCl 1000 MG Tablet 2007-12-04 > >> 00:00:00 > >> ]] — (sample run, using healthCare/in-list tests) > >> > >> > >> > * Eric Prud'hommeaux <eric@w3.org> [2008-10-01 05:45-0400] > >> > > I've extended these queries to include (contra)indications by > >> ingredient: > >> > > [[ > >> > > PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> > >> > > PREFIX Person: <http://hospital.example/DB/Person#> > >> > > PREFIX Sex_DE: <http://hospital.example/DB/Sex_DE#> > >> > > PREFIX Item_Medication: <http://hospital.example/DB/Item_Medication#> > >> > > PREFIX Medication: <http://hospital.example/DB/Medication#> > >> > > PREFIX Medication_DE: <http://hospital.example/DB/Medication_DE#> > >> > > PREFIX NDCcodes: <http://hospital.example/DB/NDCcodes#> > >> > > > >> > > SELECT ?person ?dob ?sex ?takes ?contraItem WHERE { > >> > > ?person Person:MiddleName ?middleName ; > >> > > Person:DateOfBirth ?dob ; > >> > > Person:SexDE ?sexEntry . > >> > > ?sexEntry Sex_DE:EntryName ?sex . > >> > > > >> > > ?indicItem Item_Medication:PatientID ?person ; > >> > > Item_Medication:EntryName ?takes . > >> > > ?indicMed Medication:ItemID ?indicItem ; > >> > > Medication:MedDictDE ?indicDE . > >> > > ?indicDE Medication_DE:NDC ?indicNDC . > >> > > ?indicCode NDCcodes:NDC ?indicNDC ; > >> > > NDCcodes:ingredient 6809 . > >> > > > >> > > OPTIONAL { > >> > > ?contraItem Item_Medication:PatientID ?person . > >> > > ?contraMed Medication:ItemID ?contraItem ; > >> > > Medication:MedDictDE ?contraDE . > >> > > ?contraDE Medication_DE:NDC ?contraNDC . > >> > > ?contraCode NDCcodes:NDC ?contraNDC ; > >> > > NDCcodes:ingredient 11289 > >> > > } > >> > > FILTER (?dob < "1984-01-01T00:00:00"^^xsd:dateTime && > >> !BOUND(?contraItem)) > >> > > } LIMIT 30 > >> > > ]] > >> > > > >> > > yielding: > >> > > [[ > >> > > > >> +---------+---------------------+--------+-------------------------------------------+ > >> > > | person | dob | sex | takes > >> | > >> > > > >> +---------+---------------------+--------+-------------------------------------------+ > >> > > | 1517441 | 1964-09-01 00:00:00 | Female | Glucophage TABS > >> | > >> > > | 1517441 | 1964-09-01 00:00:00 | Female | Glucophage TABS > >> | > >> > > | 1517000 | 1958-01-01 00:00:00 | Male | Metformin HCl 500 MG > >> Tablet | > >> > > | 1517000 | 1958-01-01 00:00:00 | Male | Metformin HCl 500 MG > >> Tablet | > >> > > | 1517403 | 1981-05-11 00:00:00 | Male | Metformin HCl 500 MG > >> Tablet | > >> > > | 1505583 | 1950-02-25 00:00:00 | Female | Metformin HCl 500 MG > >> Tablet | > >> > > | 1234561 | 1983-01-02 00:00:00 | Male | GlipiZIDE-Metformin HCl > >> 2.5-250 MG Tablet | > >> > > | 1234561 | 1983-01-02 00:00:00 | Male | GlipiZIDE-Metformin HCl > >> 2.5-250 MG Tablet | > >> > > | 1234562 | 1963-12-27 00:00:00 | Female | GlipiZIDE-Metformin HCl > >> 2.5-250 MG Tablet | > >> > > | 1234562 | 1963-12-27 00:00:00 | Female | GlipiZIDE-Metformin HCl > >> 2.5-250 MG Tablet | > >> > > | 1517441 | 1964-09-01 00:00:00 | Female | Glucophage TABS > >> | > >> > > | 1517441 | 1964-09-01 00:00:00 | Female | Glucophage TABS > >> | > >> > > > >> +---------+---------------------+--------+-------------------------------------------+ > >> > > ]] > >> > > > >> > > > >> > > The birthdate limitation is set for < 1984-01-01 in order to eliminate > >> > > > >> +---------+---------------------+------+-------------------------------------------+ > >> > > | person | dob | sex | takes > >> | > >> > > > >> +---------+---------------------+------+-------------------------------------------+ > >> > > | 1234563 | 1983-02-25 00:00:00 | Male | GlipiZIDE-Metformin HCl > >> 2.5-250 MG Tablet | > >> > > > >> +---------+---------------------+------+-------------------------------------------+ > >> > > > >> > > The dupes appear to come from identical Medication.ItemID for probably > >> > > different dates: > >> > > [[ > >> > > mysql> select * from Medication where ItemID=10276300039; > >> > > > >> +-------------+-------------+--------------------+-------------+------+--------+------------------------+--------------------+------------+----------------+-----------+ > >> > > | ID | ItemID | FormOfMedicationDE | FreqUnitsDE | > >> Dose | Refill | RoutOfAdministrationDE | QuantityToDispense | > >> DaysToTake | PrescribedByID | MedDictDE | > >> > > > >> +-------------+-------------+--------------------+-------------+------+--------+------------------------+--------------------+------------+----------------+-----------+ > >> > > | 10276300041 | 10276300039 | 0 | 2 | > >> 1 | 0 | 15 | 0 | 0 > >> | 1524566 | 90346 | > >> > > | 10307800003 | 10276300039 | 0 | 2 | > >> 1 | 0 | 15 | 0 | 0 > >> | 1524566 | 90346 | > >> > > > >> +-------------+-------------+--------------------+-------------+------+--------+------------------------+--------------------+------------+----------------+-----------+ > >> > > ]] > >> > > Fixing date ranges in the query will help this, I expect. > >> > > > >> > > > >> > > * Eric Prud'hommeaux <eric@w3.org> [2008-10-01 01:32-0400] > >> > > > Given some data that Helen added to db: > >> > > > <http://www.w3.org/2008/04/DiabeticPatientsDataSet/MockPerson.csv> > >> > > > > >> <http://www.w3.org/2008/04/DiabeticPatientsDataSet/MockMedication.csv> > >> > > > > >> <http://www.w3.org/2008/04/DiabeticPatientsDataSet/MockItem_Medication.csv> > >> > > > and the latest version of SWObjects: > >> > > > <http://www.w3.org/2008/04/SPARQLfed/> > >> > > > I tested the SPARQL-SQL mapping on a sample query > >> > > > tests/execute_HealthCare1 tests/query_stem:Person.rq -s > >> http://hospital.example/DB/ > >> > > > <http://www.w3.org/2008/04/SPARQLfed/tests/query_stem:Person.rq> > >> > > > > >> > > > got an SQL query: > >> > > > [[ > >> > > > SELECT person.id AS person, person.DateOfBirth AS dob, > >> sexEntry.EntryName AS sex, medication.id AS medication, > >> opt1.contraIndic AS contraIndic > >> > > > FROM Person AS person > >> > > > INNER JOIN Sex_DE AS sexEntry ON > >> sexEntry.id=person.SexDE > >> > > > INNER JOIN Item_Medication AS medication ON > >> medication.PatientID=person.id AND > >> medication.EntryName="GlipiZIDE-Metformin HCl 2.5-250 MG Tablet" > >> > > > LEFT OUTER JOIN ( > >> > > > SELECT contraIndic.PatientID AS person, contraIndic.id AS > >> contraIndic > >> > > > FROM Item_Medication AS contraIndic > >> > > > WHERE contraIndic.EntryName="Warfarin Sodium 5 MG Tablet" > >> > > > ) AS opt1 ON opt1.person=person.id > >> > > > WHERE (person.DateOfBirth < "1980-01-01 00:00:00" AND > >> !(opt1.contraIndic IS NOT NULL)) > >> > > > LIMIT 10 > >> > > > ]] > >> > > > > >> > > > executed it, and got: > >> > > > > >> +---------+---------------------+--------+-------------+-------------+ > >> > > > | person | dob | sex | medication | > >> contraIndic | > >> > > > > >> +---------+---------------------+--------+-------------+-------------+ > >> > > > | 1234562 | 1963-12-27 00:00:00 | Female | 99999999003 | > >> NULL | > >> > > > | 1234562 | 1963-12-27 00:00:00 | Female | 99999999004 | > >> NULL | > >> > > > > >> +---------+---------------------+--------+-------------+-------------+ > >> > > > > >> > > > I encourage folks to play more. Also, probably time to start > >> working on > >> > > > the construct rules that allow the SPARQL query to work over HL7 > >> data. > >> > > > > >> > > > Holger, could you build a DOS/WIN version of the code and > >> distribute it > >> > > > or make it available to folks who want to help? > >> > > > > >> > > > office: +1.617.258.5741 32-G528, MIT, Cambridge, MA 02144 USA > >> > > > mobile: +1.617.599.3509 > >> > > > > >> > > > (eric@w3.org) > >> > > > Feel free to forward this message to any list for any purpose > >> other than > >> > > > email address distribution. > >> > > > >> > > > >> > > > >> > > > >> > > office: +1.617.258.5741 32-G528, MIT, Cambridge, MA 02144 USA > >> > > mobile: +1.617.599.3509 > >> > > > >> > > (eric@w3.org) > >> > > Feel free to forward this message to any list for any purpose > >> other than > >> > > email address distribution. > >> > > >> > > >> > > >> > > >> > office: +1.617.258.5741 32-G528, MIT, Cambridge, MA 02144 USA > >> > mobile: +1.617.599.3509 > >> > > >> > (eric@w3.org) > >> > Feel free to forward this message to any list for any purpose other than > >> > email address distribution. > >> > >> > PREFIX sdtm: <http://www.sdtm.org/vocabulary#> > >> > PREFIX spl: > >> <http://www.hl7.org/v3ballot/xml/infrastructure/vocabulary/vocabulary#> > >> > > >> > SELECT ?patient ?dob ?sex ?takes ?indicDate # ?indicEnd ?contra > >> > WHERE { > >> > ?patient a sdtm:Patient ; > >> > sdtm:middleName ?middleName ; > >> > sdtm:dateTimeOfBirth ?dob ; > >> > sdtm:sex ?sex . > >> > > >> > [ sdtm:subject ?patient ; > >> > sdtm:standardizedMedicationName ?takes ; > >> > > >> > # nothing by ingredient in sdtm/caBIG/... > >> > spl:activeIngredient [ spl:classCode 6809 ] ; > >> > sdtm:startDateTimeOfMedication ?indicDate > >> > # ; sdtm:endDateTimeOfMedication ?indicEnd > >> > ] . > >> > # OPTIONAL { > >> > # [ sdtm:subject ?patient ; > >> > # sdtm:standardizedMedicationName ?contra ; > >> > # spl:activeIngredient [ spl:classCode 11289 ] > >> > # sdtm:effectiveTime [ > >> > # sdtm:startDateTimeOfMedication ?contraDate > >> > # # ; sdtm:endDateTimeOfMedication ?contraEnd > >> > # ] . > >> > # } > >> > } LIMIT 30 > >> > PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> > >> > PREFIX hl7: > >> <http://www.hl7.org/v3ballot/xml/infrastructure/vocabulary/vocabulary#> > >> > PREFIX spl: > >> <http://www.hl7.org/v3ballot/xml/infrastructure/vocabulary/vocabulary#> > >> > > >> > PREFIX sdtm: <http://www.sdtm.org/vocabulary#> > >> > PREFIX bridg: <> > >> > PREFIX caBIG: <> > >> > PREFIX CDASH: <> > >> > PREFIX MHONG: <> > >> > PREFIX dam: <> > >> > > >> > CONSTRUCT { > >> > ?patient > >> > a > >> sdtm:Patient ; > >> > sdtm:middleName > >> ?middleName ; > >> > sdtm:dateTimeOfBirth ?dob ; > >> > sdtm:sex ?sex . > >> > [ a sdtm:ConcomitantMedication ; > >> > sdtm:subject ?patient ; > >> > sdtm:standardizedMedicationName > >> ?takes ; > >> > > >> > # nothing by ingredient in sdtm/caBIG/... > >> > spl:activeIngredient [ spl:classCode ?ingred ] ; > >> > sdtm:startDateTimeOfMedication ?start > >> > # ; sdtm:endDateTimeOfMedication ?end > >> > ] . > >> > } WHERE { > >> > ?patient > >> > a > >> hl7:Person ; > >> > hl7:entityName > >> ?middleName ; > >> > hl7:livingSubjectBirthTime ?dob ; > >> > hl7:administrativeGenderCodePrintName ?sex ; > >> > hl7:substanceAdministration [ > >> > a hl7:SubstanceAdministration ; > >> > hl7:consumable [ > >> > hl7:displayName ?takes ; > >> > spl:activeIngredient [ > >> > spl:classCode ?ingred > >> > ] > >> > ] ; > >> > hl7:effectiveTime [ > >> > hl7:start ?start > >> > # hl7:end ?end > >> > ] > >> > ] . > >> > } > >> > >> > PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> > >> > PREFIX Person: <http://hospital.example/DB/Person#> > >> > PREFIX Sex_DE: <http://hospital.example/DB/Sex_DE#> > >> > PREFIX Item_Medication: <http://hospital.example/DB/Item_Medication#> > >> > PREFIX Medication: <http://hospital.example/DB/Medication#> > >> > PREFIX Medication_DE: <http://hospital.example/DB/Medication_DE#> > >> > PREFIX NDCcodes: <http://hospital.example/DB/NDCcodes#> > >> > > >> > PREFIX hl7: > >> <http://www.hl7.org/v3ballot/xml/infrastructure/vocabulary/vocabulary#> > >> > PREFIX spl: > >> <http://www.hl7.org/v3ballot/xml/infrastructure/vocabulary/vocabulary#> > >> > > >> > CONSTRUCT { > >> > ?person > >> > a > >> hl7:Person ; > >> > hl7:entityName > >> ?middleName ; > >> > hl7:livingSubjectBirthTime ?dob ; > >> > hl7:administrativeGenderCodePrintName ?sex ; > >> > hl7:substanceAdministration [ > >> > a hl7:SubstanceAdministration ; > >> > hl7:consumable [ > >> > hl7:displayName ?takes ; > >> > spl:activeIngredient [ > >> > spl:classCode ?ingred > >> > ] > >> > ] ; > >> > hl7:effectiveTime [ > >> > hl7:start ?indicDate > >> > # hl7:end (?indicDate + ?indicDuration) > >> > ] > >> > ] . > >> > } WHERE { > >> > ?person Person:MiddleName > >> ?middleName ; > >> > Person:DateOfBirth ?dob ; > >> > Person:SexDE > >> ?sexEntry . > >> > > >> > OPTIONAL { > >> > ?sexEntry Sex_DE:EntryName ?sex . > >> > } > >> > > >> > OPTIONAL { > >> > ?indicItem Item_Medication:PatientID ?person ; > >> > Item_Medication:PerformedDTTM ?indicDate ; > >> > Item_Medication:EntryName ?takes . > >> > ?indicMed Medication:ItemID > >> ?indicItem ; > >> > Medication:DaysToTake > >> ?indicDuration ; > >> > Medication:MedDictDE ?indicDE . > >> > ?indicDE Medication_DE:NDC > >> ?indicNDC . > >> > } > >> > > >> > OPTIONAL { > >> > ?indicCode NDCcodes:NDC ?indicNDC ; > >> > NDCcodes:ingredient ?ingred . > >> > } > >> > } LIMIT 30 > >> > >> > >> > >> > >> > >> office: +1.617.258.5741 32-G528, MIT, Cambridge, MA 02144 USA > >> mobile: +1.617.599.3509 > >> > >> (eric@w3.org) > >> Feel free to forward this message to any list for any purpose other than > >> email address distribution. > >> > >> There are subtle nuances encoded in font variation and clever layout > >> which can only be seen by printing this message on high-clay paper. > -- -eric office: +1.617.258.5741 32-G528, MIT, Cambridge, MA 02144 USA mobile: +1.617.599.3509 (eric@w3.org) Feel free to forward this message to any list for any purpose other than email address distribution.
Received on Wednesday, 25 February 2009 15:46:42 UTC