use of org.codehaus.jackson.node.ArrayNode in project openmrs-module-coreapps by openmrs.
the class CodedOrFreeTextAnswerListWidget method getValue.
@Override
public Object getValue(FormEntryContext context, HttpServletRequest request) {
String fieldName = context.getFieldName(this);
String[] submitted = request.getParameterValues(fieldName);
if (submitted != null && submitted.length > 1) {
throw new IllegalArgumentException("Expected one submitted parameter value for " + fieldName + " but got " + submitted.length);
}
try {
List<CodedOrFreeTextAnswer> results = new ArrayList<CodedOrFreeTextAnswer>();
if (submitted != null && StringUtils.isNotEmpty(submitted[0])) {
ArrayNode array = new ObjectMapper().readValue(submitted[0], ArrayNode.class);
ConceptService conceptService = Context.getConceptService();
for (JsonNode node : array) {
String conceptNameUuid = node.path("ConceptName").getTextValue();
String conceptUuid = node.path("Concept").getTextValue();
String nonCodedValue = node.path("NonCodedValue").getTextValue();
if (conceptNameUuid != null) {
results.add(new CodedOrFreeTextAnswer(conceptService.getConceptNameByUuid(conceptNameUuid)));
} else if (conceptUuid != null) {
results.add(new CodedOrFreeTextAnswer(conceptService.getConceptByUuid(conceptUuid)));
} else {
results.add(new CodedOrFreeTextAnswer(nonCodedValue));
}
}
}
return results;
} catch (IOException e) {
throw new IllegalArgumentException(e);
}
}
use of org.codehaus.jackson.node.ArrayNode in project openmrs-module-coreapps by openmrs.
the class EncounterDiagnosesTagHandlerComponentTest method testHandleSubmissionHandlesValidSubmissionEnteringForm.
@Test
public void testHandleSubmissionHandlesValidSubmissionEnteringForm() throws Exception {
final int codedConceptId = 11;
ObjectMapper jackson = new ObjectMapper();
ArrayNode json = jackson.createArrayNode();
ObjectNode diagnosisNode = json.addObject();
diagnosisNode.put("certainty", "PRESUMED");
diagnosisNode.put("order", "PRIMARY");
diagnosisNode.put("diagnosis", CodedOrFreeTextAnswer.CONCEPT_PREFIX + codedConceptId);
final String jsonToSubmit = jackson.writeValueAsString(json);
final DiagnosisMetadata dmd = emrApiProperties.getDiagnosisMetadata();
final Date date = new Date();
new RegressionTestHelper() {
@Override
public String getXmlDatasetPath() {
return "";
}
@Override
public String getFormName() {
return "encounterDiagnosesSimpleForm";
}
@Override
public Map<String, Object> getFormEntrySessionAttributes() {
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put("uiUtils", new TestUiUtils() {
@Override
public String includeFragment(String providerName, String fragmentId, Map<String, Object> config) throws PageAction {
return "[[ included fragment " + providerName + "." + fragmentId + " here ]]";
}
});
return attributes;
}
@Override
public String[] widgetLabels() {
return new String[] { "Date:", "Location:", "Provider:", "Encounter Type:" };
}
@Override
public void setupRequest(MockHttpServletRequest request, Map<String, String> widgets) {
request.setParameter(widgets.get("Date:"), dateAsString(date));
request.setParameter(widgets.get("Location:"), "2");
request.setParameter(widgets.get("Provider:"), "1");
request.setParameter(widgets.get("Encounter Type:"), "1");
request.setParameter("encounterDiagnoses", jsonToSubmit);
}
@Override
public void testResults(SubmissionResults results) {
results.assertNoErrors();
results.assertEncounterCreated();
results.assertProvider(1);
results.assertLocation(2);
results.assertEncounterType(1);
results.assertObsCreatedCount(1);
results.assertObsGroupCreated(dmd.getDiagnosisSetConcept().getConceptId(), dmd.getDiagnosisCertaintyConcept().getId(), dmd.getConceptFor(Diagnosis.Certainty.PRESUMED), dmd.getDiagnosisOrderConcept().getId(), dmd.getConceptFor(Diagnosis.Order.PRIMARY), dmd.getCodedDiagnosisConcept().getId(), Context.getConceptService().getConcept(codedConceptId));
}
}.run();
}
use of org.codehaus.jackson.node.ArrayNode in project openmrs-module-coreapps by openmrs.
the class EncounterDiagnosesTagHandlerComponentTest method testHandleSubmissionHandlesValidSubmissionEditingForm.
@Test
public void testHandleSubmissionHandlesValidSubmissionEditingForm() throws Exception {
final DiagnosisMetadata dmd = emrApiProperties.getDiagnosisMetadata();
final Date date = new Date();
// first, create an encounter
final Concept malaria = conceptService.getConcept(11);
final Patient patient = patientService.getPatient(8);
final Encounter existingEncounter = new Encounter();
existingEncounter.setEncounterType(new EncounterType(1));
existingEncounter.setPatient(patient);
existingEncounter.setEncounterDatetime(date);
existingEncounter.setLocation(locationService.getLocation(2));
Obs primaryDiagnosis = dmd.buildDiagnosisObsGroup(new Diagnosis(new CodedOrFreeTextAnswer(malaria), Diagnosis.Order.PRIMARY));
Obs secondaryDiagnosis = dmd.buildDiagnosisObsGroup(new Diagnosis(new CodedOrFreeTextAnswer("Unknown disease"), Diagnosis.Order.SECONDARY));
existingEncounter.addObs(primaryDiagnosis);
existingEncounter.addObs(secondaryDiagnosis);
encounterService.saveEncounter(existingEncounter);
ObjectMapper jackson = new ObjectMapper();
ArrayNode json = jackson.createArrayNode();
{
// change the existing primary diagnosis from PRESUMED to CONFIRMED
ObjectNode diagnosisNode = json.addObject();
diagnosisNode.put("certainty", "CONFIRMED");
diagnosisNode.put("order", "PRIMARY");
diagnosisNode.put("diagnosis", CodedOrFreeTextAnswer.CONCEPT_PREFIX + "11");
diagnosisNode.put("existingObs", primaryDiagnosis.getObsId());
}
{
// this is a new diagnosis
ObjectNode diagnosisNode = json.addObject();
diagnosisNode.put("certainty", "PRESUMED");
diagnosisNode.put("order", "SECONDARY");
diagnosisNode.put("diagnosis", CodedOrFreeTextAnswer.NON_CODED_PREFIX + "I had spelled it wrong before");
}
final String jsonToSubmit = jackson.writeValueAsString(json);
new RegressionTestHelper() {
@Override
public String getXmlDatasetPath() {
return "";
}
@Override
public String getFormName() {
return "encounterDiagnosesSimpleForm";
}
@Override
public Map<String, Object> getFormEntrySessionAttributes() {
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put("uiUtils", new TestUiUtils() {
@Override
public String includeFragment(String providerName, String fragmentId, Map<String, Object> config) throws PageAction {
return "[[ included fragment " + providerName + "." + fragmentId + " here ]]";
}
});
return attributes;
}
@Override
public Patient getPatientToView() throws Exception {
return patient;
}
@Override
public Encounter getEncounterToEdit() {
return existingEncounter;
}
@Override
public String[] widgetLabelsForEdit() {
return new String[] { "Date:", "Location:", "Provider:", "Encounter Type:" };
}
@Override
public void setupEditRequest(MockHttpServletRequest request, Map<String, String> widgets) {
request.setParameter(widgets.get("Date:"), dateAsString(date));
request.setParameter(widgets.get("Location:"), "2");
request.setParameter(widgets.get("Provider:"), "1");
request.setParameter(widgets.get("Encounter Type:"), "1");
request.setParameter("encounterDiagnoses", jsonToSubmit);
}
@Override
public void testEditFormHtml(String html) {
System.out.println(html);
}
@Override
public void testEditedResults(SubmissionResults results) {
results.assertNoErrors();
results.assertEncounterEdited();
List<Obs> diagnoses = new ArrayList<Obs>();
for (Obs obs : results.getEncounterCreated().getObsAtTopLevel(true)) {
if (dmd.isDiagnosis(obs)) {
diagnoses.add(obs);
}
}
Matcher<Obs> newPrimary = new ObsGroupMatcher().withGroupingConcept(dmd.getDiagnosisSetConcept()).withNonVoidedObs(dmd.getDiagnosisCertaintyConcept(), dmd.getConceptFor(Diagnosis.Certainty.CONFIRMED)).withVoidedObs(dmd.getDiagnosisCertaintyConcept(), dmd.getConceptFor(Diagnosis.Certainty.PRESUMED)).withNonVoidedObs(dmd.getDiagnosisOrderConcept(), dmd.getConceptFor(Diagnosis.Order.PRIMARY)).withNonVoidedObs(dmd.getCodedDiagnosisConcept(), malaria);
Matcher<Obs> newSecondary = new ObsGroupMatcher().withGroupingConcept(dmd.getDiagnosisSetConcept()).withNonVoidedObs(dmd.getDiagnosisCertaintyConcept(), dmd.getConceptFor(Diagnosis.Certainty.PRESUMED)).withNonVoidedObs(dmd.getDiagnosisOrderConcept(), dmd.getConceptFor(Diagnosis.Order.SECONDARY)).withNonVoidedObs(dmd.getNonCodedDiagnosisConcept(), "I had spelled it wrong before");
Matcher<Obs> oldSecondary = new ObsGroupMatcher().withGroupingConcept(dmd.getDiagnosisSetConcept()).withVoidedObs(dmd.getDiagnosisCertaintyConcept(), dmd.getConceptFor(Diagnosis.Certainty.PRESUMED)).withVoidedObs(dmd.getDiagnosisOrderConcept(), dmd.getConceptFor(Diagnosis.Order.SECONDARY)).withVoidedObs(dmd.getNonCodedDiagnosisConcept(), "Unknown disease").thatIsVoided();
assertThat(diagnoses.size(), is(3));
assertThat(diagnoses, containsInAnyOrder(newPrimary, newSecondary, oldSecondary));
}
}.run();
}
use of org.codehaus.jackson.node.ArrayNode in project openmrs-module-pihcore by PIH.
the class CauseOfDeathListTagHandlerComponentTest method testCreateAndEdit.
@Test
public void testCreateAndEdit() throws Exception {
final ConceptName causeOne = conceptService.getConceptNameByUuid("2f7263e4-2a57-49b5-aef0-af9a259aac65");
final Concept causeTwo = conceptService.getConcept(13);
final Concept editedCauseTwo = conceptService.getConcept(11);
final String causeThree = "Cause Three";
final String editedCauseThree = "Edited Cause Three";
final Concept causeFour = conceptService.getConcept(16);
ArrayNode submission = jackson.createArrayNode();
ObjectNode one = submission.addObject();
one.put("ConceptName", causeOne.getUuid());
ObjectNode two = submission.addObject();
two.put("Concept", causeTwo.getUuid());
ObjectNode three = submission.addObject();
three.put("NonCodedValue", causeThree);
ObjectNode four = submission.addObject();
four.put("Concept", causeFour.getUuid());
final String createJson = jackson.writeValueAsString(submission);
two.put("Concept", editedCauseTwo.getUuid());
three.put("NonCodedValue", editedCauseThree);
// this removes 'four'
submission.remove(3);
final String editJson = jackson.writeValueAsString(submission);
final Date date = new Date();
new RegressionTestHelper() {
@Override
public String getXmlDatasetPath() {
return "";
}
@Override
public String getFormName() {
return "causesOfDeathForm";
}
@Override
public String[] widgetLabels() {
return new String[] { "Date:", "Location:", "Provider:", "Causes:" };
}
@Override
public void setupRequest(MockHttpServletRequest request, Map<String, String> widgets) {
request.setParameter(widgets.get("Date:"), dateAsString(date));
request.setParameter(widgets.get("Location:"), "2");
request.setParameter(widgets.get("Provider:"), "1");
request.setParameter(widgets.get("Causes:"), createJson);
}
@Override
public void testResults(SubmissionResults results) {
results.assertNoErrors();
results.assertEncounterCreated();
results.assertProvider(1);
results.assertLocation(2);
results.assertObsGroupCreatedCount(4);
results.assertObsGroupCreated(groupingConcept.getConceptId(), codedCauseConcept.getId(), causeOne, sequenceConcept.getId(), 1);
results.assertObsGroupCreated(groupingConcept.getConceptId(), codedCauseConcept.getId(), causeTwo, sequenceConcept.getId(), 2);
results.assertObsGroupCreated(groupingConcept.getConceptId(), nonCodedCauseConcept.getId(), causeThree, sequenceConcept.getId(), 3);
results.assertObsGroupCreated(groupingConcept.getConceptId(), codedCauseConcept.getId(), causeFour, sequenceConcept.getId(), 4);
assertThat(results.getPatient().getCauseOfDeath(), is(causeFour));
}
@Override
public boolean doEditEncounter() {
return true;
}
@Override
public String[] widgetLabelsForEdit() {
return widgetLabels();
}
@Override
public void setupEditRequest(MockHttpServletRequest request, Map<String, String> widgets) {
request.setParameter(widgets.get("Date:"), dateAsString(date));
request.setParameter(widgets.get("Location:"), "2");
request.setParameter(widgets.get("Provider:"), "1");
request.setParameter(widgets.get("Causes:"), editJson);
}
@Override
public void testEditedResults(SubmissionResults results) {
results.assertNoErrors();
results.assertEncounterCreated();
results.assertProvider(1);
results.assertLocation(2);
// there should be one voided member obs (causeTwo->causeTwoEdited), and one voided obs group (causeThree)
// was causeThree
results.assertObsVoided(groupingConcept.getConceptId(), null);
assertVoidedObsInObsGroup(results.getEncounterCreated(), groupingConcept, codedCauseConcept, causeTwo);
results.assertObsGroupCreatedCount(3);
results.assertObsGroupCreated(groupingConcept.getConceptId(), codedCauseConcept.getId(), causeOne, sequenceConcept.getId(), 1);
results.assertObsGroupCreated(groupingConcept.getConceptId(), codedCauseConcept.getId(), editedCauseTwo, sequenceConcept.getId(), 2);
results.assertObsGroupCreated(groupingConcept.getConceptId(), nonCodedCauseConcept.getId(), editedCauseThree, sequenceConcept.getId(), 3);
assertThat(results.getPatient().getCauseOfDeath(), is(unknownConcept));
}
private void assertVoidedObsInObsGroup(Encounter encounter, Concept groupingConcept, Concept concept, Concept value) {
for (Obs candidate : encounter.getObsAtTopLevel(true)) {
if (groupingConcept.equals(candidate.getConcept())) {
for (Obs member : candidate.getGroupMembers(true)) {
if (member.getVoided() && member.getConcept().equals(concept) && member.getValueCoded().equals(value)) {
return;
}
}
}
}
Assert.fail("Did not find a voided obs of " + concept + "=" + value + " inside a group of " + groupingConcept);
}
}.run();
}
use of org.codehaus.jackson.node.ArrayNode in project activityinfo by bedatadriven.
the class SitesResourcesTest method filterByPartner.
@Test
public void filterByPartner() throws IOException {
final int partnerId = 2;
QueryParameters parameters = new QueryParameters();
parameters.partnerIds.add(partnerId);
String json = query(parameters);
System.out.println(json);
final ArrayNode jsonNode = (ArrayNode) Jackson.createJsonMapper().readTree(json);
assertEquals(jsonNode.get(0).path("partner").path("id").asInt(), partnerId);
}
Aggregations