use of org.hl7.fhir.r4b.formats.IParser in project dpc-app by CMSgov.
the class ParamResourceFactoryTest method testNonParameter.
@Test
void testNonParameter() throws IOException {
final HttpServletRequest mock = Mockito.mock(HttpServletRequest.class);
final ServletInputStream mockStream = Mockito.mock(ServletInputStream.class);
final Injector mockInjector = Mockito.mock(Injector.class);
Mockito.when(mockInjector.getInstance(HttpServletRequest.class)).thenReturn(mock);
Mockito.when(mock.getInputStream()).thenReturn(mockStream);
final IParser parser = Mockito.mock(IParser.class);
Mockito.when(parser.parseResource(Mockito.eq(Parameters.class), Mockito.any(InputStream.class))).thenThrow(DataFormatException.class);
final ParamResourceFactory factory = new ParamResourceFactory(mockInjector, null, parser);
final WebApplicationException exception = assertThrows(WebApplicationException.class, factory::provide, "Should throw exception");
assertAll(() -> assertEquals(HttpStatus.BAD_REQUEST_400, exception.getResponse().getStatus(), "Should be a bad request"), () -> assertEquals("Resource type must be `Parameters`", exception.getMessage(), "Should have wrong resource message"));
}
use of org.hl7.fhir.r4b.formats.IParser in project dpc-app by CMSgov.
the class ParamResourceFactoryTest method testCannotReadIS.
@Test
void testCannotReadIS() throws IOException {
final HttpServletRequest mock = Mockito.mock(HttpServletRequest.class);
final ServletInputStream mockStream = Mockito.mock(ServletInputStream.class);
final Injector mockInjector = Mockito.mock(Injector.class);
Mockito.when(mockInjector.getInstance(HttpServletRequest.class)).thenReturn(mock);
Mockito.when(mock.getInputStream()).thenReturn(mockStream);
final IParser parser = Mockito.mock(IParser.class);
Mockito.when(parser.parseResource(Mockito.eq(Parameters.class), Mockito.any(InputStream.class))).thenAnswer(answer -> {
throw new IOException();
});
final ParamResourceFactory factory = new ParamResourceFactory(mockInjector, null, parser);
final WebApplicationException exception = assertThrows(WebApplicationException.class, factory::provide, "Should throw exception");
assertAll(() -> assertEquals(HttpStatus.INTERNAL_SERVER_ERROR_500, exception.getResponse().getStatus(), "Should be an internal exception"), () -> assertEquals("Cannot read input stream", exception.getMessage(), "Should have wrong resource message"));
}
use of org.hl7.fhir.r4b.formats.IParser in project dpc-app by CMSgov.
the class DPCProfileSupport method loadProfiles.
private Map<String, StructureDefinition> loadProfiles(FhirContext ctx) {
logger.info("Loading resource profiles");
final Map<String, StructureDefinition> definitionMap = new HashMap<>();
// Generate a validator to pull the base definitions from.
final DefaultProfileValidationSupport defaultValidation = new DefaultProfileValidationSupport();
final HapiWorkerContext hapiWorkerContext = new HapiWorkerContext(ctx, defaultValidation);
final ProfileUtilities profileUtilities = new ProfileUtilities(hapiWorkerContext, new ArrayList<>(), null);
final IParser parser = ctx.newJsonParser();
ServiceLoaderHelpers.getLoaderStream(IProfileLoader.class).map(profileLoader -> toStructureDefinition(parser, profileLoader.getPath())).filter(Objects::nonNull).map(diffStructure -> mergeDiff(ctx, defaultValidation, profileUtilities, diffStructure)).forEach(structure -> definitionMap.put(structure.getUrl(), structure));
return definitionMap;
}
use of org.hl7.fhir.r4b.formats.IParser in project synthea by synthetichealth.
the class FHIRSTU3ExporterTest method testSampledDataExport.
@Test
public void testSampledDataExport() throws Exception {
Person person = new Person(0L);
person.attributes.put(Person.GENDER, "F");
person.attributes.put(Person.FIRST_LANGUAGE, "spanish");
person.attributes.put(Person.RACE, "other");
person.attributes.put(Person.ETHNICITY, "hispanic");
person.attributes.put(Person.INCOME, Integer.parseInt(Config.get("generate.demographics.socioeconomic.income.poverty")) * 2);
person.attributes.put(Person.OCCUPATION_LEVEL, 1.0);
person.attributes.put(Person.CONTACT_EMAIL, "test@test.test");
person.attributes.put(Person.CONTACT_GIVEN_NAME, "John");
person.attributes.put(Person.CONTACT_FAMILY_NAME, "Appleseed");
person.history = new LinkedList<>();
Provider mock = Mockito.mock(Provider.class);
Mockito.when(mock.getResourceID()).thenReturn("Mock-UUID");
person.setProvider(EncounterType.AMBULATORY, mock);
person.setProvider(EncounterType.WELLNESS, mock);
person.setProvider(EncounterType.EMERGENCY, mock);
person.setProvider(EncounterType.INPATIENT, mock);
Long time = System.currentTimeMillis();
int age = 35;
long birthTime = time - Utilities.convertTime("years", age);
person.attributes.put(Person.BIRTHDATE, birthTime);
Payer.loadNoInsurance();
for (int i = 0; i < age; i++) {
long yearTime = time - Utilities.convertTime("years", i);
person.coverage.setPayerAtTime(yearTime, Payer.noInsurance);
}
Module module = TestHelper.getFixture("observation.json");
State encounter = module.getState("SomeEncounter");
assertTrue(encounter.process(person, time));
person.history.add(encounter);
State physiology = module.getState("Simulate_CVS");
assertTrue(physiology.process(person, time));
person.history.add(physiology);
State sampleObs = module.getState("SampledDataObservation");
assertTrue(sampleObs.process(person, time));
person.history.add(sampleObs);
FhirContext ctx = FhirStu3.getContext();
IParser parser = ctx.newJsonParser().setPrettyPrint(true);
String fhirJson = FhirStu3.convertToFHIRJson(person, System.currentTimeMillis());
Bundle bundle = parser.parseResource(Bundle.class, fhirJson);
for (BundleEntryComponent entry : bundle.getEntry()) {
if (entry.getResource() instanceof Observation) {
Observation obs = (Observation) entry.getResource();
assertTrue(obs.getValue() instanceof SampledData);
SampledData data = (SampledData) obs.getValue();
// 0.01s == 10ms
assertEquals(10, data.getPeriod().doubleValue(), 0.001);
assertEquals(3, (int) data.getDimensions());
}
}
}
use of org.hl7.fhir.r4b.formats.IParser in project synthea by synthetichealth.
the class FHIRSTU3ExporterTest method testObservationAttachment.
@Test
public void testObservationAttachment() throws Exception {
Person person = new Person(0L);
person.attributes.put(Person.GENDER, "F");
person.attributes.put(Person.FIRST_LANGUAGE, "spanish");
person.attributes.put(Person.RACE, "other");
person.attributes.put(Person.ETHNICITY, "hispanic");
person.attributes.put(Person.INCOME, Integer.parseInt(Config.get("generate.demographics.socioeconomic.income.poverty")) * 2);
person.attributes.put(Person.OCCUPATION_LEVEL, 1.0);
person.attributes.put("Pulmonary Resistance", 0.1552);
person.attributes.put("BMI Multiplier", 0.055);
person.setVitalSign(VitalSign.BMI, 21.0);
person.history = new LinkedList<>();
Provider mock = Mockito.mock(Provider.class);
Mockito.when(mock.getResourceID()).thenReturn("Mock-UUID");
person.setProvider(EncounterType.AMBULATORY, mock);
person.setProvider(EncounterType.WELLNESS, mock);
person.setProvider(EncounterType.EMERGENCY, mock);
person.setProvider(EncounterType.INPATIENT, mock);
Long time = System.currentTimeMillis();
int age = 35;
long birthTime = time - Utilities.convertTime("years", age);
person.attributes.put(Person.BIRTHDATE, birthTime);
Payer.loadNoInsurance();
for (int i = 0; i < age; i++) {
long yearTime = time - Utilities.convertTime("years", i);
person.coverage.setPayerAtTime(yearTime, Payer.noInsurance);
}
Module module = TestHelper.getFixture("observation.json");
State physiology = module.getState("Simulate_CVS");
assertTrue(physiology.process(person, time));
person.history.add(physiology);
State encounter = module.getState("SomeEncounter");
assertTrue(encounter.process(person, time));
person.history.add(encounter);
State chartState = module.getState("ChartObservation");
assertTrue(chartState.process(person, time));
person.history.add(chartState);
State urlState = module.getState("UrlObservation");
assertTrue(urlState.process(person, time));
person.history.add(urlState);
FhirContext ctx = FhirStu3.getContext();
IParser parser = ctx.newJsonParser().setPrettyPrint(true);
String fhirJson = FhirStu3.convertToFHIRJson(person, System.currentTimeMillis());
Bundle bundle = parser.parseResource(Bundle.class, fhirJson);
for (BundleEntryComponent entry : bundle.getEntry()) {
if (entry.getResource() instanceof Media) {
Media media = (Media) entry.getResource();
if (media.getContent().getData() != null) {
assertEquals(400, media.getWidth());
assertEquals(200, media.getHeight());
assertEquals("Invasive arterial pressure", media.getReasonCode().get(0).getText());
assertTrue(Base64.isBase64(media.getContent().getDataElement().getValueAsString()));
} else if (media.getContent().getUrl() != null) {
assertEquals("https://example.com/image/12498596132", media.getContent().getUrl());
assertEquals("en-US", media.getContent().getLanguage());
assertTrue(media.getContent().getSize() > 0);
} else {
fail("Invalid Media element in output JSON");
}
}
}
}
Aggregations