source: ccr/trunk/nhin-vista/projects/NHINC/Current/Product/Production/Gateway/GatewayPolicyEngineTransformationEjb/src/java/gov/hhs/fha/nhinc/gateway/policyenginetransformation/SubjectReidentificationTransformHelper.java@ 507

Last change on this file since 507 was 507, checked in by George Lilly, 15 years ago

NHIN gateway and adaptor for use on linux with VistA EHR and RPMS

File size: 4.9 KB
Line 
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5package gov.hhs.fha.nhinc.gateway.policyenginetransformation;
6
7import gov.hhs.fha.nhinc.common.nhinccommonadapter.CheckPolicyRequestType;
8import gov.hhs.fha.nhinc.common.eventcommon.SubjectReidentificationEventType;
9import gov.hhs.fha.nhinc.common.eventcommon.SubjectReidentificationMessageType;
10import gov.hhs.fha.nhinc.gateway.policyenginetransformation.Helpers.ActionHelper;
11import gov.hhs.fha.nhinc.gateway.policyenginetransformation.Helpers.AttributeHelper;
12import gov.hhs.fha.nhinc.gateway.policyenginetransformation.Helpers.Constants;
13import gov.hhs.fha.nhinc.gateway.policyenginetransformation.Helpers.InboundOutboundChecker;
14import gov.hhs.fha.nhinc.gateway.policyenginetransformation.Helpers.SubjectHelper;
15import javax.xml.bind.JAXBElement;
16import oasis.names.tc.xacml._2_0.context.schema.os.RequestType;
17import oasis.names.tc.xacml._2_0.context.schema.os.ResourceType;
18import oasis.names.tc.xacml._2_0.context.schema.os.SubjectType;
19import org.hl7.v3.II;
20import org.hl7.v3.PRPAIN201309UV;
21import org.hl7.v3.PRPAMT201307UVParameterList;
22import org.hl7.v3.PRPAMT201307UVPatientIdentifier;
23import org.hl7.v3.PRPAMT201307UVQueryByParameter;
24
25/**
26 *
27 * @author svalluripalli
28 */
29public class SubjectReidentificationTransformHelper {
30
31 private static final String ActionInValue = "SubjectDiscoveryReidentificationIn";
32 private static final String ActionOutValue = "SubjectDiscoveryReidentificationOut";
33 private static final String PatientAssigningAuthorityAttributeId = Constants.AssigningAuthorityAttributeId;
34 private static final String PatientIdAttributeId = Constants.ResourceIdAttributeId;
35
36 public static CheckPolicyRequestType transformSubjectReidentificationToCheckPolicy(SubjectReidentificationEventType event) {
37 CheckPolicyRequestType genericPolicyRequest = new CheckPolicyRequestType();
38 SubjectReidentificationMessageType message = event.getMessage();
39 PRPAIN201309UV subjectReidentification = message.getPRPAIN201309UV();
40 RequestType request = new RequestType();
41 if (event.getDirection() != null) {
42 System.out.println("event.getDirection() is " + event.getDirection());
43 }
44 if (InboundOutboundChecker.IsInbound(event.getDirection())) {
45 request.setAction(ActionHelper.actionFactory(ActionInValue));
46 }
47 if (InboundOutboundChecker.IsOutbound(event.getDirection())) {
48 request.setAction(ActionHelper.actionFactory(ActionOutValue));
49 }
50 System.out.println("Action is >>>" + request.getAction().getAttribute().get(0).getAttributeId() + "<<<");
51 SubjectType subject = SubjectHelper.subjectFactoryReident(event.getSendingHomeCommunity(), event.getMessage().getAssertion());
52 request.getSubject().add(subject);
53 II ii = extractPatientIdentifier(subjectReidentification);
54 if (ii != null) {
55 ResourceType resource = new ResourceType();
56 resource.getAttribute().add(AttributeHelper.attributeFactory(PatientAssigningAuthorityAttributeId, Constants.DataTypeString, ii.getRoot()));
57 resource.getAttribute().add(AttributeHelper.attributeFactory(PatientIdAttributeId, Constants.DataTypeString, ii.getExtension()));
58 request.getResource().add(resource);
59 }
60 genericPolicyRequest.setRequest(request);
61 return genericPolicyRequest;
62 }
63
64 /**
65 * Extract a Patient from 201309
66 * @param message
67 * @return II (PatientId root and extension)
68 */
69 private static II extractPatientIdentifier(PRPAIN201309UV message) {
70 II ii = null;
71 PRPAMT201307UVQueryByParameter queryByParameter = null;
72 PRPAMT201307UVParameterList parameterList = null;
73 PRPAMT201307UVPatientIdentifier patientIdentifier = null;
74 if ((message != null) && (message.getControlActProcess() != null)) {
75 JAXBElement<PRPAMT201307UVQueryByParameter> queryByParamterElement = message.getControlActProcess().getQueryByParameter();
76 if (null != queryByParamterElement) {
77 queryByParameter = queryByParamterElement.getValue();
78 if (null != queryByParameter) {
79 parameterList = queryByParameter.getParameterList();
80 if (null != parameterList) {
81 patientIdentifier = (parameterList.getPatientIdentifier() != null) ? parameterList.getPatientIdentifier().get(0) : null;
82 if (null != patientIdentifier) {
83 if (null != patientIdentifier.getValue() && patientIdentifier.getValue().size() >= 1) {
84 ii = patientIdentifier.getValue().get(0);
85 System.out.println(">>>>> patientIdentifier " + ii.getExtension() + " " + ii.getRoot());
86 }
87 }
88 }
89 }
90 }
91 }
92 return ii;
93 }
94}
Note: See TracBrowser for help on using the repository browser.