Package org.dcm4che3.audit

Source Code of org.dcm4che3.audit.AuditMessages$MediaType

/* ***** 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/dcm4che3.
*
* 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.dcm4che3.audit;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.util.Calendar;
import java.util.regex.Pattern;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import org.dcm4che3.audit.Accession;
import org.dcm4che3.audit.ActiveParticipant;
import org.dcm4che3.audit.AuditMessage;
import org.dcm4che3.audit.AuditSourceIdentification;
import org.dcm4che3.audit.EventIdentification;
import org.dcm4che3.audit.Instance;
import org.dcm4che3.audit.MPPS;
import org.dcm4che3.audit.ObjectFactory;
import org.dcm4che3.audit.ParticipantObjectContainsStudy;
import org.dcm4che3.audit.ParticipantObjectDescription;
import org.dcm4che3.audit.ParticipantObjectDetail;
import org.dcm4che3.audit.ParticipantObjectIdentification;
import org.dcm4che3.audit.SOPClass;

/**
* @author Gunter Zeilinger <gunterze@gmail.com>
* @author Michael Backhaus <michael.backhaus@agfa.com>
*/
public class AuditMessages {

    private static final Pattern IP4 =
            Pattern.compile("\\d+(\\.\\d+){3}");
    private static final Pattern IP6 =
            Pattern.compile("[0-9a-fA-F]*(\\:[0-9a-fA-F]*){7}");
    public static final String SCHEMA_URI =
            "http://www.dcm4che.org/DICOM/audit-message.rnc";

    private static final ObjectFactory of = new ObjectFactory();
    private static JAXBContext jc;

    private static JAXBContext jc() throws JAXBException {
        JAXBContext jc = AuditMessages.jc;
        if (jc == null)
            AuditMessages.jc = jc = JAXBContext.newInstance("org.dcm4che3.audit", AuditMessage.class.getClassLoader());
        return jc;
    }

    public static boolean isIP(String s) {
        return IP4.matcher(s).matches() || IP6.matcher(s).matches();
    }

    /**
     * Enumerated Value: C = (create) if the receiver did not hold
     * copies of the instances transferred
     *
     * R = (read) if the receiver already holds copies of the SOP
     * Instances transferred, and has determined that no changes are
     * needed to the copies held.
     *
     * U = (update) if the receiver is altering its held copies
     * to reconcile differences between the held copies and the received copies.
     *
     * If the Audit Source is either not the receiver, or otherwise does not
     * know whether or not the instances previously were held by the receiving
     * node, then use “R” = (Read).
     *
     */
    public static final class EventActionCode {
        public static final String Create = "C";
        public static final String Read = "R";
        public static final String Update = "U";
        public static final String Delete = "D";
        public static final String Execute = "E";
    }

    public static final class EventOutcomeIndicator {
        public static final String Success = "0";
        public static final String MinorFailure = "4";
        public static final String SeriousFailure = "8";
        public static final String MajorFailure = "12";
    }

    public static final class EventID extends org.dcm4che3.audit.EventID {

