protected RequestType getRequestType(PRPAIN201305UV02 event, AssertionType assertion) {
    addDebugLog("Begin -- PatientDiscoveryPolicyTransformHelper.getRequestType()");
    RequestType request = new RequestType();

    setSubjectToRequestType(event, request, assertion);

    ResourceType resource = null;
    AttributeHelper attrHelper = new AttributeHelper();
    II ii = extractPatientIdentifier(event);
    if (ii != null) {
      resource = new ResourceType();
      resource
          .getAttribute()
          .add(
              attrHelper.attributeFactory(
                  PatientAssigningAuthorityAttributeId, Constants.DataTypeString, ii.getRoot()));
      String sStrippedPatientId = PatientIdFormatUtil.parsePatientId(ii.getExtension());
      log.debug("transformSubjectAddedInToCheckPolicy: sStrippedPatientId = " + sStrippedPatientId);
      resource
          .getAttribute()
          .add(
              attrHelper.attributeFactory(
                  PatientIdAttributeId, Constants.DataTypeString, sStrippedPatientId));
      request.getResource().add(resource);
    }
    request.getResource().add(resource);
    addDebugLog("End -- PatientDiscoveryPolicyTransformHelper.getRequestType()");
    return request;
  }
  /**
   * Transform method to create a CheckPolicyRequest object from a 201306 message
   *
   * @param request
   * @return CheckPolicyRequestType
   */
  public CheckPolicyRequestType transformPatientDiscoveryNhincToCheckPolicy(
      PatDiscReqEventType event) {
    addDebugLog(
        "Begin -- PatientDiscoveryPolicyTransformHelper.transformPatientDiscoveryNhincToCheckPolicy()");
    CheckPolicyRequestType checkPolicyRequest = null;

    if (event == null) {
      addErrorLog("Request is null.");
      return checkPolicyRequest;
    } else {
      checkPolicyRequest = new CheckPolicyRequestType();
    }

    PRPAIN201306UV02 patDiscReq = event.getPRPAIN201306UV02();
    RequestType request = new RequestType();

    SubjectHelper subjHelp = new SubjectHelper();
    SubjectType subject =
        subjHelp.subjectFactory(event.getSendingHomeCommunity(), event.getAssertion());
    log.debug("transformPatientDiscoveryNhincToCheckPolicy - adding subject");
    request.getSubject().add(subject);

    II qualifiedPatientIdentifier = extractPatientIdentifier(patDiscReq);
    if (qualifiedPatientIdentifier != null) {
      ResourceType resource = new ResourceType();
      AttributeHelper attrHelper = new AttributeHelper();
      resource
          .getAttribute()
          .add(
              attrHelper.attributeFactory(
                  PatientAssigningAuthorityAttributeId,
                  Constants.DataTypeString,
                  qualifiedPatientIdentifier.getRoot()));
      String sStrippedPatientId =
          PatientIdFormatUtil.parsePatientId(qualifiedPatientIdentifier.getExtension());
      log.debug(
          "transformPatientDiscoveryNhincToCheckPolicy: sStrippedPatientId = "
              + sStrippedPatientId);
      resource
          .getAttribute()
          .add(
              attrHelper.attributeFactory(
                  PatientIdAttributeId, Constants.DataTypeString, sStrippedPatientId));

      request.getResource().add(resource);
    }

    log.debug("transformPatientDiscoveryNhincToCheckPolicy - adding assertion data");
    AssertionHelper assertHelp = new AssertionHelper();
    assertHelp.appendAssertionDataToRequest(request, event.getAssertion());

    request.setAction(ActionHelper.actionFactory(ActionInValue));

    checkPolicyRequest.setRequest(request);
    checkPolicyRequest.setAssertion(event.getAssertion());
    addDebugLog(
        "End -- PatientDiscoveryPolicyTransformHelper.transformPatientDiscoveryNhincToCheckPolicy()");
    return checkPolicyRequest;
  }
