/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.delegate.doctor.certificate.tag.certTags;
import cli_fmw.main.ClipsException;
import clips.delegate.doctor.DiseaseLocal;
import clips.delegate.doctor.certificate.CertificateLocal;
import clips.delegate.doctor.diagnosis.DiagnosisLocal;
import clips.delegate.doctor.certificate.tag.TagToClass;
import clips.delegate.doctor.certificate.tag.interfaces.TypeMultiSelectable;
import cli_fmw.delegate.report.ReportParam;
import java.util.List;
import framework.utils.PairIntStr;
/**
*
* @author vip
*/
@TagToClass(tagName="full_diagnosys", title="Полный диагноз (основной + сопутствующие)")
public class CertTagFullDiagnosys extends TypeMultiSelectable {
public CertTagFullDiagnosys() throws ClipsException {
}
public CertTagFullDiagnosys(CertificateLocal certificateLocal, ReportParam reportParam, DiseaseLocal diseaseLocal) throws ClipsException {
super(certificateLocal, reportParam, diseaseLocal);
}
@Override
public void fillItems() throws ClipsException {
if (certificateLocal == null) throw new ClipsException();
List<DiagnosisLocal> fullDiagnosisList = certificateLocal.getClientLocal()
.getFullDiagnosisList(diseaseLocal == null ? 0 : diseaseLocal.getID());
//Поиск основного диагноза из заболевания
//*Если конечно есть заболевание и в нем есть диагнозы
int mainID;
if (diseaseLocal != null && diseaseLocal.getSpecificDiagnosis()!= null) {
DiagnosisLocal specificDiagnosis = diseaseLocal.getSpecificDiagnosis();
if (specificDiagnosis == null) {
throw new ClipsException("В заболевании отсутствует диагноз");
}
mainID = specificDiagnosis.getID();
} else {
mainID = 0;
}
//Добавление основного диагноза
for (int i = 0; i < fullDiagnosisList.size(); i++) {
DiagnosisLocal dl = fullDiagnosisList.get(i);
if (dl.getID() == mainID) {
PairIntStr pair = new PairIntStr(dl.getID(), "(Основной) " + dl.getMkbAndStage());
allItems.add(pair);
}
}
//Добавление остальных диагнозов (исключая сопутствующие)
for (int i = 0; i < fullDiagnosisList.size(); i++) {
DiagnosisLocal dl = fullDiagnosisList.get(i);
if (dl.getID() != mainID && !dl.hasReferencedDiagnosis()) {
PairIntStr pair = new PairIntStr(dl.getID(), "(" + dl.getType().getTitle() + ") " + dl.getMkbAndStage());
allItems.add(pair);
}
}
//Добавление сопутствующих диагнозов
for (int i = 0; i < fullDiagnosisList.size(); i++) {
DiagnosisLocal dl = fullDiagnosisList.get(i);
if (dl.hasReferencedDiagnosis()) {
PairIntStr pair = new PairIntStr(dl.getID(), "(Сопутствующий) " + dl.getMkbAndStage());
allItems.add(pair);
}
}
}
@Override
public boolean isEditable() {
return true;
}
@Override
public String getValue() throws ClipsException {
return getText();
}
}