AUG Email 2010_Jul-Dec
Last Updated: 12/09/2010
AMIA CRI Summit – Request for Information [12-09-2010]
On 12/09/10 9:33 AM, Shawn Murphy wrote:
Dear Colleagues,
The Scientific Program Committee (SPC) of the 2011 AMIA Clinical Research Informatics Summit (http://jointsummits2011.amia.org/) is exploring options to provide members of the CRI with content targeting practical, applications-oriented solutions to common data, information, and knowledge management needs commonly found in the clinical research environment. As part of these efforts, we would like to solicit your input and feedback, particularly with regard to the following four questions:
1. What types of practical, application-oriented solutions would you be most interested in learning about if you if you were to attend the 2011 AMIA Clinical Research Informatics Summit? Examples could include i2b2, REDCap, Profiles, Vivo, and caGrid/TRIAD.
2. Would the availability of this type of content make the 2011 AMIA Clinical Research Informatics Summit more desirable for you to attend?
3. What type of format would be best for delivering content targeting practical, application-oriented solutions to common data, information, and knowledge management needs commonly found in the clinical research environment? Examples could include professional networking opportunities, workshops, demonstrations, or tutorials.
4. Do you have any other comments or suggestions regarding the format and content of the 2011 AMIA Clinical Research Informatics Summit?
Thank you in advance for your input and comments – we appreciate your help in making the 2011 AMIA Clinical Research Informatics Summit an exciting and highly valuable meeting for members of the CRI community.
Please contact Shawn Murphy, Paul Harris, or Philip Payne with your ideas.
Using i2b2 in a Cancer Registry [12-03-2010]
On 12/03/10 9:12 AM, Zak Kohane wrote:
Two efforts that I am aware of:
1. IBD registry led out of Cincinnati
2. JRA registry led out of CARRANet
members of both on this mailing list and I think each network has 30-60 sites.
Zak
On 12/03/10 8:05 AM, Jeff Cowall wrote:
Is anybody out there using or considering i2b2 in relation to a traditional Cancer Registry, or with NAACCR or Impac/MetrIQ data?
I'd like to get in contact if you are.
Thanks,
Jeff Cowall
i2b2 Web Client Additional Plug-ins [12-03-2010]
On 12/03/10 8:04 AM, Shawn Murphy wrote:
Hi Paul,
There are some plug-ins included with the main web client distribution, but none currently distributed separately. They will be coming in the release of 1.6 however, and more yet as the community web client project develops.
Thanks,
Shawn.
On 12/02/10 3:03 PM, Paul Avillach wrote:
Hi,
I'm looking for additional plugins already developed to analyze patient sets in the web client 1.5.
Is there a central repository?
Best Regards
Paul Avillach
SNOMED-CT with i2b2 [11-19-2010]
On 11/19/10 9:32 AM, Keith Marsolo wrote:
There was a group at UTHealth that presented a poster at this week's AMIA conference that talked about doing a mapping between SNOMED and i2b2. I'm not sure if anyone involved in that research is on the AUG mailing list, but it seemed like it would be possible to leverage their work. I talked to the main author, Krishna Kookal and he said they weren't quite ready to release their code, but would do so sometime soon.
Here's a link to the poster via the infuriating new AMIA proceedings website: http://proceedings.amia.org/120tpv
Since it's also indexed via Google, I'm assuming the site is open to the public, but I don't know if that's unintentional or by design.
Keith
On 11/19/10 9:17 AM, Bill Adams wrote:
At BU we are moving incrementally starting with EHR-based vitals and growth concepts (only 3000+ terms to go after that...) to support our cardiovascular outcomes project.
Happy to share our vitals to SNOMED-CT map file when ready.
Bill Adams
On 11/19/10 5:28 AM, Nick Holden wrote:
Thanks, Lori.
I suspect that our questionnaire covers more than one category of SNOMED codes, although it has a cardiovascular focus - we ask about the participant's medical history, their family history, their risk factors and their current and previous treatment and interventions.
I've seen several projects around the NLP challenge which talk about taking free text and seeking to code it in SNOMED for use in i2b2 which was why I hoped someone had already built a SNOMED terms ontology.
Nick
On 11/17/10 8:47 AM, Lori Phillips wrote:
Hi Nick,
You would need to create a metadata table that is comprised of SNOMED terms. i.e. the ontology in the Navigate Terms view would be SNOMED terms.
In addition, the concept_dimension table would need to be populated with these terms as well.
As luck would have it, I am currently working on an effort to provide SNOMED terms in a format that i2b2 understands. The primary challenge I am facing right now is handling the volume of data that is generated. Is there is a sub category of SNOMED terms that you are primarily interested in? It would be easier to try to convert a subset of SNOMED instead of the entire ontology.
Lori
On 11/17/10 8:02 AM, Nick Holden wrote:
Hi all,
This is probably a really basic question but if we have a source of data which is currently coded only with a locally-devised questionnaire coding system, and we want to map the data to a recognised standard, are there preferences for doing so in order to make the process of loading the data into i2b2 as simple as possible? For instance, if we mapped the questionnaire to SNOMED-CT terms (which is widely used in the NHS), would that be understood by i2b2 without further work?
Thanks,
Nick
Expanding Patient Recordset Tree View Hangs [12-02-2010]
On 12/02/10 5:36 PM, Dan Connolly wrote:
Indeed, replacing nulls with '@' in language_cd, marital_status_cd, and religion_cd of patient_dimension relieved the symptoms.
Thanks again for the clue, James.
On 12/02/10 2:51 PM, Peter Beninato wrote:
Hi,
I think there is a mechanism that uses different pools in i2b2 for longer running queries.
So if the query runs for 1800 seconds it goes to a different pool. Maybe there is a handoff problem in the webclient...
What is the parameter for setting the query time limit (referenced below)?
Can anyone elaborate on the query pool mechanisms in i2b2?
Thx.
Peter Beninato
On 12/02/10 2:46 PM, Dan Connolly wrote:
OK, thanks; that's an interesting clue...
It's quite likely that I didn't replace nulls with @ in the relevant data set here.
I have never understood what those @ signs are doing there.
Is it documented anywhere? Can anybody explain it?
On 12/02/10 2:37 PM, Jacob Weiser wrote:
Hi,
This has happened to me as well(The animated arrow image spins forever) we are on ver 1.5 when trying to debug the error files I have found that this can be caused either due to having characters that the webclient/xml does not like or when running passed a installation defined query time limit(in my case one minute) will cause the arrow to spin indefinitely with the only way out is to log out/in again.
Another caveat to this is in some instances it seems to be hanging without any results but when logging out/in the query results do show up?
The issue here seems to be with I2B2 spinning forever whenever some error is encountered?
Jacob Weiser
On 12/02/10 2:15 PM, James Law wrote:
Hi,
Not sure if you're seeing this in both the webclient and the eclipse client, but we've seen this problem when our data had characters that the webclient did not like, or when we haven't replaced nulls with @ signs.
There were Jira items related to these issues, but they may be closed/resolved with 1.5
James
On 12/02/10 1:36 PM, Dan Connolly wrote:
Hi,
We've got 2 or 3 i2b2 projects that seem to work fine in this respect, but in one of them, we've got the following problem:
1. Start i2b2 and select, say, ages 10-17 from the concept hierarchy and drag it to the query.
2. Hit Run Query
3. Check "Patient Set" in addition to "Patient Count"; click OK
4. Wait for the query to complete
5. In the Previous Queries box, expand the query, then expand the "Results of..."
6. Click the patient set in an attempt to expand it
expected result:
7e. A list of patient descriptions shows up actual result:
7a. The animated arrow image spins forever
We've spent quite some time with firebug and such trying to find the bug, but we're getting lost in the sdx routers and such. We don't really understand how it's supposed to work.
Suggestions, anyone? Has anyone else seen symptoms like this?
Perhaps we should use the i2b2 jira bug tracker to report this problem?
Oh... as to versions and such... all our i2b2 installations are running 1.4, tweaked to work with CAS.
Dan Connolly
i2b2 Patient Demographics [11-16-2010]
On 11/16/10 8:13 AM, Shawn Murphy wrote:
Hi Jacob,
Yes, the default setup for the web query satisfies the "obfuscated user" who is only able to see obfuscated counts. Try loading the timeline plug-in for the web client if it is not already loaded.
Thanks,
Shawn.
On 11/15/10 5:45 PM, Jacob Weiser wrote:
Hi All,
We installed I2B2 web client ver. 1.5 I a'm able to run queries and get back the count of patients but when trying to run the plugins - PDO request for patient detail data I only get back some xml script? Where would I see the actual patient detail? does the plugin cell need to be installed to have this functionality work?
Thanks
Jacob Weiser
i2b2 v1.4 Tuning JBOSS etc [11-16-2010]
On 11/16/20 7:39 AM, Jeremy Nix wrote:
Peter,
We're currently using the following java options in our production environment: "-server -Xms128m -Xmx3g -XX:PermSize=256m -XX:MaxPermSize=256m". These settings more or less help better support concurrent users running queries that result in large cohorts. We still need to do some load testing to find out what our limits are.
As far as performance. You will want to make sure that your tables have been properly indexed. A good way of finding out is to take the query string (generated_sql column) from your i2b2demodata.qt_query_master table and review the execution plan for that query.
Something else you will want to do is make sure that your logging is not set to INFO or DEBUG in your jboss-log4j.xml file (in /opt/jboss/server/default/conf dir). You only want to enable those log levels if there is an issue you are trying to resolve.
You mentioned the crc.properties file. If you make PDO queries (queries that return the actual patient data, fact data, or visit data), then you do want to make sure that your edu.harvard.i2b2.crc.pdo.paging.observation.size is not set too high. This is a server side limit that prevents too many observation_fact records from being returned (which can cause out of memory errors). These limits can also be controlled on the client side in the i2b2 request (by setting the min/max of each input_option_listType), though I'm not familiar enough with the i2b2 web client and Eclipsed based client to know where these settings are configured.
Jeremy Nix
On 11/15/2010 12:36 PM, Peter Beninato wrote:
Hi,
Looking for some tips and hints on tuning an i2b2 installation.
Noticed in the PM documentation regarding changing run.conf for JVM setting ( -Xms512m Xmx1024m) which is how system is currently set. Are there any recommendations for setting this to higher amounts like 2gig?
What about tuning the edu.harvard.i2b2.crc.pdo.paging.observation.size in the etc/spring/crc.properties?
I run queries that will return counts in 80 seconds (40,000+ patients), but the **same** queries will at other times run for 15+ minutes, they appear to complete, but then the clock in the lower right hand window on the webclient, keeps running for several hundred seconds more.
I was thinking this might be related to writing out XML as part of the PDO?
Thanks for any tuning tips.
Peter Beninato
C_METADATAXML Column [11-10-2010]
On 11/10/10 3:20 PM, Mike Mendis wrote:
It is a new feature, which is part of 1.5, of course you can create it yourself. Take a look at the 1.5 Ontology Message Doc 4.1.3 Optional <metadataxml> content
mike
On 11/10/10 3:08 PM, Arvinder Choudhary wrote:
Mike:
We are currently using 1.4, is there any way we can get this working?
Arvinder
On 11/10/10 2:57 PM, Mike Mendis wrote:
Arvinder,
If you are using 1.5, you can create this using the ontology edit terms, which is in the ontology view. This is in the eclipse client.
mike
On 11/10/10 2:54 PM, Arvinder Choudhary wrote:
Team:
We are currently loading the vital observations values and Lab data into i2b2 and C_METADATAXML column that is in i2b2 table is to be populated. I see examples in the demo database. My question is how is this column populated. Is there any program that creates this xml script for this column
Here is the Sample script I pulled from the demo database.
<?xml version="1.0"?>
<ValueMetadata>
<Version>3.02</Version>
<CreationDateTime>11/18/2005 14:53:45</CreationDateTime>
<TestID>APCO2</TestID>
<TestName>Arterial PCO2</TestName>
<DataType>PosInteger</DataType>
<CodeType>GRP</CodeType>
<Loinc>2019-8</Loinc>
<Flagstouse>HL</Flagstouse>
<Oktousevalues>The units in this set of tests are not equivalent, therefore numeric comparisons between the tests are not possible. </Oktousevalues>
<MaxStringLength></MaxStringLength>
<LowofLowValue></LowofLowValue>
<HighofLowValue></HighofLowValue>
<LowofHighValue></LowofHighValue>
<HighofHighValue></HighofHighValue>
<LowofToxicValue></LowofToxicValue>
<HighofToxicValue></HighofToxicValue>
<EnumValues></EnumValues>
<CommentsDeterminingExclusion>
<Com></Com>
</CommentsDeterminingExclusion>
<UnitValues>
<NormalUnits>mm</NormalUnits>
<NormalUnits>hg</NormalUnits>
<NormalUnits>mmhg</NormalUnits>
<NormalUnits>mmhg.</NormalUnits>
<NormalUnits>mm/hg</NormalUnits>
<EqualUnits>mm</EqualUnits>
<EqualUnits>hg</EqualUnits>
<EqualUnits>mmhg</EqualUnits>
<EqualUnits>mmhg.</EqualUnits>
<EqualUnits>mm/hg</EqualUnits>
<ExcludingUnits></ExcludingUnits>
<ConvertingUnits>
<Units></Units>
<MultiplyingFactor></MultiplyingFactor>
</ConvertingUnits>
</UnitValues>
<Analysis>
<Enums />
<Counts />
<New />
</Analysis>
</ValueMetadata>
Regards
Arvinder Choudhary
New Support and Install Mailing List [11-09-2010]
On 11/09/10 4:14 PM, Mike Mendis wrote:
With the growing install and supports questions on the AUG mailing list (a good thing), we have created a new and exciting mailing list located at
http://groups.google.com/group/i2b2-install-help
This will be the future home for any support and install questions, the current AUG mailing list, will be for AUG material.
The mailing list location and can also be found on the community wiki site
http://community.i2b2.org
Thanks
Mike Mendis
i2b2 Lockout Logic [11-04-2010]
On 11/04/10 10:49 AM, Shawn Murphy wrote:
Hi Jeremy,
Many of the details of the algorithm (and the logic behind it) are nestled in the paper:
Murphy, S.N., Chueh, H. A Security Architecture for Query Tools Used to Access Large Biomedical Databases. Journal of the American Medical Informatics Association, Symposium Supplement 2002; 552-556.
We do look at the resulting number of patients and not the logic of the query for repeats. Clearly it is much simpler to look at the number, but I would also assert that looking at comparable logic in queries is an intractable problem when one considers all the ways that the same logical query could be formulated (and further ways that are coming down the pipeline, such as query in queries and patient/encounter set in queries). I had your same concern about arbitrary lockouts, but in the 8 years of implementing the algorithm at Partners Healthcare with 2500 users on the system, we have had less than 10 lockouts, and the majority were people blindly repeating the same query. This makes sense when one considers that most queries on a large database return between 1000-300,000 patients, so there is lots of opportunity for different numbers.
Thanks,
Shawn.
On 11/03/10 3:12 PM, Jeremy Nix wrote:
I had some questions with respect to the obfuscated role user lockout logic. I'm looking at the query that gets generated and trying to determine exactly what the lockout criteria is. Let's start with the query (QueryResultInstanceSpringDao:251):
SELECT COUNT(r1.result_instance_id) result_count
FROM qt_query_result_instance r1
INNER JOIN qt_query_result_instance r2 ON r1.real_set_size = r2.real_set_size,
qt_query_instance qi
WHERE r1.start_date BETWEEN (sysdate - (30)) AND sysdate
AND r2.start_date BETWEEN (sysdate - (30)) AND sysdate
AND r1.result_type_id = (4) – PATIENT_COUNT_XML
AND r2.result_type_id = (4) – PATIENT_COUNT_XML
AND qi.user_id = ('demo') – Current user
AND qi.query_instance_id = r1.query_instance_id
AND qi.query_instance_id = r2.query_instance_id
AND r1.real_set_size = (0) – Patient count of current query
GROUP BY r1.real_set_size
HAVING COUNT(r1.result_instance_id) > (7)
This is formatted example of the oracle version using the defaults: a user will be locked out if they execute the same query 7 times within the last 30 days...(at least that is my interpretation as to what the requirement is). First off, I believe that the inner join is an unnecessary step. The qt_query_result_instance record ends up joining in on itself. The following query produced the same results:
SELECT COUNT(r1.result_instance_id) result_count
FROM qt_query_result_instance r1,
qt_query_instance qi
WHERE r1.start_date BETWEEN (sysdate - (30)) AND sysdate
AND r1.result_type_id = (4) – PATIENT_COUNT_XML
AND qi.user_id = ('demo') – Current user
AND qi.query_instance_id = r1.query_instance_id
AND r1.real_set_size = (0) – Patient count of current query
GROUP BY r1.real_set_size
HAVING COUNT(r1.result_instance_id) > (7)
That's minor though. What I'm really trying to understand is why i2b2 is assuming that any query that has the same result set size and result type is the same. After all, if a given user is designated the task of coming up with patient cohorts for specific studies, there's a relatively good chance that they may get the same result count within 30 days (I do realize this is configurable), assuming they're running queries multiple times a day. We were worried about the case where running 7 queries that return no patients would lock out the user, but it appears that the application does handle the 0 patient count as a special case.
Do we think there would be benefit in comparing the queries more closely to see if they are actually the same query? One thought (although it has flaws of its own) is to compare the GENERATED_SQL (or the REQUEST_XML) columns to see if they used the same query criteria when running the query. As stated, it has its flaws. If you take the simple approach (as I probably would) and compare the GENERATED_SQL directly, you miss the case where the users have constructed the same query using different panels to formulate the criteria.
A much more involved option would be to create a sql function that compared the 2 xml request documents for equality. For queries to be equal, each panel in 1 query master request xml would have to be equal (minus panel name and panel number) to a panel in a 2nd query master request xml. Again, this isn't impossible to do, just more involved.
Is there any interest to adopting any one of these 2 lockout lookup alternatives? We would be happy to develop and contribute back either solution. If not, are there plans to enhance this functionality in some other way in the future?
Thanks,
Jeremy Nix
IRB-Friendly Architecture and Processes [11-03-2010]
On 11/03/10 9:29 AM, Russ Waitman wrote:
Brian,
I built off Keith's protocol and am attaching our IRB protocol which may help. We have slightly different challenges here because the hospital, clinics, and university (medical center) are separate organizations. In addition to the IRB protocol we had to negotiate a new legal agreement and develop an oversight process with the different organizations. You may not require that. We've established i2b2 for the participant registry since we already had that data. We're in the process of loading the hospital data from Epic and are beginning the discussion on how we'll do ETL from the clinics' IDX system.
Russ Waitman
On 11/02/10 1:09 PM, Michael Kamerick wrote:
I started a governance archive on the CTSA wiki a couple of years ago. It contains IRB documents from UCSF, OHSU, Cincinnati, and Kaiser, as well as supporting documents around data usage and access. If you are a CTSA institution, you should have access to it. Here is the link:
https://www.ctsawiki.org/wiki/pages/viewpageattachments.action?pageId=20152842
For those who are not in the CTSA, I have attached the UCSF IRB document along with a few other docs.
At UCSF, like many sites, we provide a concierge service for identified data. Users can browse the de-identified data in i2b2, develop a cohort, and then request the identified version of the cohort from our staff. We check their IRB protocol and provide the data accordingly.
However, at UCSF we do take the process a significant step further, and that step has won us a lot of favor with our IRB and Medical Center IT organization.
We have developed a secure research portal we call MyResearch. It provides a remoted environment, somewhat like a Citrix installation (though we use a different product). Users access the i2b2 workbench, their data, and numerous applications through this portal. Data remains on our servers and applications run on the servers but display on the local workstation/laptop.
Any data set containing PHI that is extracted from our backend data bases (which feed i2b2), or straight from the major clinical systems in the Medical Center, can only be delivered to the user by depositing it in their MyResearch account. This workflow is mandated by a policy developed by our Privacy Office, our IRB (which we call CHR), Medical Center IT, and my group, which is part of the campus IT organization and the CTSA.
I have attached our IRB protocol document, a simplified schematic of our systems environment, and a short document explaining our policies on access to clinical data for research.
Michael Kamerick
On 11/02/10 7:27 AM, Brian Bush wrote:
Greetings – we at Virginia Commonwealth University are in the process of implementing an i2b2 instance, and would be interested to know what architectural and procedural approaches you are taking to satisfy patient privacy concerns, particularly from your IRB.
Keith at Cincinnati Children's posted an IRB Protocol document <http://sites.google.com/a/i2b2aug.org/discussions/Home/release-discussions-postings/i2b2irb> over a year ago, which was very helpful in explaining their approach (at least at the time), and I'd be very interested in hearing what others have done, particularly your process for handling "re-identification."
Many thanks in advance,
Brian J. Bush
i2b2 Query by Value (ENUM) Example Needed [11-01-2010]
On 11/1/10 11:32 AM, Peter Beninato wrote:
Hmmm...
So perhaps this is an issue in v1.4
On 11/1/10 11:21 AM, Jack London wrote:
We use the web client Query & Analysis Tool, v1.5.
Jack
On 11/1/10 11:18 AM, Peter Beninato wrote:
Hi,
Do you use the thick client or the web client?
And what version of i2b2 are you running?
Thanks.
Peter
On 11/1/10 10:21 AM, Jack London wrote:
Peter,
I was able to get this to work for our biospecimen ontology where we wanted to use query-by-value to select either "malignant" or "normal" tissue (or both). (BTW, we will probably use the cd_modifier functionality in v1.6 in the future to accomplish this.) Below is the C_METADATAXML field in the metadata table for the biospecimens:
====================================
<?xml version="1.0"?>
<ValueMetadata><Version>3.02</Version>
<CreationDateTime>05/19/2010 04:01:06</CreationDateTime>
<TestID>Specimen Path Status</TestID>
<TestName>Specimen Path Status</TestName>
<DataType>Enum</DataType>
<CodeType>GRP</CodeType>
<Loinc>No LOINC</Loinc>
<Flagstouse></Flagstouse>
<Oktousevalues>Y</Oktousevalues>
<MaxStringLength></MaxStringLength>
<LowofLowValue></LowofLowValue>
<HighofLowValue></HighofLowValue>
<LowofHighValue></LowofHighValue>
<HighofHighValue></HighofHighValue>
<LowofToxicValue></LowofToxicValue>
<HighofToxicValue></HighofToxicValue>
<EnumValues>
<Val description="">Normal</Val>
<Val description="">Malignant</Val>
</EnumValues>
<CommentsDeterminingExclusion>
<Com></Com>
</CommentsDeterminingExclusion>
<UnitValues>
<NormalUnits></NormalUnits>
</UnitValues>
<Analysis>
<Enums /><Counts /><New />
</Analysis>
</ValueMetadata>
====================================
In the OBSERVATION_FACT table, the VALTYPE_CD = "T" and TVAL_CHAR = "Normal" or "Malignant"
(I also set MODIFIER_CD = "Normal" or "Malignant" but I do not think this is in any way necessary.)
Jack
On 10/29/10 6:18 PM, Peter Beninato wrote:
Hi,
Working on trying to allow a Query-by-Value to work for Text Values.
I'm using the demo and I can't say I have ever seen it work. (I have query-by NUMERIC Value working)
I have noticed the use of Enum Values in the ontology c_metadataxml field.
By way of example I'm using
I2b2.c_basecode = 'LOINC:9317-9'
Or
select *
from i2b2
where c_basecode LIKE 'LOINC:9317-9%'
In the c_metadataxml there is a datatype of ENUM as in <DataType>Enum</DataType>
I have used Query-by-Value before with "NUMBER" data. In those cases the DataType is set to "PosFloat" and in the observation the valtype_cd is set to 'N'.
In the example for = 'LOINC:9317-9', The valtype_cd is set to 'T' and the XML Datatype is "ENUM"
However, when I run for different values that are shown in the ENUM like 'NL', 'NORMAL' , these values **ARE NOT** included in the SQL found in qt_query_master, so it is like no filter is being applied.
What does the XML need to be to get a text/enum query-by-value to work? How do the fields in observation_fact need to be set?
Is there a "LAB" in the demo that does work for ENUM values?
Thanks.