}
int recordCount = dbf.getRecordCount();
DirectorySurname dirSurname = DirectoryLocator.getDirectory(DirectorySurname.class);
DirectoryName dirName = DirectoryLocator.getDirectory(DirectoryName.class);
DirectoryPathron dirPathron = DirectoryLocator.getDirectory(DirectoryPathron.class);
DirectoryDisabilityType dirDisability = DirectoryLocator.getDirectory(DirectoryDisabilityType.class);
ArrayList<LNumberChunk> lNumberChunkList = new ArrayList<LNumberChunk>(recordCount);
HashSet<Integer> lnumSet = new HashSet<Integer>();
for (int i = 0; i < recordCount; i++) {
try {
dbf.read();
if (dbf.deleted()) {
continue;
}
LNumberChunk c = new LNumberChunk();
c.lnumber = Integer.parseInt(fieldsKadr.get(ColKadr.LNUMBER).get().trim());
if (lnumSet.contains(c.lnumber)) {
continue;
} else {
lnumSet.add(c.lnumber);
}
c.famID = dirSurname.getItemFromTitle(Converter.firstUpper(fieldsKadr.get(ColKadr.FAMILY).get().trim(), true)).getID();
c.nameID = dirName.getItemFromTitle(Converter.firstUpper(fieldsKadr.get(ColKadr.NAME).get().trim(), true)).getID();
c.patronID = dirPathron.getItemFromTitle(Converter.firstUpper(fieldsKadr.get(ColKadr.FATHER).get().trim(), true)).getID();
c.born = null;
try {
Calendar bornDate = ((DateField)fieldsKadr.get(ColKadr.BITHDATE)).getCalendar();
bornDate.set(Calendar.HOUR_OF_DAY, 0);
bornDate.set(Calendar.MINUTE, 0);
bornDate.set(Calendar.SECOND, 0);
bornDate.set(Calendar.MILLISECOND, 0);
c.born = bornDate.getTime();
} catch (NumberFormatException ex) {
//System.out.println("Ошибка при чтении даты рождения пациента " + dbf.getName() + " (строка " + i + ")");
}
lNumberChunkList.add(c);
} catch (IOException ex) {
closeDBF(dbf);
throw new ClipsException("Ошибка при чтении данных из файла " + dbf.getName() + " (строка " + i + ")", ex);
} catch (xBaseJException ex) {
closeDBF(dbf);
throw new ClipsException("Ошибка при чтении данных из файла " + dbf.getName() + " (строка " + i + ")", ex);
} catch (NumberFormatException ex) {
closeDBF(dbf);
throw new ClipsException("Ошибка при чтении данных из файла " + dbf.getName() + " (строка " + i + ")", ex);
}
}
closeDBF(dbf);
try {
clientMap = updaterStattalonBean.get().getClientMap(lNumberChunkList);
} catch (ClipsServerException ex) {
throw new ClipsException("Не удалось загрузить пациентов", ex);
}
lNumberChunkList = null;
lnumSet = null;
System.gc();
System.out.println("Пациенты прогружены");
out.println("Пациенты прогружены");
//Замаппируем статталоны (наши заболевания) по N_SYST
file = new File(cfg.getLastDBFImportPath(), "stat_tal.dbf");
dbf = createDBF(file);
HashMap<ColSst, Field> fieldsSst = new HashMap<ColSst, Field>();
try {
for (int i = 0; i < ColSst.values().length; i++) {
ColSst col = ColSst.values()[i];
fieldsSst.put(col, dbf.getField(col.toString()));
}
} catch (xBaseJException ex) {
throw new ClipsException("Ошибка при чтении данных из файла " + dbf.getName(), ex);
}
sstMap = new HashMap<Integer, SstData>();
doubleSstMap = new HashMap<Integer, HashSet<SstData>>();
int counterSst = 0;
recordCount = dbf.getRecordCount();
for (int i = 0; i < recordCount; i++) {
try {
dbf.read();
if (dbf.deleted()) {
continue;
}
SstData d = new SstData();
if (fieldsSst.get(ColSst.N_SYST).get().trim().isEmpty()) {
System.out.println("Ошибка : В статталоне отсутствует N_SYST " + dbf.getName());
out.println("Ошибка : В статталоне отсутствует N_SYST " + dbf.getName());
counterSst ++;
continue;
}
d.nSyst = Integer.parseInt(fieldsSst.get(ColSst.N_SYST).get().trim());
if (fieldsSst.get(ColSst.LNUMBER).get().trim().isEmpty()) {
System.out.println("Ошибка : Отсутствует LNUMBER в статталоне N_SYST = " + d.nSyst + " "+ dbf.getName());
out.println("Ошибка : Отсутствует LNUMBER в статталоне N_SYST = " + d.nSyst + " "+ dbf.getName());
counterSst ++;
continue;
}
d.lnumber = Integer.parseInt(fieldsSst.get(ColSst.LNUMBER).get().trim());
if (!clientMap.containsKey(d.lnumber)) {
//Возможно пофиксится потом, вызовом fixSstLnumber, там и будет вывод ошибки
//System.out.println("Ошибка : Неправильный LNUMBER в статталоне N_SYST = " + d.nSyst + " LNUMBER = " + d.lnumber + " "+ dbf.getName());
//out.println("Ошибка : Неправильный LNUMBER в статталоне N_SYST = " + d.nSyst + " LNUMBER = " + d.lnumber + " "+ dbf.getName());
}
d.bithdate = null;
try {
Calendar cal = ((DateField)fieldsSst.get(ColSst.BITHDATE)).getCalendar();
d.bithdate = DateTimeUtils.getDateOnly(cal).getTime();
} catch (NumberFormatException e) {
//Дата рождения в статталоне не указана
}
d.dataSt = null;
try {
Calendar cal = ((DateField)fieldsSst.get(ColSst.DATA_ST)).getCalendar();
d.dataSt = DateTimeUtils.getDateOnly(cal).getTime();
} catch (NumberFormatException ex) {
//оставляем нулл, потом скорректируется по посещению fixSstLnumber();
}
d.vmu = fieldsSst.get(ColSst.VMU).get().trim();
d.purpose = fieldsSst.get(ColSst.CELX).get().trim();
d.idWrach = Integer.parseInt(fieldsSst.get(ColSst.WRACH).get().trim());
d.result = fieldsSst.get(ColSst.REZULT).get().trim();
d.place = fieldsSst.get(ColSst.MESTO).get().trim();
d.blBeg = null;
try {
Calendar date = ((DateField)fieldsSst.get(ColSst.BL_D_BEG)).getCalendar();
date.set(Calendar.HOUR_OF_DAY, 0);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 0);
date.set(Calendar.MILLISECOND, 0);
d.blBeg = date.getTime();
} catch (NumberFormatException ex) {
//значение даты не удалось прочитать - оставляем нулл
}
d.blEnd = null;
try {
Calendar date = ((DateField)fieldsSst.get(ColSst.BL_D_END)).getCalendar();
date.set(Calendar.HOUR_OF_DAY, 0);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 0);
date.set(Calendar.MILLISECOND, 0);
d.blEnd = date.getTime();
} catch (NumberFormatException ex) {
//значение даты не удалось прочитать - оставляем нулл
}
DirectoryDisabilityTypeItem disType = dirDisability.getItemFromExtKey(fieldsSst.get(ColSst.BL_PRICH).get().trim());
d.blPrich = disType == null ? 0 : disType.getID();
d.blAge = fieldsSst.get(ColSst.BL_UH_LET).get().trim();
d.blSex = fieldsSst.get(ColSst.BL_UH_SEX).get().trim();
d.stomMkb = fieldsSst.get(ColSst.STOM1).get().trim() + fieldsSst.get(ColSst.STOM2).get().trim();
d.stomHarak = fieldsSst.get(ColSst.STOM_HARAK).get().trim();