//поэтому выбросим их из списка необходимых услуг
//и хер с ней оказана она или нет
Field[] f = new Field[]{new Field("disease", disease)};
Iterator iterator = findEntityList(ServiceRender.class, f).iterator();
while (iterator.hasNext()) {
ServiceRender sr = (ServiceRender)iterator.next();
Iterator<ServiceCheckupChunk> servIter = itemChunk.serviceList.iterator();
while (servIter.hasNext()) {
ServiceCheckupChunk chunk = servIter.next();
if (chunk.serviceID == sr.getService().getId()){
servIter.remove();//выкидываем услугу
}
}
}
} else {
// pchItem = new ProfcheckupItem();
disease = new Disease();//сделаем заболевание
Date current = new Date();
disease.setCreated(current);//дата по первому созданию
disease.setDateReg(current);
}
Polis polis = findEntity(Polis.class, itemChunk.polisID);
Integer clientID = polis.getClient().getId();
Field[] f = {new Field("client.id", clientID)};
Iterator it = findEntityList(Emc.class, f).iterator();
if (emcMap.get(clientID) == null) {//проверим в кеше
Emc emc;
if (it.hasNext()) {
emc = (Emc) it.next();
} else {
throw new EDataIntegrity("у пациента " + polis.getClient().getSurname() + " " +
polis.getClient().getName() + " " + polis.getClient().getPathronymic() +
" нет медицинской карты");
}
emcMap.put(clientID, emc);
}
disease.setEmc(emcMap.get(clientID));
disease.setCollaborator(findEntity(Collaborator.class, getCollaboratorId()));
if (disease.getId() == 0) {
manager.persist(disease);//теперь есть заболевание, мона его юзать(или нет?)
} else {
disease = manager.merge(disease);
}
manager.flush();
manager.refresh(disease);
//заполним профчекапитем
pchItem.setPolis(polis);
pchItem.setPassed(false);
pchItem.setDanger(findEntity(Danger.class, itemChunk.dangerId));
pchItem.setProfcheckup(findEntity(Profcheckup.class, itemChunk.profcheckupId));
pchItem.setDisease(disease);
manager.persist(pchItem);//теперь есть профчекапитем, мона его юзать
manager.flush();
manager.refresh(pchItem);
//Пометим список услуг что они с дангерами
for (int i = 0; i < itemChunk.serviceList.size(); i++) {
ServiceCheckupChunk scc = itemChunk.serviceList.get(i);
scc.dangerID = itemChunk.dangerId;
}
//создадим услугу
NewServicesChunk chunk = new NewServicesChunk(disease.getId(),
0,
polis.getDetails(this),
0,
itemChunk.serviceList,
new HashMap<Integer, Integer>());
csbl.setSession(getSessionId());
List<AuditDetails> auditDetailsList = csbl.createNewServices(chunk).getAudit();
for (AuditDetails ad : auditDetailsList) {
if (!ad.entityClass.equals(ServiceRender.class.getSimpleName())) {
continue;
}
ServiceRender render = findEntity(ServiceRender.class, ad.getEntityId);
if (render.getService().getCheckupType() == null){
MedSerrenResult result = new MedSerrenResult();
result.setSerren(render);
manager.persist(result);
}
}