com.marand.thinkmed.medications.dto.TherapyDto.java Source code

Java tutorial

Introduction

Here is the source code for com.marand.thinkmed.medications.dto.TherapyDto.java

Source

/*
 * Copyright (c) 2010-2014 Marand d.o.o. (www.marand.com)
 *
 * This file is part of Think!Med Clinical Medication Management.
 *
 * Think!Med Clinical Medication Management is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Think!Med Clinical Medication Management is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with Think!Med Clinical Medication Management.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.marand.thinkmed.medications.dto;

import java.util.ArrayList;
import java.util.List;

import com.google.common.base.Preconditions;
import com.marand.thinkmed.api.core.JsonSerializable;
import com.marand.thinkmed.api.core.data.object.DataTransferObject;
import com.marand.thinkmed.medications.MedicationOrderFormType;
import com.marand.thinkmed.medications.PrescriptionLocalDetailsDto;
import com.marand.thinkmed.medications.SelfAdministeringActionEnum;
import com.marand.thinkmed.medications.TherapyDoseTypeEnum;
import com.marand.thinkmed.medications.TherapyTagEnum;
import com.marand.thinkmed.medications.dto.supply.PrescriptionSupplyDto;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.joda.time.DateTime;

/**
 * @author Mitja Lapajne
 */
public abstract class TherapyDto extends DataTransferObject implements JsonSerializable {
    private String compositionUid;
    private String ehrOrderName;
    private MedicationOrderFormType medicationOrderFormType;
    private boolean variable;
    private String therapyDescription;
    private List<MedicationRouteDto> routes = new ArrayList<>();
    private DosingFrequencyDto dosingFrequency;
    private Integer dosingDaysFrequency; //every X-th day
    private List<String> daysOfWeek;
    private DateTime start;
    private DateTime end;
    private Boolean whenNeeded;
    private String comment;
    private IndicationDto clinicalIndication;
    private String prescriberName;
    private String composerName;
    private String startCriterion;
    private String applicationPrecondition;
    private Integer reviewReminderDays;

    private String frequencyDisplay;
    private String daysFrequencyDisplay;
    private String whenNeededDisplay;
    private String startCriterionDisplay;
    private String daysOfWeekDisplay;
    private String applicationPreconditionDisplay;

    private String formattedTherapyDisplay;
    private Integer pastDaysOfTherapy;

    private String linkName;

    private Integer maxDailyFrequency;

    private DateTime createdTimestamp;

    private List<TherapyTagEnum> tags = new ArrayList<>();
    private List<String> criticalWarnings = new ArrayList<>();
    private boolean linkedToAdmission;
    private Integer bnfMaximumPercentage;

    private TherapyDoseTypeEnum doseType;
    private SelfAdministeringActionEnum selfAdministeringActionEnum;
    private DateTime selfAdministeringLastChange;

    private PrescriptionLocalDetailsDto prescriptionLocalDetails;
    private PrescriptionSupplyDto prescriptionSupply;

    protected TherapyDto(final MedicationOrderFormType type, final boolean variable) {
        medicationOrderFormType = Preconditions.checkNotNull(type);
        this.variable = variable;
    }

    public String getCompositionUid() {
        return compositionUid;
    }

    public void setCompositionUid(final String compositionUid) {
        this.compositionUid = compositionUid;
    }

    public String getEhrOrderName() {
        return ehrOrderName;
    }

    public void setEhrOrderName(final String ehrOrderName) {
        this.ehrOrderName = ehrOrderName;
    }

    public MedicationOrderFormType getMedicationOrderFormType() {
        return medicationOrderFormType;
    }

    protected final void setMedicationOrderFormType(final MedicationOrderFormType medicationOrderFormType) {
        this.medicationOrderFormType = medicationOrderFormType;
    }

    public boolean isVariable() {
        return variable;
    }

    public void setVariable(final boolean variable) {
        this.variable = variable;
    }

    public String getTherapyDescription() {
        return therapyDescription;
    }

    public void setTherapyDescription(final String therapyDescription) {
        this.therapyDescription = therapyDescription;
    }

    public List<MedicationRouteDto> getRoutes() {
        return routes;
    }

    public void setRoutes(final List<MedicationRouteDto> routes) {
        this.routes = routes;
    }

    public DosingFrequencyDto getDosingFrequency() {
        return dosingFrequency;
    }

    public void setDosingFrequency(final DosingFrequencyDto dosingFrequency) {
        this.dosingFrequency = dosingFrequency;
    }

    public Integer getDosingDaysFrequency() {
        return dosingDaysFrequency;
    }

    public void setDosingDaysFrequency(final Integer dosingDaysFrequency) {
        this.dosingDaysFrequency = dosingDaysFrequency;
    }

