Search in sources :

Example 1 with FindCandidatesResponse

use of ca.bc.gov.hlth.hnweb.model.v3.FindCandidatesResponse in project moh-hnweb by bcgov.

the class HL7SerializerTest method test_findCandidate.

@Test
public void test_findCandidate() throws Exception {
    HL7Config hl7Config = new HL7Config();
    HL7Serializer hl7 = new HL7Serializer(hl7Config);
    MessageMetaData mmd = new MessageMetaData("testId");
    mmd.setDataEntererExt("train96");
    mmd.setOrganization("HOOPC");
    mmd.setSourceSystemOverride("BCHCIM");
    FindCandidatesRequest getDemoQuery = new FindCandidatesRequest();
    getDemoQuery.setSurname("Purple");
    getDemoQuery.setFirstGivenName("Barney");
    getDemoQuery.setBirthDate("19400101");
    Object request = hl7.toXml(getDemoQuery, mmd);
    assertNotNull(request);
    FindCandidatesResponse demographicsResponse = hl7.fromXml(TestUtil.convertXMLFileToString(path1), FindCandidatesResponse.class);
    assertEquals("9999999999", demographicsResponse.getResults().get(0).getPerson().getPhn());
    assertEquals(3, demographicsResponse.getResultCount());
}
Also used : MessageMetaData(ca.bc.gov.hlth.hnweb.model.v3.MessageMetaData) FindCandidatesRequest(ca.bc.gov.hlth.hnweb.model.v3.FindCandidatesRequest) FindCandidatesResponse(ca.bc.gov.hlth.hnweb.model.v3.FindCandidatesResponse) Test(org.junit.jupiter.api.Test)

Example 2 with FindCandidatesResponse

use of ca.bc.gov.hlth.hnweb.model.v3.FindCandidatesResponse in project moh-hnweb by bcgov.

the class FindCandidatesConverter method buildNameSearch.

private List<NameSearchResult> buildNameSearch(FindCandidatesResponse findCandidatesResponse) {
    List<NameSearchResult> nameSearchList = new ArrayList<NameSearchResult>();
    List<FindCandidatesResult> candidatesResult = findCandidatesResponse.getResults();
    if (CollectionUtils.isEmpty(candidatesResult)) {
        return nameSearchList;
    }
    candidatesResult.forEach(ns -> {
        NameSearchResult nameSearchResult = new NameSearchResult();
        nameSearchResult.setPhn(ns.getPerson().getPhn());
        nameSearchResult.setIdentifierTypeCode(IDENTIFIER_TYPE_CODE);
        nameSearchResult.setAssigningAuthority(ASSIGNING_AUTHORITY);
        Name nameObj = ns.getPerson().getDeclaredName();
        if (nameObj == null) {
            nameObj = ns.getPerson().getDocumentedName();
        }
        nameSearchResult.setGender(ns.getPerson().getGender());
        nameSearchResult.setGivenName(nameObj.getFirstGivenName());
        nameSearchResult.setSecondName(Optional.ofNullable(nameObj.getSecondGivenName()).orElse(""));
        nameSearchResult.setSurname(nameObj.getSurname());
        nameSearchResult.setNameTypeCode(nameObj.getType());
        String birthDate = V3MessageUtil.convertDateToString(ns.getPerson().getBirthDate());
        nameSearchResult.setDateOfBirth(birthDate);
        Address address = ns.getPerson().getPhysicalAddress();
        if (address != null) {
            nameSearchResult.setAddress1(ns.getPerson().getPhysicalAddress().getAddressLine1());
            nameSearchResult.setAddress2(ns.getPerson().getPhysicalAddress().getAddressLine2());
            nameSearchResult.setAddress3(ns.getPerson().getPhysicalAddress().getAddressLine3());
            nameSearchResult.setCity(ns.getPerson().getPhysicalAddress().getCity());
            nameSearchResult.setProvince(ns.getPerson().getPhysicalAddress().getProvince());
            nameSearchResult.setPostalCode(ns.getPerson().getPhysicalAddress().getPostalCode());
        }
        Address mailingAddress = ns.getPerson().getMailingAddress();
        if (mailingAddress != null) {
            nameSearchResult.setAddress1(ns.getPerson().getMailingAddress().getAddressLine1());
            nameSearchResult.setAddress2(ns.getPerson().getMailingAddress().getAddressLine2());
            nameSearchResult.setAddress3(ns.getPerson().getMailingAddress().getAddressLine3());
            nameSearchResult.setCity(ns.getPerson().getMailingAddress().getCity());
            nameSearchResult.setProvince(ns.getPerson().getMailingAddress().getProvince());
            nameSearchResult.setPostalCode(ns.getPerson().getMailingAddress().getPostalCode());
        }
        nameSearchResult.setScore(ns.getScore());
        nameSearchList.add(nameSearchResult);
    });
    return nameSearchList;
}
Also used : FindCandidatesResult(ca.bc.gov.hlth.hnweb.model.v3.FindCandidatesResult) NameSearchResult(ca.bc.gov.hlth.hnweb.model.rest.enrollment.NameSearchResult) Address(ca.bc.gov.hlth.hnweb.model.v3.Address) ArrayList(java.util.ArrayList) Name(ca.bc.gov.hlth.hnweb.model.v3.Name)

Example 3 with FindCandidatesResponse

use of ca.bc.gov.hlth.hnweb.model.v3.FindCandidatesResponse in project moh-hnweb by bcgov.

the class EnrollmentController method getNameSearch.

