@Override public List<String> getAllFieldNames() { final List<String> fields = new LinkedList<>(); for (final RecordSection section : getAllSections()) { for (final RecordElement element : section.getAllElements()) { fields.addAll(element.getDisplayedFields()); } } return Collections.unmodifiableList(fields); }
/** * Disables {@code section} if it contains no enabled elements. * * @param section the patient record section */ private void disableSectionIfNoEnabledElements(@Nonnull final RecordSection section) { if (section.getEnabledElements().isEmpty()) { section.setEnabled(false); } }
@Override public int compare(RecordSection o1, RecordSection o2) { int i1 = overrides.indexOf(o1.getExtension().getId()); int i2 = overrides.indexOf(o2.getExtension().getId()); return (i2 == -1 || i1 == -1) ? (i2 - i1) : (i1 - i2); } });
for (final RecordSection section : updatedSections) { if (!sectionOverrides.contains(section.getExtension().getId())) { section.setEnabled(false); } else { configureFields(section, fieldOverrides);
@Override public List<String> getEnabledFieldNames() { final List<String> enabledFields = new LinkedList<>(); for (final RecordSection section : getEnabledSections()) { for (final RecordElement element : section.getEnabledElements()) { enabledFields.addAll(element.getDisplayedFields()); } } return Collections.unmodifiableList(enabledFields); }
/** * Given the {@code section} that needs to be configured, and the {@code fieldOverrides enabled fields}, configures * the {@code section} elements. * * @param section the {@link RecordSection record section} that needs to be configured * @param fieldOverrides the list of identifiers for enabled fields */ private void configureFields(final RecordSection section, final List<String> fieldOverrides) { List<RecordElement> updatedElements = new ArrayList<>(section.getAllElements()); Collections.<RecordElement>sort(updatedElements, new Comparator<RecordElement>() { @Override public int compare(RecordElement o1, RecordElement o2) { int i1 = fieldOverrides.indexOf(o1.getExtension().getId()); int i2 = fieldOverrides.indexOf(o2.getExtension().getId()); return (i2 == -1 || i1 == -1) ? (i2 - i1) : (i1 - i2); } }); for (final RecordElement element : updatedElements) { if (!fieldOverrides.contains(element.getExtension().getId())) { element.setEnabled(false); } } section.setElements(updatedElements); }
@Override public List<RecordSection> getEnabledSections() { List<RecordSection> result = new LinkedList<>(); for (RecordSection section : getAllSections()) { if (section.isEnabled()) { result.add(section); } } return Collections.unmodifiableList(result); }
@Override public List<String> getEnabledFieldNames() { List<String> result = new LinkedList<String>(); for (RecordSection section : getEnabledSections()) { for (RecordElement element : section.getEnabledElements()) { result.addAll(element.getDisplayedFields()); } } return Collections.unmodifiableList(result); }
@Override public List<RecordSection> getEnabledSections() { List<RecordSection> result = new LinkedList<RecordSection>(); for (RecordSection section : getAllSections()) { if (section.isEnabled()) { result.add(section); } } return Collections.unmodifiableList(result); }
/** * Disables {@code section} if it contains no enabled elements. * * @param section the patient record section */ private void disableSectionIfNoEnabledElements(@Nonnull final RecordSection section) { if (section.getEnabledElements().isEmpty()) { section.setEnabled(false); } }
@SuppressWarnings("deprecation") @Override public List<String> getEnabledNonIdentifiableFieldNames() { List<String> result = new LinkedList<>(); for (RecordSection section : getEnabledSections()) { for (RecordElement element : section.getEnabledElements()) { if (!element.containsPrivateIdentifiableInformation()) { result.addAll(element.getDisplayedFields()); } } } return Collections.unmodifiableList(result); }
@Override public int compare(RecordSection o1, RecordSection o2) { int i1 = sectionOverrides.indexOf(o1.getExtension().getId()); int i2 = sectionOverrides.indexOf(o2.getExtension().getId()); return (i2 == -1 || i1 == -1) ? (i2 - i1) : (i1 - i2); } });
@Override public List<String> getEnabledNonIdentifiableFieldNames() { List<String> result = new LinkedList<String>(); for (RecordSection section : getEnabledSections()) { for (RecordElement element : section.getEnabledElements()) { if (!element.containsPrivateIdentifiableInformation()) { result.addAll(element.getDisplayedFields()); } } } return Collections.unmodifiableList(result); }
@Override public List<RecordSection> getAllSections() { List<RecordSection> result = new ArrayList<RecordSection>(); List<RecordSection> allSections = super.getAllSections(); final List<String> overrides = this.configuration.getSectionsOverride(); for (RecordSection section : allSections) { result.add(new ConfiguredRecordSection(this.configuration, section.getExtension(), this.uixManager, this.orderFilter)); } if (overrides != null && !overrides.isEmpty()) { Collections.<RecordSection>sort(result, new Comparator<RecordSection>() { @Override public int compare(RecordSection o1, RecordSection o2) { int i1 = overrides.indexOf(o1.getExtension().getId()); int i2 = overrides.indexOf(o2.getExtension().getId()); return (i2 == -1 || i1 == -1) ? (i2 - i1) : (i1 - i2); } }); } return Collections.unmodifiableList(result); }
@Override public RecordConfiguration process(RecordConfiguration config) { if (config == null) { return null; } final Patient patient = this.patients.get(this.dab.getCurrentDocumentReference()); if (patient == null) { return config; } for (final RecordSection section : config.getEnabledSections()) { // Filter elements by consents. final List<RecordElement> enabledElements = Collections.unmodifiableList(section.getEnabledElements()); final List<RecordElement> consentedElements = this.consentAuthorizer.filterForm(enabledElements, patient); disableNonConsentedElements(enabledElements, consentedElements); disableSectionIfNoEnabledElements(section); } return config; }
@Override public RecordConfiguration process(RecordConfiguration config) { if (config == null || this.dab.getCurrentDocumentReference() == null) { return config; } final Patient patient = this.patients.get(this.dab.getCurrentDocumentReference()); if (patient == null) { return config; } for (final RecordSection section : config.getEnabledSections()) { // Filter elements by consents. final List<RecordElement> enabledElements = Collections.unmodifiableList(section.getEnabledElements()); final List<RecordElement> consentedElements = this.consentAuthorizer.filterForm(enabledElements, patient); disableNonConsentedElements(enabledElements, consentedElements); disableSectionIfNoEnabledElements(section); } return config; }