package in.cdac.medinfo.csnotk.csnolib.disb.model;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;


/**
 * @author root
 * 
 * {@link GenericDrug} contains detail information about Clinical Drug
 */
public class GenericDrug implements Serializable {
	private static final long serialVersionUID = 1L;

	private String genericId;

	public Set<DrugType> getIndexDrugTypeList() {
		return indexDrugTypeList;
	}

	public void setIndexDrugTypeList(Set<DrugType> indexDrugTypeList) {
		this.indexDrugTypeList = indexDrugTypeList;
	}

	public Set<String> getIndexSubstanceList() {
		return indexSubstanceList;
	}

	public void setIndexSubstanceList(Set<String> indexSubstanceList) {
		this.indexSubstanceList = indexSubstanceList;
	}

	private String contraIndications;

	private String doseForm;

	private String doseFormSctid;

	private Date dateOfCreation;
	
	
	public Date getDateOfCreation() {
		return dateOfCreation;
	}

	public void setDateOfCreation(Date dateOfCreation) {
		this.dateOfCreation = dateOfCreation;
	}



	private String genericSctid;

	private String indications;

	private String routeOfAdministration;
	
	private Set<GenericCompositionDetails> composition;

	private Set<DrugType> drugTypes;

	private String routeOfAdministrationSctid;

	private int version;

	//@Field(type=FieldType.Nested,store=true)
	private Set<MedicineDetail> medicineDetails;

	private Set<CompositionDetail> compositionDetails=new HashSet<>();

	//@OptimisticLock(excluded = true)
	private RecordStatus recordStatus;

	//@OptimisticLock(excluded = true)
	private Set<GenericDrugtypeInfo> genericDrugtypeInfos=new HashSet<>();
	
	private Set<DrugType> indexDrugTypeList;
	
	private Set<String> indexSubstanceList;

	private Date dateOfModification;
	
	private Set<GenericDescription> genericDescriptions = new HashSet<>();
	
	public Set<GenericDescription> getGenericDescriptions() {
		return genericDescriptions;
	}

	public void setGenericDescriptions(Set<GenericDescription> genericDescriptions) {
		this.genericDescriptions = genericDescriptions;
	}

	public Date getDateOfModification() {
		return dateOfModification;
	}

	public void setDateOfModification(Date dateOfModification) {
		this.dateOfModification = dateOfModification;
	}
	
	public GenericDrug() {
		super();
	}

	
	//@Transient
	//String userId;
	
	public GenericDrug(String genericId) {
		super();
		this.genericId = genericId;
	}

	public String getGenericId() {
		return genericId;
	}

	public void setGenericId(String genericId) {
		this.genericId = genericId;
	}

	public String getContraIndications() {
		return contraIndications;
	}

	public void setContraIndications(String contraIndications) {
		this.contraIndications = contraIndications;
	}

	public String getDoseForm() {
		return doseForm;
	}

	public void setDoseForm(String doseForm) {
		this.doseForm = doseForm;
	}

	public String getDoseFormSctid() {
		return doseFormSctid;
	}

	public void setDoseFormSctid(String doseFormSctid) {
		this.doseFormSctid = doseFormSctid;
	}

	public String getGenericSctid() {
		return genericSctid;
	}

	public void setGenericSctid(String genericSctid) {
		this.genericSctid = genericSctid;
	}

	public String getIndications() {
		return indications;
	}

	public void setIndications(String indications) {
		this.indications = indications;
	}

	public String getRouteOfAdministration() {
		return routeOfAdministration;
	}

	public void setRouteOfAdministration(String routeOfAdministration) {
		this.routeOfAdministration = routeOfAdministration;
	}

	public Set<DrugType> getDrugTypes() {
		return drugTypes;
	}


	public Set<GenericCompositionDetails> getComposition() {
		return composition;
	}

	public void setComposition(Set<GenericCompositionDetails> composition) {
		this.composition = composition;
	}

	public void setDrugTypes(Set<DrugType> drugTypes) {
		this.drugTypes = drugTypes;
	}

	public String getRouteOfAdministrationSctid() {
		return routeOfAdministrationSctid;
	}

	public void setRouteOfAdministrationSctid(String routeOfAdministrationSctid) {
		this.routeOfAdministrationSctid = routeOfAdministrationSctid;
	}

	public int getVersion() {
		return version;
	}

	public void setVersion(int version) {
		this.version = version;
	}


	public Set<MedicineDetail> getMedicineDetails() {
		return medicineDetails;
	}

	public void setMedicineDetails(Set<MedicineDetail> medicineDetails) {
		this.medicineDetails = medicineDetails;
	}

	public Set<CompositionDetail> getCompositionDetails() {
		return compositionDetails;
	}

	public void setCompositionDetails(Set<CompositionDetail> compositionDetails) {
		this.compositionDetails = compositionDetails;
	}

	public RecordStatus getRecordStatus() {
		return recordStatus;
	}

	public void setRecordStatus(RecordStatus recordStatus) {
		this.recordStatus = recordStatus;
	}

	public Set<GenericDrugtypeInfo> getGenericDrugtypeInfos() {
		return genericDrugtypeInfos;
	}

	public void setGenericDrugtypeInfos(Set<GenericDrugtypeInfo> genericDrugtypeInfos) {
		this.genericDrugtypeInfos = genericDrugtypeInfos;
	}

	@Override
	public String toString() {
		return "GenericDrug [genericId=" + genericId + ", contraIndications=" + contraIndications + ", doseForm="
				+ doseForm + ", doseFormSctid=" + doseFormSctid + ", dateOfCreation=" + dateOfCreation
				+ ", genericSctid=" + genericSctid + ", indications=" + indications + ", routeOfAdministration="
				+ routeOfAdministration + ", composition=" + composition + ", drugTypes=" + drugTypes
				+ ", routeOfAdministrationSctid=" + routeOfAdministrationSctid + ", version=" + version
				+ ", medicineDetails=" + medicineDetails + ", compositionDetails=" + compositionDetails
				+ ", recordStatus=" + recordStatus + ", genericDrugtypeInfos=" + genericDrugtypeInfos
				+ ", indexDrugTypeList=" + indexDrugTypeList + ", indexSubstanceList=" + indexSubstanceList
				+ ", dateOfModification=" + dateOfModification + ", genericDescriptions=" + genericDescriptions + "]";
	}


/*	public String getUserId() {
		return userId;
	}

	public void setUserId(String userId) {
		this.userId = userId;
	}*/
	
	
	
	
	
}