private static JSONObject contact(Patient patient) { // Default contact info String name = "PhenomeCentral Support"; String institution = "PhenomeCentral"; String href = "mailto:matchmaker@phenomecentral.org"; PatientData<ContactInfo> data = patient.getData("contact"); if (data != null && data.isIndexed() && data.size() > 0) { ContactInfo contact = data.get(0); String contactName = contact.getName(); if (!StringUtils.isBlank(contactName)) { name = contactName; } // Replace institution, even if blank institution = contact.getInstitution(); // TODO: replace this with a URL to a match/contact page List<String> email = contact.getEmails(); if (!email.isEmpty() && !StringUtils.isBlank(email.get(0))) { href = "mailto:" + email.get(0); } } JSONObject contactJson = new JSONObject(); contactJson.put(ApiConfiguration.JSON_CONTACT_NAME, name); // Institution is optional, so only include if non-blank if (!StringUtils.isBlank(institution)) { contactJson.put(ApiConfiguration.JSON_CONTACT_INSTITUTION, institution); } contactJson.put(ApiConfiguration.JSON_CONTACT_HREF, href); return contactJson; }
@Override public void writeJSON(Patient patient, JSONObject json, Collection<String> selectedFieldNames) { if (selectedFieldNames != null && !selectedFieldNames.contains(DATA_CONTACT)) { return; } PatientData<ContactInfo> data = patient.getData(DATA_CONTACT); if (data == null || !data.isIndexed() || data.size() == 0) { return; } JSONArray container = json.optJSONArray(DATA_CONTACT); if (container == null) { json.put(DATA_CONTACT, new JSONArray()); container = json.optJSONArray(DATA_CONTACT); } for (ContactInfo info : data) { container.put(info.toJSON()); } }
@Override public Collection<String> getNotificationEmailsForPatient(Patient patient) { List<String> result = new ArrayList<>(); if (patient != null) { PatientData<ContactInfo> data = patient.getData("contact"); if (data != null && data.size() > 0) { for (ContactInfo contact : data) { result.addAll(contact.getEmails()); } } } return result; } }
private String populateHref(String href) { // if the patient is remote, we use whatever is passed by from DB if (this.patient == null) { return href; } PatientData<ContactInfo> data = this.patient.getData("contact"); if (data != null && data.size() > 0) { ContactInfo contact = data.get(0); if (contact != null) { return contact.getUrl(); } } return null; } }
@Override public void writeJSON(Patient patient, JSONObject json, Collection<String> selectedFieldNames) { if (selectedFieldNames != null && !selectedFieldNames.contains(DATA_CONTACT)) { return; } PatientData<ContactInfo> data = patient.getData(DATA_CONTACT); if (data == null || !data.isIndexed() || data.size() == 0) { return; } JSONArray container = json.optJSONArray(DATA_CONTACT); if (container == null) { json.put(DATA_CONTACT, new JSONArray()); container = json.optJSONArray(DATA_CONTACT); } for (ContactInfo info : data) { container.put(info.toJSON()); } }