/**
* -----------------------------------------------------------------------------------
* (c) 2010-2014 OpenInfobutton Project, Biomedical Informatics, University of Utah
* Contact: {@code <andrew.iskander@utah.edu>}
* Biomedical Informatics
* 421 Wakara Way, Ste 140
* Salt Lake City, UT 84108-3514
* Day Phone: 1-801-581-4080
* -----------------------------------------------------------------------------------
*
* @author Andrew Iskander {@code <andrew.iskander@utah.edu>}
* @version Jun 13, 2014
*/
package org.openinfobutton.service.matching;
import org.junit.Assert;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.containsString;
import org.openinfobutton.schema.KnowledgeRequest;
import org.openinfobutton.service.fixture.OibServiceTestFixture;
import org.openinfobutton.service.utility.WebServiceUtility;
import org.openinfobutton.service.web.KnowledgeRequestEngine;
import org.springframework.beans.factory.annotation.Autowired;
public class ContextMatcherTest
extends OibServiceTestFixture
{
@Autowired
KnowledgeRequestEngine engine;
@Test
public void cysticICD9RequestTest()
{
final KnowledgeRequest request = WebServiceUtility.getServiceRequest( cystitisICD9Request() );
final String xml = marshallXML( engine.getResponse( request ) );
Assert.assertThat( xml, containsString( "http://www.nlm.nih.gov/medlineplus/bladderdiseases.html" ) );
Assert.assertThat( xml,
containsString( "http://www.elsinfobutton.com/info/1030?taskContext.c.c=PROBLISTREV&"
+ "taskContext.c.cs=2.16.840.1.113883.5.4&"
+ "mainSearchCriteria.v.c=595.9&mainSearchCriteria.v.cs=2.16.840.1.113883.6.103&"
+ "mainSearchCriteria.v.dn=Cystitis&" ) );
Assert.assertThat( xml,
containsString( "http://www.uptodate.com/online/content/search.do?searchType=HL7&" +
"taskContext.c.c=PROBLISTREV&"
+ "taskContext.c.cs=2.16.840.1.113883.5.4&"
+ "ageGroup.v.c=D008875&ageGroup.v.cs=2.16.840.1.113883.6.177&"
+ "patientPerson.administrativeGenderCode.c=F&"
+ "patientPerson.administrativeGenderCode.cs=2.16.840.1.113883.5.1&"
+ "mainSearchCriteria.v.c=595.9&mainSearchCriteria.v.cs=2.16.840.1.113883.6.103&"
+ "mainSearchCriteria.v.dn=Cystitis&"
+ "subTopic.v.c=Q000175&subTopic.v.cs=2.16.840.1.113883.6.177&" +
"subTopic.v.dn=Diagnosis" ) );
Assert.assertThat( xml, containsString( "http://www.google.com/search?hl=en&btnI=Im+Feeling+Lucky&"
+ "q=Cystitis+site:www.mayoclinic.com/health/&" ) );
Assert.assertThat( xml, containsString( "http://www.ncbi.nlm.nih.gov/pubmed?term=hasabstract[text]" ) );
}
@Test
public void ageDecedentTest()
{
final KnowledgeRequest request = WebServiceUtility.getServiceRequest( decedentAgeRangeTest() );
final String xml = marshallXML( engine.getResponse( request ) );
Assert.assertThat( xml, containsString( "http://www.google.com/search?hl=en&btnI=Im+Feeling+Lucky&"
+ "q=ICD-9+237.79+site:www.medicalhomeportal.org&" ) );
}
@Test
public void subsetMatchingTest()
{
final KnowledgeRequest request = WebServiceUtility.getServiceRequest( subsetRequest() );
final String xml = marshallXML( engine.getResponse( request ) );
Assert.assertThat( xml, containsString( "VisualDx" ) );
}
@Test
public void cysticUMLSRequestTest()
{
final KnowledgeRequest request = WebServiceUtility.getServiceRequest( cystitisUMLSRequest() );
final String xml = marshallXML( engine.getResponse( request ) );
Assert.assertThat( xml, containsString( "http://www.uptodate.com/online/content/search.do?searchType=HL7&"
+ "taskContext.c.c=PROBLISTREV&taskContext.c.cs=2.16.840.1.113883.5.4&"
+ "ageGroup.v.c=D008875&ageGroup.v.cs=2.16.840.1.113883.6.177&"
+ "patientPerson.administrativeGenderCode.c=F&"
+ "patientPerson.administrativeGenderCode.cs=2.16.840.1.113883.5.1&"
+ "mainSearchCriteria.v.c=595.0&mainSearchCriteria.v.cs=2.16.840.1.113883.6.103&"
+ "mainSearchCriteria.v.dn=Acute cystitis&subTopic.v.c=Q000175&"
+ "subTopic.v.cs=2.16.840.1.113883.6.177&subTopic.v.dn=Diagnosis" ) );
}
@Test
public void clopidogrelRxNormRequestTest()
{
final KnowledgeRequest request = WebServiceUtility.getServiceRequest( clopidogrelRxNormRequest() );
final String xml = marshallXML( engine.getResponse( request ) );
Assert.assertThat( xml, containsString( "http://www.uptodate.com/online/content/search.do?searchType=HL7&"
+ "taskContext.c.c=MEDOE&taskContext.c.cs=2.16.840.1.113883.5.4&"
+ "ageGroup.v.c=D008875&ageGroup.v.cs=2.16.840.1.113883.6.177&"
+ "patientPerson.administrativeGenderCode.c=F&"
+ "patientPerson.administrativeGenderCode.cs=2.16.840.1.113883.5.1&"
+ "mainSearchCriteria.v.c=32968&mainSearchCriteria.v.cs=2.16.840.1.113883.6.88&"
+ "mainSearchCriteria.v.dn=clopidogrel&" ) );
}
@Test
public void neurofibromatosisSubsetRequestTest()
{
final KnowledgeRequest request = WebServiceUtility.getServiceRequest( neurofibromatosisSubsetRequest() );
final String xml = marshallXML( engine.getResponse( request ) );
Assert.assertThat( xml, containsString( "http://www.google.com/search?hl=en&btnI=Im+Feeling+Lucky&"
+ "q=Neurofibromatosis+site:http://ghr.nlm.nih.gov/&" ) );
Assert.assertThat( xml, containsString( "http://www.google.com/search?hl=en&btnI=Im+Feeling+Lucky&"
+ "q=ICD-9+237.7+site:www.medicalhomeportal.org&" ) );
}
}