@RequestMapping("/module/hirifxray/uploadXray.form") public String uploadXray( ModelMap model, @RequestParam(value = "patientId", required = true) Patient patient, @RequestParam(value = "xrayId", required = false) Encounter encounter, @RequestParam(value = "xrayDate", required = false) Date encounterDate, @RequestParam(value = "type", required = true) Concept type, @RequestParam(value = "status", required = false) Concept status, @RequestParam(value = "location", required = false) Concept location, @RequestParam(value = "xrayFile", required = false) MultipartFile xrayFile) throws Exception { ComplexData xrayData = null; if (xrayFile != null && !xrayFile.isEmpty()) { String identifier = patient.getPatientIdentifier().getIdentifier(); String[] fileParts = xrayFile.getOriginalFilename().split("\\."); String xrayKey = identifier + "_" + type + "." + fileParts[fileParts.length - 1]; xrayData = new ComplexData(xrayKey, xrayFile.getInputStream()); } if (encounter == null) { encounter = new Encounter(); encounter.setPatient(patient); encounter.setEncounterType(HirifMetadata.getEncounterType()); } encounter.setEncounterDatetime( encounterDate == null ? HirifUtil.dateMidnight() : encounterDate); HirifUtil.updateCodedObs(encounter, HirifMetadata.getXrayTypeConcept(), type); HirifUtil.updateCodedObs(encounter, HirifMetadata.getXrayStatusConcept(), status); HirifUtil.updateCodedObs(encounter, HirifMetadata.getXrayLocationConcept(), location); HirifUtil.updateComplexObs(encounter, HirifMetadata.getXrayImageConcept(), xrayData); encounter = Context.getEncounterService().saveEncounter(encounter); return "redirect:/module/hirifxray/participant.form?id=" + patient.getPatientId() + "&type=" + type + "&xrayId=" + encounter.getEncounterId(); }