[507] | 1 | /*
|
---|
| 2 | * To change this template, choose Tools | Templates
|
---|
| 3 | * and open the template in the editor.
|
---|
| 4 | */
|
---|
| 5 |
|
---|
| 6 | package gov.hhs.fha.nhinc.transform.audit;
|
---|
| 7 |
|
---|
| 8 | /**
|
---|
| 9 | *
|
---|
| 10 | * @author mflynn02
|
---|
| 11 | */
|
---|
| 12 |
|
---|
| 13 | import org.apache.commons.logging.Log;
|
---|
| 14 | import org.apache.commons.logging.LogFactory;
|
---|
| 15 |
|
---|
| 16 | import java.io.ByteArrayOutputStream;
|
---|
| 17 | import javax.xml.bind.Marshaller;
|
---|
| 18 | import javax.xml.bind.JAXBContext;
|
---|
| 19 | import javax.xml.bind.JAXBElement;
|
---|
| 20 |
|
---|
| 21 | import com.services.nhinc.schema.auditmessage.AuditMessageType;
|
---|
| 22 | import com.services.nhinc.schema.auditmessage.AuditSourceIdentificationType;
|
---|
| 23 | import com.services.nhinc.schema.auditmessage.CodedValueType;
|
---|
| 24 | import com.services.nhinc.schema.auditmessage.ParticipantObjectIdentificationType;
|
---|
| 25 | import gov.hhs.fha.nhinc.common.auditlog.LogEventRequestType;
|
---|
| 26 |
|
---|
| 27 | import gov.hhs.fha.nhinc.common.nhinccommon.UserType;
|
---|
| 28 | import gov.hhs.fha.nhinc.common.auditlog.LogFindAuditEventsRequestType;
|
---|
| 29 |
|
---|
| 30 | public class FindAuditEventsTransforms {
|
---|
| 31 | private static Log log = LogFactory.getLog(FindAuditEventsTransforms.class);
|
---|
| 32 |
|
---|
| 33 | public static LogEventRequestType transformFindAuditEventsReq2AuditMsg(LogFindAuditEventsRequestType message) {
|
---|
| 34 |
|
---|
| 35 | AuditMessageType auditMsg = new AuditMessageType();
|
---|
| 36 | LogEventRequestType response = new LogEventRequestType();
|
---|
| 37 | response.setDirection(message.getDirection());
|
---|
| 38 | response.setInterface(message.getInterface());
|
---|
| 39 |
|
---|
| 40 | if (message != null) {
|
---|
| 41 | log.info ("FAE message is NOT null");
|
---|
| 42 |
|
---|
| 43 | // Extract UserInfo from Message.Assertion
|
---|
| 44 | UserType userInfo = new UserType();
|
---|
| 45 | if (message != null &&
|
---|
| 46 | message.getMessage() != null &&
|
---|
| 47 | message.getMessage().getAssertion() != null &&
|
---|
| 48 | message.getMessage().getAssertion().getUserInfo() != null) {
|
---|
| 49 | userInfo = message.getMessage().getAssertion().getUserInfo();
|
---|
| 50 | }
|
---|
| 51 |
|
---|
| 52 | int eventOutcomeID = 0;
|
---|
| 53 | String userID = "";
|
---|
| 54 | CodedValueType eventID = AuditDataTransformHelper.createEventId("ADQ", "AuditQuery", "ADQ", "AuditQuery");
|
---|
| 55 |
|
---|
| 56 | // EventIdentification
|
---|
| 57 | auditMsg.setEventIdentification(AuditDataTransformHelper.createEventIdentification(AuditDataTransformConstants.EVENT_ACTION_CODE_EXECUTE, eventOutcomeID, eventID));
|
---|
| 58 | log.info("set EventIdentification");
|
---|
| 59 |
|
---|
| 60 | //ActiveParticipant
|
---|
| 61 | // NOTE: This is [1..*] in schema but only one item to map to from FindAuditEventsType
|
---|
| 62 |
|
---|
| 63 | if (userInfo != null &&
|
---|
| 64 | userInfo.getUserName().length() > 0) {
|
---|
| 65 | userID = userInfo.getUserName();
|
---|
| 66 | log.info("userID " + userID);
|
---|
| 67 | }
|
---|
| 68 | String altUserID = "";
|
---|
| 69 | String userName = userInfo.getPersonName().getGivenName() + " " + userInfo.getPersonName().getFamilyName();
|
---|
| 70 | AuditMessageType.ActiveParticipant activeParticipant = AuditDataTransformHelper.createActiveParticipant(userID, altUserID, userName, true);
|
---|
| 71 |
|
---|
| 72 | auditMsg.getActiveParticipant().add(activeParticipant);
|
---|
| 73 | log.info("set ActiveParticiapnt");
|
---|
| 74 |
|
---|
| 75 | // AuditSourceIdentification
|
---|
| 76 | // NOTE: This is [1..*] in the schema but only one item to map to from FindAuditEventsType
|
---|
| 77 | String auditSourceID = "";
|
---|
| 78 | String enterpriseSiteID = "";
|
---|
| 79 | if (userInfo != null &&
|
---|
| 80 | userInfo.getOrg() != null) {
|
---|
| 81 | if (userInfo.getOrg().getName() != null &&
|
---|
| 82 | userInfo.getOrg().getName().length() > 0) {
|
---|
| 83 | enterpriseSiteID =userInfo.getOrg().getName();
|
---|
| 84 | }
|
---|
| 85 | if (userInfo.getOrg().getHomeCommunityId() != null &&
|
---|
| 86 | userInfo.getOrg().getHomeCommunityId().length() > 0) {
|
---|
| 87 |
|
---|
| 88 | auditSourceID = userInfo.getOrg().getHomeCommunityId();
|
---|
| 89 | log.info("auditSourceID " + auditSourceID);
|
---|
| 90 | }
|
---|
| 91 | }
|
---|
| 92 | AuditSourceIdentificationType auditSource = AuditDataTransformHelper.createAuditSourceIdentification(auditSourceID, enterpriseSiteID);
|
---|
| 93 | auditMsg.getAuditSourceIdentification().add(auditSource);
|
---|
| 94 | log.info("set AuditSourceIdentification");
|
---|
| 95 |
|
---|
| 96 | // ParticipationObjectIdentification
|
---|
| 97 | // NOTE: This is [0..*] in the schema but only one item to map to from FindAuditEventsType
|
---|
| 98 | String patientID = "";
|
---|
| 99 |
|
---|
| 100 | if (message.getMessage().getFindAuditEvents().getPatientId() != null &&
|
---|
| 101 | message.getMessage().getFindAuditEvents().getPatientId().length() > 0) {
|
---|
| 102 | patientID = message.getMessage().getFindAuditEvents().getPatientId();
|
---|
| 103 | log.info("patientID " + patientID);
|
---|
| 104 | }
|
---|
| 105 | ParticipantObjectIdentificationType partObject = AuditDataTransformHelper.createParticipantObjectIdentification(patientID);
|
---|
| 106 |
|
---|
| 107 | // Fill in the message field with the contents of the event message
|
---|
| 108 | try {
|
---|
| 109 | JAXBContext jc = JAXBContext.newInstance("com.services.nhinc.schema.auditmessage");
|
---|
| 110 | Marshaller marshaller = jc.createMarshaller();
|
---|
| 111 | ByteArrayOutputStream baOutStrm = new ByteArrayOutputStream();
|
---|
| 112 | baOutStrm.reset();
|
---|
| 113 |
|
---|
| 114 | com.services.nhinc.schema.auditmessage.ObjectFactory factory = new com.services.nhinc.schema.auditmessage.ObjectFactory();
|
---|
| 115 | JAXBElement oJaxbElement = factory.createFindAuditEvents(message.getMessage().getFindAuditEvents());
|
---|
| 116 | baOutStrm.close();
|
---|
| 117 | marshaller.marshal(oJaxbElement, baOutStrm);
|
---|
| 118 |
|
---|
| 119 | partObject.setParticipantObjectQuery(baOutStrm.toByteArray());
|
---|
| 120 | } catch (Exception e) {
|
---|
| 121 | e.printStackTrace();
|
---|
| 122 | throw new RuntimeException();
|
---|
| 123 | }
|
---|
| 124 |
|
---|
| 125 | auditMsg.getParticipantObjectIdentification().add(partObject);
|
---|
| 126 | log.info("set ParticipantObjectIdentification");
|
---|
| 127 | }
|
---|
| 128 | response.setAuditMessage(auditMsg);
|
---|
| 129 | return response;
|
---|
| 130 | }
|
---|
| 131 | }
|
---|