示例#3
0
 public static void PrintId(II id, String idname) {
   if (idname == null) {
     idname = "";
   }
   if (!(id == null)) {
     log.info(idname + ".id.root=" + id.getRoot() + ";");
     log.info(idname + ".id.extension=" + id.getExtension() + ";");
   } else {
     log.info("id for " + idname + " is null");
   }
 }
  /** Test of BuildMessageFromMpiPatient method, of class HL7Parser201306. */
  @Test
  public void testBuildMessageFromMpiPatient() {
    System.out.println("BuildMessageFromMpiPatient");
    II subjectId = new II();
    subjectId.setRoot("2.16.840.1.113883.3.200");
    subjectId.setExtension("1234");

    String firstExpectedName = "Joe";
    String lastExpectedName = "Smith";
    String middleExpectedName = "Middle";
    String expectedTitle = "Title";
    String expectedSuffix = "Suffix";

    PRPAIN201305UV02 query =
        TestHelper.build201305(
            firstExpectedName, lastExpectedName, "M", "March 1, 1956", subjectId);

    Identifier patId = new Identifier();
    patId.setId("1234");
    patId.setOrganizationId("2.16.840.1.113883.3.200");
    Patient patient =
        TestHelper.createMpiPatient(
            firstExpectedName, lastExpectedName, middleExpectedName, "M", "March 1, 1956", patId);

    patient.getName().setSuffix(expectedSuffix);
    patient.getName().setTitle(expectedTitle);

    PRPAIN201306UV02 result = HL7Parser201306.BuildMessageFromMpiPatient(patient, query);
    // TODO review the generated test code and remove the default call to fail.

    PNExplicit pnResult =
        result
            .getControlActProcess()
            .getSubject()
            .get(0)
            .getRegistrationEvent()
            .getSubject1()
            .getPatient()
            .getPatientPerson()
            .getValue()
            .getName()
            .get(0);

    PatientName patientName = extractName(pnResult);

    assertEquals(lastExpectedName, patientName.LastName);
    assertEquals(firstExpectedName, patientName.FirstName);
    assertEquals(middleExpectedName, patientName.MiddleName);
    assertEquals(expectedTitle, patientName.Title);
    assertEquals(expectedSuffix, patientName.Suffix);
  }
  @Test
  public void testBuildMessageFromMpiPatient_MultiPhoneNumber() {
    System.out.println("testBuildMessageFromMpiPatient_MultiPhoneNumber");
    II subjectId = new II();
    subjectId.setRoot("2.16.840.1.113883.3.200");
    subjectId.setExtension("1234");

    String firstExpectedName = "Joe";
    String lastExpectedName = "Smith";
    String middleExpectedName = "Middle";
    String expectedTitle = "Title";
    String expectedSuffix = "Suffix";

    PRPAIN201305UV02 query =
        TestHelper.build201305(
            firstExpectedName, lastExpectedName, "M", "March 1, 1956", subjectId);

    Identifier patId = new Identifier();
    patId.setId("1234");
    patId.setOrganizationId("2.16.840.1.113883.3.200");
    Patient patient =
        TestHelper.createMpiPatient(
            firstExpectedName, lastExpectedName, middleExpectedName, "M", "March 1, 1956", patId);

    patient.getName().setSuffix(expectedSuffix);
    patient.getName().setTitle(expectedTitle);

    patient.getPhoneNumbers().add(new PhoneNumber("7031231234"));
    patient.getPhoneNumbers().add(new PhoneNumber("2021231234"));

    PRPAIN201306UV02 result = HL7Parser201306.BuildMessageFromMpiPatient(patient, query);
    // TODO review the generated test code and remove the default call to fail.

    PRPAMT201310UV02Person person =
        result
            .getControlActProcess()
            .getSubject()
            .get(0)
            .getRegistrationEvent()
            .getSubject1()
            .getPatient()
            .getPatientPerson()
            .getValue();

    assertEquals(2, person.getTelecom().size());
    assertEquals("7031231234", person.getTelecom().get(0).getValue());
    assertEquals("2021231234", person.getTelecom().get(1).getValue());
  }
  public static Identifiers ExtractPersonIdentifiers(PRPAMT201306UV02ParameterList params) {
    log.debug("Entering HL7Parser201305.ExtractPersonIdentifiers method...");

    Identifiers ids = new Identifiers();
    Identifier id = new Identifier();

    if (params.getLivingSubjectId() != null
        && params.getLivingSubjectId().size() > 0
        && params.getLivingSubjectId().get(0) != null) {
      PRPAMT201306UV02LivingSubjectId livingSubjectId = params.getLivingSubjectId().get(0);

      if (livingSubjectId.getValue() != null
          && livingSubjectId.getValue().size() > 0
          && livingSubjectId.getValue().get(0) != null) {
        II subjectId = livingSubjectId.getValue().get(0);

        if (subjectId.getExtension() != null
            && subjectId.getExtension().length() > 0
            && subjectId.getRoot() != null
            && subjectId.getRoot().length() > 0) {
          id.setId(subjectId.getExtension());
          id.setOrganizationId(subjectId.getRoot());
          log.info(
              "Created id from patient identifier [organization="
                  + id.getOrganizationId()
                  + "][id="
                  + id.getId()
                  + "]");
          ids.add(id);
        } else {
          log.info("message does not contain an id");
        }
      } else {
        log.info("message does not contain an id");
      }
    } else {
      log.info("message does not contain an id");
    }

    log.debug("Exiting HL7Parser201305.ExtractPersonIdentifiers method...");
    return ids;
  }
  @Test
  public void testBuildMessageFromMpiPatient_MultiAddress() {
    System.out.println("testBuildMessageFromMpiPatient_MultiAddress");
    II subjectId = new II();
    subjectId.setRoot("2.16.840.1.113883.3.200");
    subjectId.setExtension("1234");

    String firstExpectedName = "Joe";
    String lastExpectedName = "Smith";
    String middleExpectedName = "Middle";
    String expectedTitle = "Title";
    String expectedSuffix = "Suffix";

    PRPAIN201305UV02 query =
        TestHelper.build201305(
            firstExpectedName, lastExpectedName, "M", "March 1, 1956", subjectId);

    Identifier patId = new Identifier();
    patId.setId("1234");
    patId.setOrganizationId("2.16.840.1.113883.3.200");
    Patient patient =
        TestHelper.createMpiPatient(
            firstExpectedName, lastExpectedName, middleExpectedName, "M", "March 1, 1956", patId);

    patient.getName().setSuffix(expectedSuffix);
    patient.getName().setTitle(expectedTitle);

    Address add = new Address();
    add.setCity("Chantilly");
    add.setState("VA");
    add.setStreet1("5155 Parkstone Drive");
    add.setStreet2("Att:Developer");
    add.setZip("20151");

    Address add2 = new Address();
    add2.setCity("Melbourne");
    add2.setState("FL");
    add2.setStreet1("1025 West NASA Boulevard");
    add2.setStreet2("Att:Developer");
    add2.setZip("32919-0001");

    patient.getAddresses().add(add);
    patient.getAddresses().add(add2);
    PRPAIN201306UV02 result = HL7Parser201306.BuildMessageFromMpiPatient(patient, query);
    // TODO review the generated test code and remove the default call to fail.

    PRPAMT201310UV02Person person =
        result
            .getControlActProcess()
            .getSubject()
            .get(0)
            .getRegistrationEvent()
            .getSubject1()
            .getPatient()
            .getPatientPerson()
            .getValue();

    assertEquals(2, person.getAddr().size());
    assertEquals(5, person.getAddr().get(0).getContent().size());
    assertEquals(5, person.getAddr().get(1).getContent().size());
    // assertEquals("5155 Parkstone Drive", person.getAddr().get(0).getUse().get(0));
    // assertEquals("1025 West NASA Boulevard", person.getAddr().get(1).getUse().get(0));

  }
