/* ***** 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; } }