        public static final EventID ApplicationActivity =
                new EventID("110100", "DCM", "Application Activity");
        public static final EventID AuditLogUsed =
                new EventID("110101", "DCM", "Audit Log Used");
        public static final EventID BeginTransferringDICOMInstances =
                new EventID("110102", "DCM", "Begin Transferring DICOM Instances");
        public static final EventID DICOMInstancesAccessed =
                new EventID("110103", "DCM", "DICOM Instances Accessed");
        public static final EventID DICOMInstancesTransferred =
                new EventID("110104", "DCM", "DICOM Instances Transferred");
        public static final EventID DICOMStudyDeleted =
                new EventID("110105", "DCM", "DICOM Study Deleted");
        public static final EventID Export =
                new EventID("110106", "DCM", "Export");
        public static final EventID Import =
                new EventID("110107", "DCM", "Import");
        public static final EventID NetworkEntry =
                new EventID("110108", "DCM", "Network Entry");
        public static final EventID OrderRecord =
                new EventID("110109", "DCM", "Order Record");
        public static final EventID PatientRecord =
                new EventID("110110", "DCM", "Patient Record");
        public static final EventID ProcedureRecord =
                new EventID("110111", "DCM", "Procedure Record");
        public static final EventID Query =
                new EventID("110112", "DCM", "Query");
        public static final EventID SecurityAlert =
                new EventID("110113", "DCM", "Security Alert");
        public static final EventID UserAuthentication =
                new EventID("110114", "DCM", "User Authentication");
        public static final EventID HealthServicesProvisionEvent =
                new EventID("IHE0001", "IHE", "Health Services Provision Event");
        public static final EventID MedicationEvent =
                new EventID("IHE0002", "IHE", "Medication Event");
        public static final EventID PatientCareResourceAssignment =
                new EventID("IHE0003", "IHE", "Patient Care Resource Assignment");
        public static final EventID PatientCareEpisode =
                new EventID("IHE0004", "IHE", "Patient Care Episode");
        public static final EventID PatientCareProtocol =
                new EventID("IHE0005", "IHE", "Patient Care Protocol");

        EventID(String code, String codeSystemName, String displayName) {
            super.code = code;
            super.codeSystemName = codeSystemName;
            super.displayName = displayName;
        }