示例#8
0
 public static II IIFactory(String root, String extension) {
   II ii = new II();
   ii.setExtension(extension);
   ii.setRoot(HomeCommunityMap.formatHomeCommunityId(root));
   return ii;
 }
示例#9
0
 public static II IIFactoryCreateNull(String nullFlavor) {
   II ii = new II();
   ii.getNullFlavor().add(Constants.NullFlavor_NotAvailable);
   return ii;
 }
  private static II extractPatientIdentifier(PRPAIN201305UV02 message) {
    II ii = null;
    String assigningAuthority = null;

    if (message != null
        && message.getControlActProcess() != null
        && NullChecker.isNotNullish(message.getControlActProcess().getAuthorOrPerformer())
        && message.getControlActProcess().getAuthorOrPerformer().get(0) != null
        && message.getControlActProcess().getAuthorOrPerformer().get(0).getAssignedDevice() != null
        && message
                .getControlActProcess()
                .getAuthorOrPerformer()
                .get(0)
                .getAssignedDevice()
                .getValue()
            != null
        && NullChecker.isNotNullish(
            message
                .getControlActProcess()
                .getAuthorOrPerformer()
                .get(0)
                .getAssignedDevice()
                .getValue()
                .getId())
        && message
                .getControlActProcess()
                .getAuthorOrPerformer()
                .get(0)
                .getAssignedDevice()
                .getValue()
                .getId()
                .get(0)
            != null
        && NullChecker.isNotNullish(
            message
                .getControlActProcess()
                .getAuthorOrPerformer()
                .get(0)
                .getAssignedDevice()
                .getValue()
                .getId()
                .get(0)
                .getRoot())) {
      assigningAuthority =
          message
              .getControlActProcess()
              .getAuthorOrPerformer()
              .get(0)
              .getAssignedDevice()
              .getValue()
              .getId()
              .get(0)
              .getRoot();
    }

    if ((message != null)
        && (message.getControlActProcess() != null)
        && (message.getControlActProcess().getQueryByParameter() != null)) {
      JAXBElement<PRPAMT201306UV02QueryByParameter> queryParam =
          message.getControlActProcess().getQueryByParameter();
      PRPAMT201306UV02QueryByParameter queryParam201306 = queryParam.getValue();
      if (queryParam201306.getParameterList() != null
          && queryParam201306.getParameterList().getLivingSubjectId() != null) {
        List<PRPAMT201306UV02LivingSubjectId> livingSubjectIdList =
            queryParam201306.getParameterList().getLivingSubjectId();
        if (NullChecker.isNotNullish(livingSubjectIdList)) {
          for (PRPAMT201306UV02LivingSubjectId livingSubId : livingSubjectIdList) {
            for (II id : livingSubId.getValue()) {
              if (id != null
                  && NullChecker.isNotNullish(id.getExtension())
                  && NullChecker.isNotNullish(id.getRoot())
                  && id.getRoot().equalsIgnoreCase(assigningAuthority)) {
                ii = id;

                // Break out of the inner loop
                break;
              }
            }

            // If the id was found break out of the outer loop
            if (ii != null) {
              break;
            }
          }
        }
      }
    }
    return ii;
  }
  /**
   * Transform method to create a CheckPolicyRequest object from a 201305 request
   *
   * @param request
   * @return CheckPolicyRequestType
   */
  public CheckPolicyRequestType transformPatientDiscoveryEntityToCheckPolicy(
      RespondingGatewayPRPAIN201305UV02RequestType event) {
    addDebugLog(
        "Begin -- PatientDiscoveryPolicyTransformHelper.transformPatientDiscoveryEntityToCheckPolicy()");

    CheckPolicyRequestType checkPolicyRequest = null;

    if (event == null) {
      addErrorLog("Request is null.");
      return checkPolicyRequest;
    } else {
      checkPolicyRequest = new CheckPolicyRequestType();
    }

    PRPAIN201305UV02 patDiscReq = event.getPRPAIN201305UV02();
    // RequestType request = getRequestType(patDiscReq, event.getAssertion());
    RequestType request = new RequestType();

    SubjectHelper subjHelp = new SubjectHelper();
    // SubjectType subject = subjHelp.subjectFactory(event.getAssertion().getHomeCommunity(),
    // event.getAssertion());
    SubjectType subject = new SubjectType();
    subject.setSubjectCategory(SubjectHelper.SubjectCategory);
    log.debug("transformPatientDiscoveryNhincToCheckPolicy - adding subject");
    request.getSubject().add(subject);

    II qualifiedPatientIdentifier = extractPatientIdentifier(patDiscReq);
    if (qualifiedPatientIdentifier != null) {
      ResourceType resource = new ResourceType();
      AttributeHelper attrHelper = new AttributeHelper();
      resource
          .getAttribute()
          .add(
              attrHelper.attributeFactory(
                  PatientAssigningAuthorityAttributeId,
                  Constants.DataTypeString,
                  qualifiedPatientIdentifier.getRoot()));
      String sStrippedPatientId =
          PatientIdFormatUtil.parsePatientId(qualifiedPatientIdentifier.getExtension());
      log.debug(
          "transformPatientDiscoveryNhincToCheckPolicy: sStrippedPatientId = "
              + sStrippedPatientId);
      resource
          .getAttribute()
          .add(
              attrHelper.attributeFactory(
                  PatientIdAttributeId, Constants.DataTypeString, sStrippedPatientId));

      HomeCommunityType homeCommunityId = null;

      if (event != null
          && event.getPRPAIN201305UV02() != null
          && NullChecker.isNotNullish(event.getPRPAIN201305UV02().getReceiver())
          && event.getPRPAIN201305UV02().getReceiver().get(0) != null
          && event.getPRPAIN201305UV02().getReceiver().get(0).getDevice() != null
          && event.getPRPAIN201305UV02().getReceiver().get(0).getDevice().getAsAgent() != null
          && event.getPRPAIN201305UV02().getReceiver().get(0).getDevice().getAsAgent().getValue()
              != null
          && event
                  .getPRPAIN201305UV02()
                  .getReceiver()
                  .get(0)
                  .getDevice()
                  .getAsAgent()
                  .getValue()
                  .getRepresentedOrganization()
              != null
          && event
                  .getPRPAIN201305UV02()
                  .getReceiver()
                  .get(0)
                  .getDevice()
                  .getAsAgent()
                  .getValue()
                  .getRepresentedOrganization()
                  .getValue()
              != null
          && NullChecker.isNotNullish(
              event
                  .getPRPAIN201305UV02()
                  .getReceiver()
                  .get(0)
                  .getDevice()
                  .getAsAgent()
                  .getValue()
                  .getRepresentedOrganization()
                  .getValue()
                  .getId())
          && event
                  .getPRPAIN201305UV02()
                  .getReceiver()
                  .get(0)
                  .getDevice()
                  .getAsAgent()
                  .getValue()
                  .getRepresentedOrganization()
                  .getValue()
                  .getId()
                  .get(0)
              != null
          && NullChecker.isNotNullish(
              event
                  .getPRPAIN201305UV02()
                  .getReceiver()
                  .get(0)
                  .getDevice()
                  .getAsAgent()
                  .getValue()
                  .getRepresentedOrganization()
                  .getValue()
                  .getId()
                  .get(0)
                  .getRoot())) {
        homeCommunityId = new HomeCommunityType();
        homeCommunityId.setHomeCommunityId(
            event
                .getPRPAIN201305UV02()
                .getReceiver()
                .get(0)
                .getDevice()
                .getAsAgent()
                .getValue()
                .getRepresentedOrganization()
                .getValue()
                .getId()
                .get(0)
                .getRoot());
      }
      resource
          .getAttribute()
          .add(
              attrHelper.attributeFactory(
                  Constants.HomeCommunityAttributeId,
                  Constants.DataTypeString,
                  subjHelp.determineSendingHomeCommunityId(homeCommunityId, event.getAssertion())));

      request.getResource().add(resource);
    }

    log.debug("transformPatientDiscoveryNhincToCheckPolicy - adding assertion data");
    AssertionHelper assertHelp = new AssertionHelper();
    assertHelp.appendAssertionDataToRequest(request, event.getAssertion());

    request.setAction(ActionHelper.actionFactory(ActionOutValue));

    checkPolicyRequest.setRequest(request);
    checkPolicyRequest.setAssertion(event.getAssertion());

    addDebugLog(
        "End -- PatientDiscoveryPolicyTransformHelper.transformPatientDiscoveryEntityToCheckPolicy()");
    return checkPolicyRequest;
  }
  @Test
  public void ensureNoDuplicates() {
    II id1 = new II();
    id1.setRoot("1.1");
    id1.setExtension("patientId");
    id1.setAssigningAuthorityName("AA");

    II id2 = new II();
    id2.setRoot("1.1");
    id2.setExtension("patientId");
    id2.setAssigningAuthorityName("AA");

    II[] idArray = new II[2];
    idArray[0] = id1;
    idArray[1] = id2;

    AggregationService service = new AggregationService();
    Set<II> idSet = service.removeDuplicates(java.util.Arrays.asList(idArray));

    assertEquals(1, idSet.size());

    II[] noDupesArray = (II[]) idSet.toArray(new II[0]);
    assertEquals(id1.getAssigningAuthorityName(), noDupesArray[0].getAssigningAuthorityName());
    assertEquals(id1.getExtension(), noDupesArray[0].getExtension());
    assertEquals(id1.getRoot(), noDupesArray[0].getRoot());
    assertEquals(id1.isDisplayable(), noDupesArray[0].isDisplayable());
  }