@PostMapping("/name-search")
public ResponseEntity<NameSearchResponse> getNameSearch(@Valid @RequestBody NameSearchRequest nameSearchRequest, HttpServletRequest request) {
    logger.info("Name Search request: {} ", nameSearchRequest.getGivenName());
    Transaction transaction = transactionStart(request, TransactionType.NAME_SEARCH);
    try {
        FindCandidatesConverter converter = new FindCandidatesConverter();
        FindCandidatesRequest findCandidatesRequest = converter.convertRequest(nameSearchRequest);
        FindCandidatesResponse findCandidatesResponse = enrollmentService.findCandidates(findCandidatesRequest, transaction);
        NameSearchResponse nameSearchResponse = converter.convertResponse(findCandidatesResponse);
        ResponseEntity<NameSearchResponse> responseEntity = ResponseEntity.ok(nameSearchResponse);
        auditGetNameSearchComplete(transaction, nameSearchResponse);
        return responseEntity;
    } catch (Exception e) {
        handleException(transaction, e);
        return null;
    }
}
Also used : Transaction(ca.bc.gov.hlth.hnweb.persistence.entity.Transaction) NameSearchResponse(ca.bc.gov.hlth.hnweb.model.rest.enrollment.NameSearchResponse) FindCandidatesRequest(ca.bc.gov.hlth.hnweb.model.v3.FindCandidatesRequest) FindCandidatesResponse(ca.bc.gov.hlth.hnweb.model.v3.FindCandidatesResponse) FindCandidatesConverter(ca.bc.gov.hlth.hnweb.converter.hl7v3.FindCandidatesConverter) PostMapping(org.springframework.web.bind.annotation.PostMapping)

Example 4 with FindCandidatesResponse

use of ca.bc.gov.hlth.hnweb.model.v3.FindCandidatesResponse in project moh-hnweb by bcgov.

the class EnrollmentService method findCandidates.

/**
 * Finds the candidates details by sending a V3 message to external endpoint.
 * Calls HL7Serializer api to serialize and deserialize request/response
 * @param findCandidatesRequest
 * @param transaction
 * @return
 * @throws HNWebException
 */
public FindCandidatesResponse findCandidates(FindCandidatesRequest findCandidatesRequest, Transaction transaction) throws HNWebException {
    HL7Serializer hl7Serializer = new HL7Serializer(new HL7Config());
    UserInfo userInfo = SecurityUtil.loadUserInfo();
    MessageMetaData mmd = new MessageMetaData(userInfo.getUsername(), SOURCE_SYSTEM_OVERRIDE, ORGANIZATION, transaction.getTransactionId().toString());
    // Serialize request object
    Object formattedRequest = hl7Serializer.toXml(findCandidatesRequest, mmd);
    // Create soap wrapper
    String xmlString = V3MessageUtil.wrap(formattedRequest.toString());
    logger.debug("Get Name Search wrapped xml request[{}]", xmlString);
    messageSent(transaction, mmd.getMessageIdExt());
    ResponseEntity<String> response = postHcimRequest(xmlString, transaction.getTransactionId().toString());
    logger.debug("Response Status: {} ; Message:\n{}", response.getStatusCode(), response.getBody());
    if (response.getStatusCode() != HttpStatus.OK) {
        logger.error("Could not connect to downstream service. Service returned {}", response.getStatusCode());
        throw new HNWebException(ExceptionType.DOWNSTREAM_FAILURE);
    }
    // De-Serialize findCandidate response
    FindCandidatesResponse findCandidatesResponse = hl7Serializer.fromXml(response.getBody(), FindCandidatesResponse.class);
    messageReceived(transaction, findCandidatesResponse.getMessageIdExtension());
    return findCandidatesResponse;
}
Also used : MessageMetaData(ca.bc.gov.hlth.hnweb.model.v3.MessageMetaData) HL7Serializer(ca.bc.gov.hlth.hnweb.serialization.HL7Serializer) HNWebException(ca.bc.gov.hlth.hnweb.exception.HNWebException) HL7Config(ca.bc.gov.hlth.hnweb.serialization.HL7Config) UserInfo(ca.bc.gov.hlth.hnweb.security.UserInfo) FindCandidatesResponse(ca.bc.gov.hlth.hnweb.model.v3.FindCandidatesResponse)

Aggregations

FindCandidatesResponse (ca.bc.gov.hlth.hnweb.model.v3.FindCandidatesResponse)3 FindCandidatesRequest (ca.bc.gov.hlth.hnweb.model.v3.FindCandidatesRequest)2 MessageMetaData (ca.bc.gov.hlth.hnweb.model.v3.MessageMetaData)2 FindCandidatesConverter (ca.bc.gov.hlth.hnweb.converter.hl7v3.FindCandidatesConverter)1 HNWebException (ca.bc.gov.hlth.hnweb.exception.HNWebException)1 NameSearchResponse (ca.bc.gov.hlth.hnweb.model.rest.enrollment.NameSearchResponse)1 NameSearchResult (ca.bc.gov.hlth.hnweb.model.rest.enrollment.NameSearchResult)1 Address (ca.bc.gov.hlth.hnweb.model.v3.Address)1 FindCandidatesResult (ca.bc.gov.hlth.hnweb.model.v3.FindCandidatesResult)1 Name (ca.bc.gov.hlth.hnweb.model.v3.Name)1 Transaction (ca.bc.gov.hlth.hnweb.persistence.entity.Transaction)1 UserInfo (ca.bc.gov.hlth.hnweb.security.UserInfo)1 HL7Config (ca.bc.gov.hlth.hnweb.serialization.HL7Config)1 HL7Serializer (ca.bc.gov.hlth.hnweb.serialization.HL7Serializer)1 ArrayList (java.util.ArrayList)1 Test (org.junit.jupiter.api.Test)1 PostMapping (org.springframework.web.bind.annotation.PostMapping)1