        @Override
        public void setCode(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setDisplayName(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setOriginalText(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setCodeSystem(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setCodeSystemName(String value) {
            throw new UnsupportedOperationException();
        }
    }

    public static final class EventTypeCode
            extends org.dcm4che3.audit.EventTypeCode {

        public static final EventTypeCode ApplicationStart =
                new EventTypeCode("110120", "DCM", "Application Start");
        public static final EventTypeCode ApplicationStop =
                new EventTypeCode("110121", "DCM", "Application Stop");
        public static final EventTypeCode Login =
                new EventTypeCode("110122", "DCM", "Login");
        public static final EventTypeCode Logout =
                new EventTypeCode("110123", "DCM", "Logout");
        public static final EventTypeCode Attach =
                new EventTypeCode("110124", "DCM", "Attach");
        public static final EventTypeCode Detach =
                new EventTypeCode("110125", "DCM", "Detach");
        public static final EventTypeCode NodeAuthentication =
                new EventTypeCode("110126", "DCM", "Node Authentication");
        public static final EventTypeCode EmergencyOverrideStarted =
                new EventTypeCode("110127", "DCM", "Emergency Override Started");
        public static final EventTypeCode NetworkConfiguration =
                new EventTypeCode("110128", "DCM", "Network Configuration");
        public static final EventTypeCode SecurityConfiguration =
                new EventTypeCode("110129", "DCM", "Security Configuration");
        public static final EventTypeCode HardwareConfiguration =
                new EventTypeCode("110130", "DCM", "Hardware Configuration");
        public static final EventTypeCode SoftwareConfiguration =
                new EventTypeCode("110131", "DCM", "Software Configuration");
        public static final EventTypeCode UseOfRestrictedFunction =
                new EventTypeCode("110132", "DCM", "Use of Restricted Function");
        public static final EventTypeCode AuditRecordingStopped =
                new EventTypeCode("110133", "DCM", "Audit Recording Stopped");
        public static final EventTypeCode AuditRecordingStarted =
                new EventTypeCode("110134", "DCM", "Audit Recording Started");
        public static final EventTypeCode ObjectSecurityAttributesChanged =
                new EventTypeCode("110135", "DCM", "Object Security Attributes Changed");
        public static final EventTypeCode SecurityRolesChanged =
                new EventTypeCode("110136", "DCM", "Security Roles Changed");
        public static final EventTypeCode UserSecurityAttributesChanged =
                new EventTypeCode("110137", "DCM", "User security Attributes Changed");
        public static final EventTypeCode EmergencyOverrideStopped =
                new EventTypeCode("110138", "DCM", "Emergency Override Stopped");
        public static final EventTypeCode RemoteServiceOperationStarted =
                new EventTypeCode("110139", "DCM", "Remote Service Operation Started");
        public static final EventTypeCode RemoteServiceOperationStopped =
                new EventTypeCode("110140", "DCM", "Remote Service Operation Stopped");
        public static final EventTypeCode LocalServiceOperationStarted =
                new EventTypeCode("110141", "DCM", "Local Service Operation Started");
        public static final EventTypeCode LocalServiceOperationStopped =
                new EventTypeCode("110142", "DCM", "Local Service Operation Stopped");
        //Defined in IHE IT Infrastructure (ITI)
        public static final EventTypeCode ITI_8_PatientIdentityFeed =
            new EventTypeCode("ITI-8", "IHE Transactions", "Patient Identity Feed");
        public static final EventTypeCode ITI_9_PIXQuery =
            new EventTypeCode("ITI-9", "IHE Transactions", "PIX Query");
        public static final EventTypeCode ITI_10_PIXUpdateNotification =
            new EventTypeCode("ITI-10", "IHE Transactions", "PIX Update Notification");
        public static final EventTypeCode ITI_18_RegistryStoredQuery =
            new EventTypeCode("ITI-18", "IHE Transactions", "Registry Stored Query");
        public static final EventTypeCode ITI_21_PatientDemographicsQuery =
            new EventTypeCode("ITI-21", "IHE Transactions", "Patient Demographics Query");
        public static final EventTypeCode ITI_22_PatientDemographicsAndVisitQuery =
            new EventTypeCode("ITI-22", "IHE Transactions", "Patient Demographics and Visit Query");
        public static final EventTypeCode ITI_38_CrossGatewayQuery =
            new EventTypeCode("ITI-38", "IHE Transactions", "Cross Gateway Query");
        public static final EventTypeCode ITI_39_CrossGatewayRetrieve =
            new EventTypeCode("ITI-39", "IHE Transactions", "Cross Gateway Retrieve");
        public static final EventTypeCode ITI_41_ProvideAndRegisterDocumentSetB =
            new EventTypeCode("ITI-41", "IHE Transactions", "Provide and Register Document Set-b");
        public static final EventTypeCode ITI_42_RegisterDocumentSetB =
            new EventTypeCode("ITI-42", "IHE Transactions", "Register Document Set-b");
        public static final EventTypeCode ITI_43_RetrieveDocumentSet =
            new EventTypeCode("ITI-43", "IHE Transactions", "Retrieve Document Set");
        public static final EventTypeCode ITI_44_PatientIdentityFeed =
            new EventTypeCode("ITI-44", "IHE Transactions", "Patient Identity Feed");
        public static final EventTypeCode ITI_45_PIXQuery =
            new EventTypeCode("ITI-45", "IHE Transactions", "PIX Query");
        public static final EventTypeCode ITI_46_PIXUpdateNotification =
            new EventTypeCode("ITI-46", "IHE Transactions", "PIX Update Notification");
        public static final EventTypeCode ITI_47_PatientDemographicsQuery =
            new EventTypeCode("ITI-47", "IHE Transactions", "Patient Demographics Query");
        public static final EventTypeCode ITI_51_MultiPatientQuery =
            new EventTypeCode("ITI-51", "IHE Transactions", "Multi-Patient Query");
        public static final EventTypeCode ITI_63_XCFFetch =
            new EventTypeCode("ITI-63", "IHE Transactions", "XCF Fetch");

        public EventTypeCode(String code, String codeSystemName,
                String displayName) {
            super.code = code;
            super.codeSystemName = codeSystemName;
            super.displayName = displayName;
        }

        @Override
        public void setCode(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setDisplayName(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setOriginalText(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setCodeSystem(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setCodeSystemName(String value) {
            throw new UnsupportedOperationException();
        }

    }

    public static final class AuditSourceTypeCode
            extends org.dcm4che3.audit.AuditSourceTypeCode {

        public static final AuditSourceTypeCode EndUserDisplayDevice =
                new AuditSourceTypeCode("1");
        public static final AuditSourceTypeCode DataAcquisitionDevice =
                new AuditSourceTypeCode("2");
        public static final AuditSourceTypeCode WebServerProcess =
                new AuditSourceTypeCode("3");
        public static final AuditSourceTypeCode ApplicationServerProcess =
                new AuditSourceTypeCode("4");
        public static final AuditSourceTypeCode DatabaseServerProcess =
                new AuditSourceTypeCode("5");
        public static final AuditSourceTypeCode SecurityServer =
                new AuditSourceTypeCode("6");
        public static final AuditSourceTypeCode NetworkComponent =
                new AuditSourceTypeCode("7");
        public static final AuditSourceTypeCode OperatingSoftware =
                new AuditSourceTypeCode("8");
        public static final AuditSourceTypeCode Other =
                new AuditSourceTypeCode("9");

        public AuditSourceTypeCode(String code) {
            super.code = code;
        }

        public AuditSourceTypeCode(String code, String codeSystemName,
                String displayName) {
            super.code = code;
            super.codeSystemName = codeSystemName;
            super.displayName = displayName;
        }

        @Override
        public void setCode(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setDisplayName(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setOriginalText(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setCodeSystem(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setCodeSystemName(String value) {
            throw new UnsupportedOperationException();
        }

    }

    public static final class RoleIDCode extends org.dcm4che3.audit.RoleIDCode {

        public static final RoleIDCode Application =
                new RoleIDCode("110150","DCM","Application");
        public static final RoleIDCode ApplicationLauncher =
                new RoleIDCode("110151","DCM","Application Launcher");
        public static final RoleIDCode Destination =
                new RoleIDCode("110152","DCM","Destination");
        public static final RoleIDCode Source =
                new RoleIDCode("110153","DCM","Source");
        public static final RoleIDCode DestinationMedia =
                new RoleIDCode("110154","DCM","Destination Media");
        public static final RoleIDCode SourceMedia =
                new RoleIDCode("110155","DCM","Source Media");

        public RoleIDCode(String code, String codeSystemName,
                String displayName) {
            super.code = code;
            super.codeSystemName = codeSystemName;
            super.displayName = displayName;
        }

        @Override
        public void setCode(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setDisplayName(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setOriginalText(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setCodeSystem(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setCodeSystemName(String value) {
            throw new UnsupportedOperationException();
        }

    }

    public static final class MediaType extends org.dcm4che3.audit.MediaType {

        public static final MediaType USBDiskEmulation =
                new MediaType("110030", "DCM", "USB Disk Emulation");
        public static final MediaType Email =
                new MediaType("110031", "DCM", "Email");
        public static final MediaType CD =
                new MediaType("110032", "DCM", "CD");
        public static final MediaType DVD =
                new MediaType("110033", "DCM", "DVD");
        public static final MediaType CompactFlash =
                new MediaType("110034", "DCM", "Compact Flash");
        public static final MediaType MultiMediaCard =
                new MediaType("110035", "DCM", "Multi-media Card");
        public static final MediaType SecureDigitalCard =
                new MediaType("110036", "DCM", "Secure Digital Card");
        public static final MediaType URI =
                new MediaType("110037", "DCM", "URI");
        public static final MediaType Film =
                new MediaType("110010", "DCM", "Film");
        public static final MediaType PaperDocument =
                new MediaType("110038", "DCM", "Paper Document");

        public MediaType(String code, String codeSystemName,
                String displayName) {
            super.code = code;
            super.codeSystemName = codeSystemName;
            super.displayName = displayName;
        }

        @Override
        public void setCode(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setDisplayName(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setOriginalText(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setCodeSystem(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setCodeSystemName(String value) {
            throw new UnsupportedOperationException();
        }

    }

    public static final class NetworkAccessPointTypeCode {
        public static final String MachineName = "1";
        public static final String IPAddress = "2";
        public static final String TelephoneNumber = "3";
        public static final String EmailAddress = "4";
        public static final String URI = "5";
    }

    public static final class ParticipantObjectTypeCode {
        public static final String Person = "1";
        public static final String SystemObject = "2";
        public static final String Organization = "3";
        public static final String Other = "4";
    }

    public static final class ParticipantObjectTypeCodeRole {
        public static final String Patient = "1";
        public static final String Location = "2";
        public static final String Report = "3";
        public static final String Resource = "4";
        public static final String MasterFile = "5";
        public static final String User = "6";
        public static final String List = "7";
        public static final String Doctor = "8";
        public static final String Subscriber = "9";
        public static final String Guarantor = "10";
        public static final String SecurityUserEntity = "11";
        public static final String SecurityUserGroup = "12";
        public static final String SecurityResource = "13";
        public static final String SecurityGranualarityDefinition = "14";
        public static final String Provider = "15";
        public static final String ReportDestination = "16";
        public static final String ReportLibrary = "17";
        public static final String Schedule = "18";
        public static final String Customer = "19";
        public static final String Job = "20";
        public static final String JobStream = "21";
        public static final String Table = "22";
        public static final String RoutingCriteria = "23";
        public static final String Query = "24";
    }

    public static final class ParticipantObjectDataLifeCycle {
        public static final String OriginationCreation = "1";
        public static final String ImportCopyFromOriginal  = "2";
        public static final String Amendment = "3";
        public static final String Verification = "4";
        public static final String Translation = "5";
        public static final String AccessUse = "6";
        public static final String DeIdentification = "7";
        public static final String AggregationSummarizationDerivation = "8";
        public static final String Report = "9";
        public static final String ExportCopyToTarget = "10";
        public static final String Disclosure = "11";
        public static final String ReceiptOfDisclosure = "12";
        public static final String Archiving = "13";
        public static final String LogicalDeletion = "14";
        public static final String PermanentErasurePhysicalDestruction  = "15";
    }

    public static final class ParticipantObjectIDTypeCode
            extends org.dcm4che3.audit.ParticipantObjectIDTypeCode {

        public static final ParticipantObjectIDTypeCode MedicalRecordNumber =
                new ParticipantObjectIDTypeCode("1");
        public static final ParticipantObjectIDTypeCode PatientNumber =
                new ParticipantObjectIDTypeCode("2");
        public static final ParticipantObjectIDTypeCode EncounterNumber =
                new ParticipantObjectIDTypeCode("3");
        public static final ParticipantObjectIDTypeCode EnrolleeNumber =
                new ParticipantObjectIDTypeCode("4");
        public static final ParticipantObjectIDTypeCode SocialSecurityNumber =
                new ParticipantObjectIDTypeCode("5");
        public static final ParticipantObjectIDTypeCode AccountNumber =
                new ParticipantObjectIDTypeCode("6");
        public static final ParticipantObjectIDTypeCode GuarantorNumber =
                new ParticipantObjectIDTypeCode("7");
        public static final ParticipantObjectIDTypeCode ReportName =
                new ParticipantObjectIDTypeCode("8");   
        public static final ParticipantObjectIDTypeCode ReportNumber =
                new ParticipantObjectIDTypeCode("9");
        public static final ParticipantObjectIDTypeCode SearchCriteria =
                new ParticipantObjectIDTypeCode("10");
        public static final ParticipantObjectIDTypeCode UserIdentifier =
                new ParticipantObjectIDTypeCode("11");
        public static final ParticipantObjectIDTypeCode URI =
                new ParticipantObjectIDTypeCode("12");
        public static final ParticipantObjectIDTypeCode StudyInstanceUID =
                new ParticipantObjectIDTypeCode("110180","DCM","Study Instance UID");
        public static final ParticipantObjectIDTypeCode SOPClassUID =
                new ParticipantObjectIDTypeCode("110181","DCM","SOP Class UID");
        public static final ParticipantObjectIDTypeCode NodeID =
                new ParticipantObjectIDTypeCode("110182","DCM","Node ID");
        public static final ParticipantObjectIDTypeCode ITI_PatientNumber =
                new ParticipantObjectIDTypeCode("2","RFC-3881","Patient Number");
        public static final ParticipantObjectIDTypeCode ITI_ReportNumber =
                new ParticipantObjectIDTypeCode("9","RFC-3881","Report Number");
        public static final ParticipantObjectIDTypeCode ITI_PIXQuery =
                new ParticipantObjectIDTypeCode("ITI-9","IHE Transactions","PIX Query");

        public ParticipantObjectIDTypeCode(String code) {
            super.code = code;
        }

        public ParticipantObjectIDTypeCode(String code, String codeSystemName,
                String displayName) {
            super.code = code;
            super.codeSystemName = codeSystemName;
            super.displayName = displayName;
        }

        @Override
        public void setCode(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setDisplayName(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setOriginalText(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setCodeSystem(String value) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void setCodeSystemName(String value) {
            throw new UnsupportedOperationException();
        }

    }

    public static EventIdentification createEventIdentification(
            EventID eventID, String action, Calendar eventDateTime,
            String outcome, String outcomeDescription, org.dcm4che3.audit.EventTypeCode... types) {
        EventIdentification ei = new EventIdentification();
        ei.setEventID(eventID);
        ei.setEventDateTime(
                eventDateTime != null ? eventDateTime : Calendar.getInstance());
        ei.setEventActionCode(action);
        ei.setEventOutcomeIndicator(outcome);
        ei.setEventOutcomeDescription(outcomeDescription);
        for (org.dcm4che3.audit.EventTypeCode type : types)
            ei.getEventTypeCode().add(type);
        return ei;
    }

    public static ActiveParticipant createActiveParticipant(
            String userID, String altUserID, String name, boolean requestor,
            String napID, String napTypeCode, MediaType mediaType,
            RoleIDCode... roleIDs) {
        ActiveParticipant ap = new ActiveParticipant();
        ap.setUserID(userID);
        ap.setAlternativeUserID(altUserID);
        ap.setUserName(name);
        ap.setUserIsRequestor(requestor);
        ap.setNetworkAccessPointID(napID);
        ap.setNetworkAccessPointTypeCode(napTypeCode);
        ap.setMediaType(mediaType);
        for (RoleIDCode roleID : roleIDs)
            ap.getRoleIDCode().add(roleID);
        return ap;
    }

   public static AuditSourceIdentification createAuditSourceIdentification(
            String siteID, String sourceID, AuditSourceTypeCode... types) {
        AuditSourceIdentification asi = new AuditSourceIdentification();
        asi.setAuditEnterpriseSiteID(siteID);
        asi.setAuditSourceID(sourceID);
        for (AuditSourceTypeCode type : types)
            asi.getAuditSourceTypeCode().add(type);
        return asi;
   }

    public static ParticipantObjectIdentification createParticipantObjectIdentification(
            String id, ParticipantObjectIDTypeCode idType, String name,
            byte[] query, String type, String role, String lifeCycle,
            String sensitivity, ParticipantObjectDescription description,
            ParticipantObjectDetail... details) {
        ParticipantObjectIdentification poi = new ParticipantObjectIdentification();
        poi.setParticipantObjectID(id);
        poi.setParticipantObjectIDTypeCode(idType);
        poi.setParticipantObjectName(name);
        poi.setParticipantObjectQuery(query);
        poi.setParticipantObjectTypeCode(type);
        poi.setParticipantObjectTypeCodeRole(role);
        poi.setParticipantObjectDataLifeCycle(lifeCycle);
        poi.setParticipantObjectSensitivity(sensitivity);
        poi.setParticipantObjectDescription(description);
        for (ParticipantObjectDetail detail : details)
            poi.getParticipantObjectDetail().add(detail);
        return poi;
    }
  
    public static ParticipantObjectDescription createParticipantObjectDescription(
            Boolean encrypted, Boolean anonymized) {
        ParticipantObjectDescription pod = new ParticipantObjectDescription();
        pod.setEncrypted(encrypted);
        pod.setAnonymized(anonymized);
        return pod;
    }

    public static ParticipantObjectDetail createParticipantObjectDetail(
            String type, byte[] value) {
        ParticipantObjectDetail detail = new ParticipantObjectDetail();
        detail.setType(type);
        detail.setValue(value);
        return detail;
    }

    public static MPPS createMPPS(String uid) {
        MPPS mpps = new MPPS();
        mpps.setUID(uid);
        return mpps;
    }

    public static SOPClass createSOPClass(String uid, Integer numI) {
        SOPClass sopClass = new SOPClass();
        sopClass.setUID(uid);
        sopClass.setNumberOfInstances(numI);
        return sopClass;
    }

    public static Instance createInstance(String uid) {
        Instance inst = new Instance();
        inst.setUID(uid);
        return inst;
    }

    public static ParticipantObjectContainsStudy
            createParticipantObjectContainsStudy(String uid) {
        ParticipantObjectContainsStudy study = new ParticipantObjectContainsStudy();
        study.setUID(uid);
        return study;
    }

    public static Accession createAccession(String accessionNumber) {
        Accession accession = new Accession();
        accession.setNumber(accessionNumber);
        return accession;
    }

    public static String alternativeUserIDForAETitle(String... aets) {
        if (aets.length == 0)
            return null;

        StringBuilder b = new StringBuilder();
        b.append("AETITLES=").append(aets[0]);
        for (int i = 1; i < aets.length; i++)
            b.append(';').append(aets[i]);
        return b.toString();
    }

    public static void toXML(AuditMessage message, OutputStream os)
            throws IOException {
        toXML(message, os, false, "UTF-8", SCHEMA_URI);
    }

    public static void toXML(AuditMessage message, OutputStream os,
            boolean format) throws IOException {
        toXML(message, os, format, "UTF-8", SCHEMA_URI);
    }

    public static void toXML(AuditMessage message, OutputStream os,
            boolean format, String encoding) throws IOException {
        toXML(message, os, format, encoding, SCHEMA_URI);
    }

    public static void toXML(AuditMessage message, OutputStream os,
            boolean format, String encoding, String schemaURI)
            throws IOException {
        try {
            Marshaller m = jc().createMarshaller();
            if (format)
                m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            if (schemaURI != null)
                m.setProperty(Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION,
                        schemaURI);
            if (encoding != null)
                m.setProperty(Marshaller.JAXB_ENCODING, encoding);
            m.marshal(of.createAuditMessage(message), os );
        } catch( JAXBException jbe ){
            if (jbe.getLinkedException() instanceof IOException)
                throw (IOException) jbe.getLinkedException();
            throw new IllegalStateException(jbe);
        }
    }

    public static String toXML(AuditMessage message)
            throws IOException {
        return toXML(message, false, "UTF-8", SCHEMA_URI);
    }

    public static String toXML(AuditMessage message,
            boolean format) throws IOException {
        return toXML(message, format, "UTF-8", SCHEMA_URI);
    }

    public static String toXML(AuditMessage message,
            boolean format, String encoding) throws IOException {
        return toXML(message, format, encoding, SCHEMA_URI);
    }

    public static String toXML(AuditMessage message,
            boolean format, String encoding, String schemaURL)
            throws IOException {
        ByteArrayOutputStream os = new ByteArrayOutputStream(256);
        toXML(message, os, format, encoding, schemaURL);
        return os.toString(encoding);
    }

    public static AuditMessage fromXML(InputStream is)
            throws JAXBException {
        Unmarshaller u = jc().createUnmarshaller();
        @SuppressWarnings("unchecked")
        JAXBElement<AuditMessage> je =
                (JAXBElement<AuditMessage>) u.unmarshal(is);
        return je.getValue();
    }

    public static AuditMessage fromXML(Reader is)
            throws JAXBException {
        Unmarshaller u = jc().createUnmarshaller();
        @SuppressWarnings("unchecked")
        JAXBElement<AuditMessage> je =
                (JAXBElement<AuditMessage>) u.unmarshal(is);
        return je.getValue();
    }
}
TOP

Related Classes of org.dcm4che3.audit.AuditMessages$MediaType

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.