    public List<String> getDaysOfWeek() {
        return daysOfWeek;
    }

    public void setDaysOfWeek(final List<String> daysOfWeek) {
        this.daysOfWeek = daysOfWeek;
    }

    public DateTime getStart() {
        return start;
    }

    public void setStart(final DateTime start) {
        this.start = start;
    }

    public DateTime getEnd() {
        return end;
    }

    public void setEnd(final DateTime end) {
        this.end = end;
    }

    public Boolean getWhenNeeded() {
        return whenNeeded;
    }

    public void setWhenNeeded(final Boolean whenNeeded) {
        this.whenNeeded = whenNeeded;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(final String comment) {
        this.comment = comment;
    }

    public IndicationDto getClinicalIndication() {
        return clinicalIndication;
    }

    public void setClinicalIndication(final IndicationDto clinicalIndication) {
        this.clinicalIndication = clinicalIndication;
    }

    public String getPrescriberName() {
        return prescriberName;
    }

    public void setPrescriberName(final String prescriberName) {
        this.prescriberName = prescriberName;
    }

    public String getComposerName() {
        return composerName;
    }

    public void setComposerName(final String composerName) {
        this.composerName = composerName;
    }

    public String getStartCriterion() {
        return startCriterion;
    }

    public void setStartCriterion(final String startCriterion) {
        this.startCriterion = startCriterion;
    }

    public String getApplicationPrecondition() {
        return applicationPrecondition;
    }

    public void setApplicationPrecondition(final String applicationPrecondition) {
        this.applicationPrecondition = applicationPrecondition;
    }

    public Integer getReviewReminderDays() {
        return reviewReminderDays;
    }

    public void setReviewReminderDays(final Integer reviewReminderDays) {
        this.reviewReminderDays = reviewReminderDays;
    }

    public String getFrequencyDisplay() {
        return frequencyDisplay;
    }

    public void setFrequencyDisplay(final String frequencyDisplay) {
        this.frequencyDisplay = frequencyDisplay;
    }

    public String getDaysFrequencyDisplay() {
        return daysFrequencyDisplay;
    }

    public void setDaysFrequencyDisplay(final String daysFrequencyDisplay) {
        this.daysFrequencyDisplay = daysFrequencyDisplay;
    }

    public String getWhenNeededDisplay() {
        return whenNeededDisplay;
    }

    public void setWhenNeededDisplay(final String whenNeededDisplay) {
        this.whenNeededDisplay = whenNeededDisplay;
    }

    public String getStartCriterionDisplay() {
        return startCriterionDisplay;
    }

    public void setStartCriterionDisplay(final String startCriterionDisplay) {
        this.startCriterionDisplay = startCriterionDisplay;
    }

    public String getDaysOfWeekDisplay() {
        return daysOfWeekDisplay;
    }

    public void setDaysOfWeekDisplay(final String daysOfWeekDisplay) {
        this.daysOfWeekDisplay = daysOfWeekDisplay;
    }

    public Integer getPastDaysOfTherapy() {
        return pastDaysOfTherapy;
    }

    public String getFormattedTherapyDisplay() {
        return formattedTherapyDisplay;
    }

    public String getApplicationPreconditionDisplay() {
        return applicationPreconditionDisplay;
    }

    public void setApplicationPreconditionDisplay(final String applicationPreconditionDisplay) {
        this.applicationPreconditionDisplay = applicationPreconditionDisplay;
    }

    public void setFormattedTherapyDisplay(final String formattedTherapyDisplay) {
        this.formattedTherapyDisplay = formattedTherapyDisplay;
    }

    public void setPastDaysOfTherapy(final Integer pastDaysOfTherapy) {
        this.pastDaysOfTherapy = pastDaysOfTherapy;
    }

    public String getLinkName() {
        return linkName;
    }

    public void setLinkName(final String linkName) {
        this.linkName = linkName;
    }

    public Integer getMaxDailyFrequency() {
        return maxDailyFrequency;
    }

    public void setMaxDailyFrequency(final Integer maxDailyFrequency) {
        this.maxDailyFrequency = maxDailyFrequency;
    }

    public DateTime getCreatedTimestamp() {
        return createdTimestamp;
    }

    public void setCreatedTimestamp(final DateTime createdTimestamp) {
        this.createdTimestamp = createdTimestamp;
    }

    public List<TherapyTagEnum> getTags() {
        return tags;
    }

    public void setTags(final List<TherapyTagEnum> tags) {
        this.tags = tags;
    }

    public void addTag(final TherapyTagEnum tag) {
        tags.add(tag);
    }

    public List<String> getCriticalWarnings() {
        return criticalWarnings;
    }

    public void setCriticalWarnings(final List<String> criticalWarnings) {
        this.criticalWarnings = criticalWarnings;
    }

    public boolean isLinkedToAdmission() {
        return linkedToAdmission;
    }

    public void setLinkedToAdmission(final boolean linkedToAdmission) {
        this.linkedToAdmission = linkedToAdmission;
    }

    public Integer getBnfMaximumPercentage() {
        return bnfMaximumPercentage;
    }

    public void setBnfMaximumPercentage(final Integer bnfMaximumPercentage) {
        this.bnfMaximumPercentage = bnfMaximumPercentage;
    }

    public PrescriptionLocalDetailsDto getPrescriptionLocalDetails() {
        return prescriptionLocalDetails;
    }

    public void setPrescriptionLocalDetails(final PrescriptionLocalDetailsDto prescriptionLocalDetails) {
        this.prescriptionLocalDetails = prescriptionLocalDetails;
    }

    public PrescriptionSupplyDto getPrescriptionSupply() {
        return prescriptionSupply;
    }

    public void setPrescriptionSupply(final PrescriptionSupplyDto prescriptionSupply) {
        this.prescriptionSupply = prescriptionSupply;
    }

    public TherapyDoseTypeEnum getDoseType() {
        return doseType;
    }

    public void setDoseType(final TherapyDoseTypeEnum doseType) {
        this.doseType = doseType;
    }

    public SelfAdministeringActionEnum getSelfAdministeringActionEnum() {
        return selfAdministeringActionEnum;
    }

    public void setSelfAdministeringActionEnum(final SelfAdministeringActionEnum selfAdministeringActionEnum) {
        this.selfAdministeringActionEnum = selfAdministeringActionEnum;
    }

    public DateTime getSelfAdministeringLastChange() {
        return selfAdministeringLastChange;
    }

    public void setSelfAdministeringLastChange(final DateTime selfAdministeringLastChange) {
        this.selfAdministeringLastChange = selfAdministeringLastChange;
    }

    public String getTherapyId() {
        Preconditions.checkNotNull(compositionUid, "compositionUid must not be null!");
        Preconditions.checkNotNull(ehrOrderName, "ehrOrderName must not be null!");

        return (compositionUid.contains("::") ? compositionUid.substring(0, compositionUid.indexOf("::"))
                : compositionUid) + '|' + ehrOrderName;
    }

    public boolean isWithRate() {
        return TherapyDoseTypeEnum.WITH_RATE.contains(doseType);
    }

    public abstract boolean isNormalInfusion();

    public abstract List<MedicationDto> getMedications();

    public abstract Long getMainMedicationId();

    @Override
    protected void appendToString(final ToStringBuilder tsb) {
        tsb.append("compositionUid", compositionUid).append("ehrOrderName", ehrOrderName)
                .append("medicationOrderFormType", medicationOrderFormType)
                .append("therapyDescription", therapyDescription).append("route", routes)
                .append("dosingFrequency", dosingFrequency).append("dosingDaysFrequency", dosingDaysFrequency)
                .append("daysOfWeek", daysOfWeek).append("start", start).append("end", end)
                .append("whenNeeded", whenNeeded).append("comment", comment)
                .append("clinicalIndication", clinicalIndication).append("prescriberName", prescriberName)
                .append("composerName", composerName).append("startCriterion", startCriterion)
                .append("applicationPrecondition", applicationPrecondition)
                .append("reviewReminderDays", reviewReminderDays).append("frequencyDisplay", frequencyDisplay)
                .append("daysFrequencyDisplay", daysFrequencyDisplay).append("whenNeededDisplay", whenNeededDisplay)
                .append("startCriterionDisplay", startCriterionDisplay)
                .append("daysOfWeekDisplay", daysOfWeekDisplay)
                .append("applicationPreconditionDisplay", applicationPreconditionDisplay)
                .append("formattedTherapyDisplay", formattedTherapyDisplay)
                .append("antibioticDays", pastDaysOfTherapy).append("linkName", linkName)
                .append("maxDailyFrequency", maxDailyFrequency).append("createdTimestamp", createdTimestamp)
                .append("tags", tags).append("criticalWarnings", criticalWarnings)
                .append("linkedToAdmission", linkedToAdmission).append("bnfMaximumPercentage", bnfMaximumPercentage)
                .append("prescriptionLocalDetails", prescriptionLocalDetails)
                .append("prescriptionSupply", prescriptionSupply)
                .append("selfAdministeringActionEnum", selfAdministeringActionEnum)
                .append("selfAdministeringLastChange", selfAdministeringLastChange).append("doseType", doseType);
    }
}