package ch.elexis.core.findings.ui.viewcontributions; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import ch.elexis.core.data.activator.CoreHub; import ch.elexis.core.findings.ICondition; import ch.elexis.core.findings.ICondition.ConditionCategory; import ch.elexis.core.findings.IFinding; import ch.elexis.core.findings.ui.composites.DiagnoseListComposite; import ch.elexis.core.findings.ui.preferences.SettingsConstants; import ch.elexis.core.findings.ui.services.FindingsServiceComponent; import ch.elexis.core.ui.views.contribution.IViewContribution; import ch.elexis.data.Patient; public class PatientDetailViewContribution implements IViewContribution { DiagnoseListComposite conditionsComposite; @Override public void setUnlocked(boolean unlocked){ // TODO Auto-generated method stub } @Override public String getLocalizedTitle(){ return "Diagnosen"; } @Override public boolean isAvailable(){ return CoreHub.globalCfg.get(SettingsConstants.DIAGNOSE_SETTINGS_USE_STRUCTURED, false); } @Override public Composite initComposite(Composite parent){ conditionsComposite = new DiagnoseListComposite(parent, SWT.NONE); return conditionsComposite; } @SuppressWarnings("unchecked") @Override public void setDetailObject(Object detailObject, Object additionalData){ if (conditionsComposite != null && FindingsServiceComponent.getService() != null && detailObject instanceof Patient) { List<? extends IFinding> conditions = FindingsServiceComponent.getService() .getPatientsFindings(((Patient) detailObject).getId(), ICondition.class); conditions = conditions.stream() .filter(finding -> isDiagnose(finding)) .collect(Collectors.toList()); conditionsComposite.setInput((List<ICondition>) conditions); } else if (conditionsComposite != null) { conditionsComposite.setInput(Collections.emptyList()); } } private boolean isDiagnose(IFinding iFinding){ return iFinding instanceof ICondition && ((ICondition) iFinding).getCategory() == ConditionCategory.DIAGNOSIS; } }