/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is part of dcm4che, an implementation of DICOM(TM) in
* Java(TM), hosted at https://github.com/gunterze/dcm4che.
*
* The Initial Developer of the Original Code is
* Agfa Healthcare.
* Portions created by the Initial Developer are Copyright (C) 2012
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* See @authors listed below
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
package org.dcm4chee.archive.hsm;
import java.util.HashMap;
import java.util.Map;
import org.dcm4che3.data.Tag;
import org.dcm4chee.archive.conf.AttributeFilter;
import org.dcm4chee.archive.conf.Entity;
import org.dcm4chee.archive.conf.StoreParam;
/**
* @author Gunter Zeilinger <gunterze@gmail.com>
*
*/
public abstract class ParamFactory {
private static final int[] PATIENT_ATTRS = {
Tag.SpecificCharacterSet,
Tag.PatientName,
Tag.PatientID,
Tag.IssuerOfPatientID,
Tag.IssuerOfPatientIDQualifiersSequence,
Tag.PatientBirthDate,
Tag.PatientBirthTime,
Tag.PatientSex,
Tag.PatientInsurancePlanCodeSequence,
Tag.PatientPrimaryLanguageCodeSequence,
Tag.OtherPatientNames,
Tag.OtherPatientIDsSequence,
Tag.PatientBirthName,
Tag.PatientAge,
Tag.PatientSize,
Tag.PatientSizeCodeSequence,
Tag.PatientWeight,
Tag.PatientAddress,
Tag.PatientMotherBirthName,
Tag.MilitaryRank,
Tag.BranchOfService,
Tag.MedicalRecordLocator,
Tag.MedicalAlerts,
Tag.Allergies,
Tag.CountryOfResidence,
Tag.RegionOfResidence,
Tag.PatientTelephoneNumbers,
Tag.EthnicGroup,
Tag.Occupation,
Tag.SmokingStatus,
Tag.AdditionalPatientHistory,
Tag.PregnancyStatus,
Tag.LastMenstrualDate,
Tag.PatientReligiousPreference,
Tag.PatientSpeciesDescription,
Tag.PatientSpeciesCodeSequence,
Tag.PatientSexNeutered,
Tag.PatientBreedDescription,
Tag.PatientBreedCodeSequence,
Tag.BreedRegistrationSequence,
Tag.ResponsiblePerson,
Tag.ResponsiblePersonRole,
Tag.ResponsibleOrganization,
Tag.PatientComments,
Tag.ClinicalTrialSponsorName,
Tag.ClinicalTrialProtocolID,
Tag.ClinicalTrialProtocolName,
Tag.ClinicalTrialSiteID,
Tag.ClinicalTrialSiteName,
Tag.ClinicalTrialSubjectID,
Tag.ClinicalTrialSubjectReadingID,
Tag.PatientIdentityRemoved,
Tag.DeidentificationMethod,
Tag.DeidentificationMethodCodeSequence,
Tag.ClinicalTrialProtocolEthicsCommitteeName,
Tag.ClinicalTrialProtocolEthicsCommitteeApprovalNumber,
Tag.SpecialNeeds,
Tag.PertinentDocumentsSequence,
Tag.PatientState,
Tag.PatientClinicalTrialParticipationSequence,
Tag.ConfidentialityConstraintOnPatientDataDescription
};
private static final int[] STUDY_ATTRS = {
Tag.SpecificCharacterSet,
Tag.StudyDate,
Tag.StudyTime,
Tag.AccessionNumber,
Tag.IssuerOfAccessionNumberSequence,
Tag.ReferringPhysicianName,
Tag.StudyDescription,
Tag.ProcedureCodeSequence,
Tag.PatientAge,
Tag.PatientSize,
Tag.PatientSizeCodeSequence,
Tag.PatientWeight,
Tag.Occupation,
Tag.AdditionalPatientHistory,
Tag.PatientSexNeutered,
Tag.StudyInstanceUID,
Tag.StudyID
};
private static final int[] SERIES_ATTRS = {
Tag.SpecificCharacterSet,
Tag.Modality,
Tag.Manufacturer,
Tag.InstitutionName,
Tag.InstitutionCodeSequence,
Tag.StationName,
Tag.SeriesDescription,
Tag.InstitutionalDepartmentName,
Tag.PerformingPhysicianName,
Tag.ManufacturerModelName,
Tag.ReferencedPerformedProcedureStepSequence,
Tag.BodyPartExamined,
Tag.SeriesInstanceUID,
Tag.SeriesNumber,
Tag.Laterality,
Tag.PerformedProcedureStepStartDate,
Tag.PerformedProcedureStepStartTime,
Tag.RequestAttributesSequence
};
private static final int[] INSTANCE_ATTRS = {
Tag.SpecificCharacterSet,
Tag.ImageType,
Tag.SOPClassUID,
Tag.SOPInstanceUID,
Tag.ContentDate,
Tag.ContentTime,
Tag.ReferencedSeriesSequence,
Tag.InstanceNumber,
Tag.NumberOfFrames,
Tag.Rows,
Tag.Columns,
Tag.BitsAllocated,
Tag.ConceptNameCodeSequence,
Tag.VerifyingObserverSequence,
Tag.ReferencedRequestSequence,
Tag.CompletionFlag,
Tag.VerificationFlag,
Tag.DocumentTitle,
Tag.MIMETypeOfEncapsulatedDocument,
Tag.ContentLabel,
Tag.ContentDescription,
Tag.PresentationCreationDate,
Tag.PresentationCreationTime,
Tag.ContentCreatorName,
Tag.OriginalAttributesSequence
};
public static final Map<Entity, AttributeFilter> ATTRIBUTE_FILTERS;
static {
ATTRIBUTE_FILTERS = new HashMap<>();
ATTRIBUTE_FILTERS.put(Entity.Instance, new AttributeFilter(INSTANCE_ATTRS));
ATTRIBUTE_FILTERS.put(Entity.Patient, new AttributeFilter(PATIENT_ATTRS));
ATTRIBUTE_FILTERS.put(Entity.Series, new AttributeFilter(SERIES_ATTRS));
ATTRIBUTE_FILTERS.put(Entity.Study, new AttributeFilter(STUDY_ATTRS));
}
public static StoreParam createStoreParam() {
StoreParam storeParam = new StoreParam();
storeParam.setAttributeFilters(ATTRIBUTE_FILTERS);
return storeParam;
}
}