public static Visit map(JSONObject jsonObject) throws JSONException { Visit visit = new Visit(); visit.setUuid(getStringFromObject(jsonObject, "uuid")); JSONObject locationObject = getJSONObject(jsonObject, "location"); visit.setVisitPlace(getStringFromObject(locationObject, DISPLAY_KEY)); JSONObject visitTypeObject = jsonObject.getJSONObject("visitType"); visit.setVisitType(getStringFromObject(visitTypeObject, DISPLAY_KEY)); visit.setStartDate(DateUtils.convertTime(getStringFromObject(jsonObject, "startDatetime"))); visit.setStopDate(DateUtils.convertTime(getStringFromObject(jsonObject, "stopDatetime"))); List<Encounter> encounterList = new ArrayList<Encounter>(); if (!jsonObject.isNull("encounters")) { JSONArray encountersJSONArray = jsonObject.getJSONArray("encounters"); for (int i = 0; i < encountersJSONArray.length(); i++) { Encounter encounter = new Encounter(); JSONObject encounterJSONObject = encountersJSONArray.getJSONObject(i); List<Observation> observationList = new ArrayList<Observation>(); encounter.setDisplay(getStringFromObject(encounterJSONObject, DISPLAY_KEY)); encounter.setUuid(getStringFromObject(encounterJSONObject, "uuid")); encounter.setEncounterType( Encounter.EncounterType.getType( getStringFromObject( getJSONObject(encounterJSONObject, "encounterType"), DISPLAY_KEY))); encounter.setEncounterDatetime( DateUtils.convertTime(getStringFromObject(encounterJSONObject, "encounterDatetime"))); JSONArray obsJSONArray = encounterJSONObject.getJSONArray("obs"); for (int j = 0; j < obsJSONArray.length(); j++) { Observation observation = new Observation(); JSONObject observationJSONObject = obsJSONArray.getJSONObject(j); observation.setUuid(getStringFromObject(observationJSONObject, "uuid")); if (Encounter.EncounterType.VITALS.equals(encounter.getEncounterType())) { String[] labelAndValue = getStringFromObject(observationJSONObject, DISPLAY_KEY).split(":"); observation.setDisplay(labelAndValue[0]); observation.setDisplayValue(labelAndValue[1]); } else if (Encounter.EncounterType.VISIT_NOTE.equals(encounter.getEncounterType())) { observation = ObservationMapper.diagnosisMap(observationJSONObject); } else { observation.setDisplay(getStringFromObject(observationJSONObject, DISPLAY_KEY)); } observationList.add(observation); } encounter.setObservations(observationList); encounterList.add(encounter); } } visit.setEncounters(encounterList); return visit; }