/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.delegate.doctor.certificate.tag.certTags;
import beans.doctor.diagnosis.DiagCodeTitle;
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 cli_fmw.delegate.report.ReportParam;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.MessageBox;
import clips.delegate.doctor.certificate.tag.interfaces.TypeSelectable;
import java.util.List;
import framework.utils.PairIntStr;
import java.util.ArrayList;
/**
*
* @author vip
*/
@TagToClass(tagName="diagnosys", title="Диагноз (основной)")
public class CertTagDiagnosys extends TypeSelectable {
public CertTagDiagnosys() throws ClipsException {
}
public CertTagDiagnosys(CertificateLocal certificateLocal, ReportParam reportParam, DiseaseLocal diseaseLocal) throws ClipsException {
super(certificateLocal, reportParam, diseaseLocal);
if (certificateLocal.isNewlyCreated() && allItems.size() > 0) {
setItem(allItems.get(0).num);
}
}
@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.getMkb().getTitle());
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.getMkb().getTitle());
allItems.add(pair);
}
}
}
@Override
public boolean isEditable() {
return true;
}
@Override
public DiagCodeTitle getValue() throws ClipsException {
Integer id = getItem();
ArrayList<String> codes = new ArrayList<String>(1);
String diseaseCode = "";
if (id != null){
try {
DiagnosisLocal dl = new DiagnosisLocal(id, null);
diseaseCode = dl.getMkb().getDiseaseCode();
}
catch (ClipsException ex) {
MessageBox.printStackTrace(ex);
}
}
codes.add(diseaseCode);
return new DiagCodeTitle(getText(), codes);
}
}