public Boolean isStaleOnDiagnosis(ValueObject diagnosis) // WDEV-19239 { if (diagnosis == null) return false; DomainFactory factory = getDomainFactory(); List<?> appts = null; if (diagnosis instanceof PatientDiagnosisAtConsultationVo) { PatientDiagnosisAtConsultationVo patDiag = (PatientDiagnosisAtConsultationVo) diagnosis; appts = factory.find( "select a.id from PatientDiagnosis as a where a.id = :DiagnosisId and a.version > :DiagnosisVersion", new String[] {"DiagnosisId", "DiagnosisVersion"}, new Object[] { patDiag.getID_PatientDiagnosis(), patDiag.getVersion_PatientDiagnosis() }); } else if (diagnosis instanceof CodedDiagnosesForAttendanceVo) { CodedDiagnosesForAttendanceVo codedDiag = (CodedDiagnosesForAttendanceVo) diagnosis; appts = factory.find( "select a.id from CodedDiagForAttendance as a where a.id = :DiagnosisId and a.version > :DiagnosisVersion", new String[] {"DiagnosisId", "DiagnosisVersion"}, new Object[] { codedDiag.getID_CodedDiagForAttendance(), codedDiag.getVersion_CodedDiagForAttendance() }); } if (appts != null && appts.size() > 0) return true; return false; }
// WDEV-19239 private boolean isPrimary(PatientDiagnosisAtConsultationVo diagnose) { if (diagnose == null || diagnose.getPrimaryForCareSpells() == null || diagnose.getPrimaryForCareSpells().size() == 0) return false; for (CSPrimaryDiagnosisShortVo primary : diagnose.getPrimaryForCareSpells()) { if (primary == null || primary.getCareContext() == null) continue; if (primary.getCareContext().equals(diagnose.getCareContext()) && Boolean.TRUE.equals(primary.getIsActive())) return true; } return false; }
public PatientDiagnosisAtConsultationVoCollection saveDiagnosis( PatientDiagnosisAtConsultationVoCollection diagnosis, CareContextRefVo careContext) throws StaleObjectException { if (diagnosis == null) throw new CodingRuntimeException( "Cannot save a null PatientDiagnosisAtConsultationVoCollection."); if (!diagnosis.isValidated()) throw new CodingRuntimeException( "PatientDiagnosisAtConsultationVoCollection is not validated."); DomainFactory factory = getDomainFactory(); PatientDiagnosisAtConsultationVoCollection coll = new PatientDiagnosisAtConsultationVoCollection(); // WDEV-19239 boolean isPatientDiagPrimary = false; CareContextRefVo careContextRef = null; for (PatientDiagnosisAtConsultationVo diagnose : diagnosis) { if (diagnose == null) continue; careContextRef = diagnose.getCareContext(); if (isPrimary(diagnose)) isPatientDiagPrimary = true; PatientDiagnosis doDiagnose = PatientDiagnosisAtConsultationVoAssembler.extractPatientDiagnosis(factory, diagnose); factory.save(doDiagnose); coll.add(PatientDiagnosisAtConsultationVoAssembler.create(doDiagnose)); } CodedDiagnosesForAttendanceVoCollection collCodedDiag = listCodedDiagnosesForAttendance(careContextRef, true); if (isPatientDiagPrimary && collCodedDiag != null && collCodedDiag.size() > 0) { for (CodedDiagnosesForAttendanceVo codedDiag : collCodedDiag) { codedDiag.setIsMain(false); CodedDiagForAttendance doCodedDiag = CodedDiagnosesForAttendanceVoAssembler.extractCodedDiagForAttendance( factory, codedDiag); factory.save(doCodedDiag); } } if (careContext != null) { AttendDiagInvTreatStatusVo attendDiagInvTreatStatus = getAttendDiagInvTreatStatus(careContext); if (attendDiagInvTreatStatus != null) { attendDiagInvTreatStatus.setNoDiagnoses(null); attendDiagInvTreatStatus.setDiagnosesNotRecorded(null); AttendDiagInvTreatStatus doAttendDiagInvTreatStatus = AttendDiagInvTreatStatusVoAssembler.extractAttendDiagInvTreatStatus( factory, attendDiagInvTreatStatus); factory.save(doAttendDiagInvTreatStatus); } } return coll; }