protected MCCIIN000002UV01 addPatientDiscoveryAsyncReq( RespondingGatewayPRPAIN201305UV02RequestType request) { MCCIIN000002UV01 ack = new MCCIIN000002UV01(); // "process" the request and send a response out to the Nhin. PatientDiscovery201305Processor msgProcessor = new PatientDiscovery201305Processor(); PRPAIN201306UV02 resp = msgProcessor.process201305(request.getPRPAIN201305UV02(), request.getAssertion()); // Generate a new response assertion AsyncMessageProcessHelper asyncProcess = createAsyncProcesser(); AssertionType newAssertion = asyncProcess.copyAssertionTypeObject(request.getAssertion()); // Original request message id is now set as the relates to id newAssertion.getRelatesToList().add(request.getAssertion().getMessageId()); // Generate a new unique response assertion Message ID newAssertion.setMessageId(AsyncMessageIdCreator.generateMessageId()); // Set user info homeCommunity String homeCommunityId = HomeCommunityMap.getLocalHomeCommunityId(); HomeCommunityType homeCommunityType = new HomeCommunityType(); homeCommunityType.setHomeCommunityId(homeCommunityId); homeCommunityType.setName(homeCommunityId); newAssertion.setHomeCommunity(homeCommunityType); if (newAssertion.getUserInfo() != null && newAssertion.getUserInfo().getOrg() != null) { newAssertion.getUserInfo().getOrg().setHomeCommunityId(homeCommunityId); newAssertion.getUserInfo().getOrg().setName(homeCommunityId); } ack = sendToNhin(resp, newAssertion, request.getNhinTargetCommunities()); return ack; }
public LogEventRequestType transformNhinNotifyRequestToAuditMessage( LogNhinNotifyRequestType message) { LogEventRequestType response = new LogEventRequestType(); AuditMessageType auditMsg = new AuditMessageType(); LOG.info("******************************************************************"); LOG.info("Entering transformNhinNotifyRequestToAuditMessage() method."); LOG.info("******************************************************************"); if (message == null || message.getDirection() == null || message.getInterface() == null) { LOG.error( "DocumentQueryTransforms.transformDocQueryReq2AuditMsg() has insufficient data to log a message audfit"); return null; } String _interface = message.getInterface(); String direction = message.getDirection(); response.setDirection(direction); response.setInterface(_interface); AssertionType assertion = null; UserType userInfo = null; // Extract Assertion and UserInfo from Message.Assertion if (message != null && message.getMessage() != null && message.getMessage().getAssertion() != null) { assertion = message.getMessage().getAssertion(); if (assertion.getUserInfo() != null) { userInfo = message.getMessage().getAssertion().getUserInfo(); } } // Create EventIdentification CodedValueType eventID = null; eventID = AuditDataTransformHelper.createCodedValue( AuditDataTransformConstants.EVENT_ID_CODE_SYS_NAME_NOT, AuditDataTransformConstants.EVENT_ID_DISPLAY_NAME_NOTIFY, AuditDataTransformConstants.EVENT_ID_CODE_SYS_NAME_NOT, AuditDataTransformConstants.EVENT_ID_DISPLAY_NAME_NOTIFY, null); auditMsg.setEventIdentification( AuditDataTransformHelper.createEventIdentification( AuditDataTransformConstants.EVENT_ACTION_CODE_CREATE, AuditDataTransformConstants.EVENT_OUTCOME_INDICATOR_SUCCESS, eventID, null)); // Create Active Participant Section boolean isSender = AuditDataTransformHelper.isSender(_interface, direction); boolean isRecipient = isSender ? false : true; if (userInfo != null) { ActiveParticipant participant = AuditDataTransformHelper.createActiveParticipantForHuman(userInfo); auditMsg.getActiveParticipant().add(participant); } ActiveParticipant source = AuditDataTransformHelper.createActiveParticipantSource(isSender, null); auditMsg.getActiveParticipant().add(source); ActiveParticipant destination = AuditDataTransformHelper.createActiveParticipantDestination( assertion.getSamlAuthnStatement(), isRecipient); auditMsg.getActiveParticipant().add(destination); /* Assign AuditSourceIdentification */ String patientId = ""; if (message != null && NullChecker.isNotNullish(message.getMessage().getAssertion().getUniquePatientId()) && NullChecker.isNotNullish( message.getMessage().getAssertion().getUniquePatientId().get(0))) { patientId = message.getMessage().getAssertion().getUniquePatientId().get(0); } String communityId = ""; String communityName = ""; if (userInfo != null && userInfo.getOrg() != null) { if (userInfo.getOrg().getHomeCommunityId() != null) { communityId = userInfo.getOrg().getHomeCommunityId(); } if (userInfo.getOrg().getName() != null) { communityName = userInfo.getOrg().getName(); } } AuditSourceIdentificationType auditSource = AuditDataTransformHelper.createAuditSourceIdentification(communityId, communityName, null); auditMsg.getAuditSourceIdentification().add(auditSource); /* Assign ParticipationObjectIdentification */ /** Create a ParticipantObjectIdentification entry for Patient */ ParticipantObjectIdentificationType partObjId = null; if ((patientId != null) && (!patientId.isEmpty())) { CodedValueType partObjectIdType = AuditDataTransformHelper.getPatientParticipantRoleIdCodedValue(); // Participant Object Identification Entry $1 Patient partObjId = AuditDataTransformHelper.createParticipantObjectIdentification( AuditDataTransformConstants.PARTICIPANT_OBJECT_TYPE_CODE_PERSON, AuditDataTransformConstants.PARTICIPANT_OBJECT_TYPE_CODE_ROLE_PATIENT, partObjectIdType, patientId, null); auditMsg.getParticipantObjectIdentification().add(partObjId); } // TODO: Illegal piggybacking of message in ParticipantObjectIdentification.ObjectQuery boolean addDone = true; if (partObjId == null) { partObjId = new ParticipantObjectIdentificationType(); addDone = false; } // Fill in the message field with the contents of the event message try { JAXBContextHandler oHandler = new JAXBContextHandler(); JAXBContext jc = oHandler.getJAXBContext( org.oasis_open.docs.wsn.b_2.ObjectFactory.class, ihe.iti.xds_b._2007.ObjectFactory.class); Marshaller marshaller = jc.createMarshaller(); ByteArrayOutputStream baOutStrm = new ByteArrayOutputStream(); baOutStrm.reset(); if (message != null) { marshaller.marshal(message.getMessage().getNotify(), baOutStrm); } LOG.debug("Done marshalling the message."); partObjId.setParticipantObjectQuery(baOutStrm.toByteArray()); } catch (Exception e) { e.printStackTrace(); LOG.error("EXCEPTION when marshalling Nhin Notify Request : " + e); throw new RuntimeException(); } if (!addDone) { auditMsg.getParticipantObjectIdentification().add(partObjId); } response.setAuditMessage(auditMsg); LOG.info("******************************************************************"); LOG.info("Exiting transformNhinNotifyRequestToAuditMessage() method."); LOG.info("******************************************************************"); return response; }
public LogEventRequestType transformEntityNotifyResponseToGenericAudit( LogEntityNotifyResponseType message) { LogEventRequestType response = new LogEventRequestType(); AuditMessageType auditMsg = new AuditMessageType(); LOG.info("******************************************************************"); LOG.info("Entering transformEntityNotifyResponseToGenericAudit() method."); LOG.info("******************************************************************"); if (message == null || message.getDirection() == null || message.getInterface() == null) { LOG.error( "DocumentQueryTransforms.transformDocQueryReq2AuditMsg() has insufficient data to log a message audfit"); return null; } String _interface = message.getInterface(); String direction = message.getDirection(); response.setDirection(direction); response.setInterface(_interface); AssertionType assertion = null; UserType userInfo = null; // Extract Assertion and UserInfo from Message.Assertion if (message != null && message.getMessage() != null && message.getMessage().getAssertion() != null) { assertion = message.getMessage().getAssertion(); if (assertion.getUserInfo() != null) { userInfo = message.getMessage().getAssertion().getUserInfo(); } } // Create EventIdentification CodedValueType eventID = null; eventID = AuditDataTransformHelper.createCodedValue( AuditDataTransformConstants.EVENT_ID_CODE_SYS_NAME_NOT, AuditDataTransformConstants.EVENT_ID_DISPLAY_NAME_NOTIFY, AuditDataTransformConstants.EVENT_ID_CODE_SYS_NAME_NOT, AuditDataTransformConstants.EVENT_ID_DISPLAY_NAME_NOTIFY, null); auditMsg.setEventIdentification( AuditDataTransformHelper.createEventIdentification( AuditDataTransformConstants.EVENT_ACTION_CODE_CREATE, AuditDataTransformConstants.EVENT_OUTCOME_INDICATOR_SUCCESS, eventID, null)); // Create Active Participant Section boolean isSender = AuditDataTransformHelper.isSender(_interface, direction); boolean isRecipient = isSender ? false : true; if (userInfo != null) { ActiveParticipant participant = AuditDataTransformHelper.createActiveParticipantForHuman(userInfo); auditMsg.getActiveParticipant().add(participant); } ActiveParticipant source = AuditDataTransformHelper.createActiveParticipantSource(isSender, null); auditMsg.getActiveParticipant().add(source); ActiveParticipant destination = AuditDataTransformHelper.createActiveParticipantDestination( assertion.getSamlAuthnStatement(), isRecipient); auditMsg.getActiveParticipant().add(destination); /* Assign AuditSourceIdentification */ String patientId = ""; if (message != null && NullChecker.isNotNullish(message.getMessage().getAssertion().getUniquePatientId()) && NullChecker.isNotNullish( message.getMessage().getAssertion().getUniquePatientId().get(0))) { patientId = message.getMessage().getAssertion().getUniquePatientId().get(0); } String communityId = ""; String communityName = ""; if (userInfo != null && userInfo.getOrg() != null) { if (userInfo.getOrg().getHomeCommunityId() != null) { communityId = userInfo.getOrg().getHomeCommunityId(); } if (userInfo.getOrg().getName() != null) { communityName = userInfo.getOrg().getName(); } } AuditSourceIdentificationType auditSource = AuditDataTransformHelper.createAuditSourceIdentification(communityId, communityName, null); auditMsg.getAuditSourceIdentification().add(auditSource); /* Assign ParticipationObjectIdentification */ /** Create a ParticipantObjectIdentification entry for Patient */ ParticipantObjectIdentificationType partObjId = null; if ((patientId != null) && (!patientId.isEmpty())) { CodedValueType partObjectIdType = AuditDataTransformHelper.getPatientParticipantRoleIdCodedValue(); // Participant Object Identification Entry $1 Patient partObjId = AuditDataTransformHelper.createParticipantObjectIdentification( AuditDataTransformConstants.PARTICIPANT_OBJECT_TYPE_CODE_PERSON, AuditDataTransformConstants.PARTICIPANT_OBJECT_TYPE_CODE_ROLE_PATIENT, partObjectIdType, patientId, null); auditMsg.getParticipantObjectIdentification().add(partObjId); } // TODO: Illegal piggybacking of message in ParticipantObjectIdentification.ObjectQuery if (partObjId == null) { partObjId = new ParticipantObjectIdentificationType(); } response.setAuditMessage(auditMsg); LOG.info("******************************************************************"); LOG.info("Exiting transformEntityNotifyResponseToGenericAudit() method."); LOG.info("******************************************************************"); return response; }