Skip to content

Commit

Permalink
Fix dcm4che#337 dcm4che/dcm4chee-arc-light : RESTful Service to updat…
Browse files Browse the repository at this point in the history
…e the expiration date of Study and Series
  • Loading branch information
vrindanayak committed Aug 29, 2016
1 parent e2bd649 commit 2809049
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -407,12 +407,12 @@ public void setRejectionState(RejectionState rejectionState) {
this.rejectionState = rejectionState;
}

public LocalDate getExpirationDate() {
return expirationDate != null ? LocalDate.parse(expirationDate) : null;
public LocalDate getExpirationDateAsLocalDate() {
return expirationDate != null ? LocalDate.parse(expirationDate, DateTimeFormatter.BASIC_ISO_DATE) : null;
}

public void setExpirationDate(LocalDate expirationDate) {
this.expirationDate = expirationDate != null ? expirationDate.toString() : null;
public void setExpirationDate(String expirationDate) {
this.expirationDate = expirationDate;
}

public String getFailedSOPInstanceUIDList() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -375,12 +375,12 @@ public void setRejectionState(RejectionState rejectionState) {
this.rejectionState = rejectionState;
}

public LocalDate getExpirationDate() {
return expirationDate != null ? LocalDate.parse(expirationDate) : null;
public LocalDate getExpirationDateAsLocalDate() {
return expirationDate != null ? LocalDate.parse(expirationDate, DateTimeFormatter.BASIC_ISO_DATE) : null;
}

public void setExpirationDate(LocalDate expirationDate) {
this.expirationDate = expirationDate != null ? expirationDate.toString() : null;
public void setExpirationDate(String expirationDate) {
this.expirationDate = expirationDate;
}

public String getFailedSOPInstanceUIDList() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,8 @@ private void updateExpirationDate(String studyUID, String seriesUID, String expi
ctx.setStudyInstanceUID(studyUID);
if (seriesUID != null)
ctx.setSeriesInstanceUID(seriesUID);
ctx.setExpirationDate(LocalDate.parse(expirationDate, DateTimeFormatter.BASIC_ISO_DATE));
LocalDate expireDate = LocalDate.parse(expirationDate, DateTimeFormatter.BASIC_ISO_DATE);
ctx.setExpirationDate(DateTimeFormatter.BASIC_ISO_DATE.format(expireDate));
studyService.updateExpirationDate(ctx);
} catch (NoResultException e) {
String message;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@
import java.net.HttpURLConnection;
import java.net.URL;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.regex.Pattern;

Expand Down Expand Up @@ -247,11 +248,11 @@ private void rejectInstances(StoreContext ctx, RejectionNote rjNote, CodeEntity

private void checkExpirationDate(Series series)
throws DicomServiceException {
LocalDate studyExpirationDate = series.getStudy().getExpirationDate();
LocalDate studyExpirationDate = series.getStudy().getExpirationDateAsLocalDate();
if (studyExpirationDate == null)
return;

LocalDate seriesExpirationDate = series.getExpirationDate();
LocalDate seriesExpirationDate = series.getExpirationDateAsLocalDate();
if ((seriesExpirationDate != null ? seriesExpirationDate : studyExpirationDate).isAfter(LocalDate.now())) {
throw new DicomServiceException(StoreService.RETENTION_PERIOD_OF_STUDY_NOT_YET_EXPIRED,
"Retention Period of Study not yet expired");
Expand Down Expand Up @@ -815,12 +816,12 @@ private void applyStudyRetentionPolicy(StoreContext ctx, Series series) {

Study study = series.getStudy();
LocalDate expirationDate = LocalDate.now().plus(retentionPolicy.getRetentionPeriod());
LocalDate studyExpirationDate = study.getExpirationDate();
LocalDate studyExpirationDate = study.getExpirationDateAsLocalDate();
if (studyExpirationDate == null || studyExpirationDate.compareTo(expirationDate) < 0)
study.setExpirationDate(expirationDate);
study.setExpirationDate(DateTimeFormatter.BASIC_ISO_DATE.format(expirationDate));

if (retentionPolicy.isExpireSeriesIndividually())
series.setExpirationDate(expirationDate);
series.setExpirationDate(DateTimeFormatter.BASIC_ISO_DATE.format(expirationDate));
}

private void setSeriesAttributes(StoreContext ctx, Series series) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@ public interface StudyMgtContext {

void setException(Exception exception);

LocalDate getExpirationDate();
String getExpirationDate();

void setExpirationDate(LocalDate expirationDate);
void setExpirationDate(String expirationDate);

String getSeriesInstanceUID();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@
import org.dcm4chee.arc.study.StudyMgtContext;

import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate;

/**
* @author Gunter Zeilinger <gunterze@gmail.com>
Expand All @@ -72,7 +71,7 @@ public class StudyMgtContextImpl implements StudyMgtContext {
private String studyInstanceUID;
private String eventActionCode;
private Exception exception;
private LocalDate expirationDate;
private String expirationDate;
private String seriesInstanceUID;

StudyMgtContextImpl(Device device, HttpServletRequest httpRequest, ApplicationEntity ae) {
Expand Down Expand Up @@ -169,12 +168,12 @@ public void setException(Exception exception) {
}

@Override
public LocalDate getExpirationDate() {
public String getExpirationDate() {
return expirationDate;
}

@Override
public void setExpirationDate(LocalDate expirationDate) {
public void setExpirationDate(String expirationDate) {
this.expirationDate = expirationDate;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Collection;
import java.util.List;

Expand Down Expand Up @@ -116,18 +117,19 @@ public void updateStudyExpirationDate(StudyMgtContext ctx) throws NoResultExcept
try {
List<Series> seriesOfStudy = em.createNamedQuery(Series.FIND_SERIES_OF_STUDY, Series.class)
.setParameter(1, ctx.getStudyInstanceUID()).getResultList();
LocalDate studyExpirationDate = ctx.getExpirationDate();
String studyExpireDate = ctx.getExpirationDate();
if (!seriesOfStudy.isEmpty()) {
seriesOfStudy.get(0).getStudy().setExpirationDate(studyExpirationDate);
seriesOfStudy.get(0).getStudy().setExpirationDate(studyExpireDate);
for (Series series : seriesOfStudy) {
LocalDate seriesExpirationDate = series.getExpirationDate();
if (seriesExpirationDate != null && seriesExpirationDate.isAfter(studyExpirationDate))
series.setExpirationDate(studyExpirationDate);
LocalDate seriesExpirationDate = series.getExpirationDateAsLocalDate();
if (seriesExpirationDate != null && seriesExpirationDate.isAfter(
LocalDate.parse(studyExpireDate, DateTimeFormatter.BASIC_ISO_DATE)))
series.setExpirationDate(studyExpireDate);
}
} else {
Study study = em.createNamedQuery(Study.FIND_BY_STUDY_IUID, Study.class)
.setParameter(1, ctx.getStudyInstanceUID()).getSingleResult();
study.setExpirationDate(studyExpirationDate);
study.setExpirationDate(studyExpireDate);
}
} catch (NoResultException e) {
throw e;
Expand All @@ -139,9 +141,10 @@ public void updateSeriesExpirationDate(StudyMgtContext ctx) throws NoResultExcep
Series series = em.createNamedQuery(Series.FIND_BY_SERIES_IUID, Series.class)
.setParameter(1, ctx.getStudyInstanceUID())
.setParameter(2, ctx.getSeriesInstanceUID()).getSingleResult();
LocalDate studyExpirationDate = series.getStudy().getExpirationDate();
LocalDate studyExpirationDate = series.getStudy().getExpirationDateAsLocalDate();
series.setExpirationDate(ctx.getExpirationDate());
if (studyExpirationDate == null || studyExpirationDate.isBefore(ctx.getExpirationDate()))
if (studyExpirationDate == null || studyExpirationDate.isBefore(
LocalDate.parse(ctx.getExpirationDate(), DateTimeFormatter.BASIC_ISO_DATE)))
series.getStudy().setExpirationDate(ctx.getExpirationDate());
} catch (NoResultException e) {
throw e;
Expand Down

0 comments on commit 2809049

Please sign in to comment.