Esempio n. 1
0
def test__get_pmi__differ(client, faker, mock_pmi_engine):
    expected = PmiData(**faker.pmi_details(1))
    mock_pmi_engine.return_value.__enter__.return_value.execute.return_value.fetchall.side_effect = [
        [faker.pmi_details(1)], [faker.pmi_details(2)], [faker.pmi_details(3)]
    ]

    with pytest.raises(PmiException):
        get_pmi(nhs_number=expected.nhs_number,
                uhl_system_number=expected.uhl_system_number)
Esempio n. 2
0
def test__get_pmi__nhs_found(client, faker, mock_pmi_engine):
    expected = PmiData(**faker.pmi_details(1))
    mock_pmi_engine.return_value.__enter__.return_value.execute.return_value.fetchall.side_effect = [
        [faker.pmi_details(1)], [faker.pmi_details(1)], []
    ]

    actual = get_pmi(nhs_number=expected.nhs_number,
                     uhl_system_number=expected.uhl_system_number)

    assert actual == expected
Esempio n. 3
0
def get_pmi_details(drd):
    current_app.logger.info(f'get_pmi_details (Data request Data={drd.id})')

    try:
        error, v_nhs_number = convert_nhs_number(drd.nhs_number)
        if error is not None:
            drd.messages.append(
                DemographicsRequestDataMessage(
                    type='warning',
                    source='pmi_details',
                    scope='nhs_number',
                    message=error,
                ))

        error, v_s_number = convert_uhl_system_number(drd.uhl_system_number)
        if error is not None:
            drd.messages.append(
                DemographicsRequestDataMessage(
                    type='warning',
                    source='pmi_details',
                    scope='uhl_system_number',
                    message=error,
                ))

        pmi = get_pmi(nhs_number=v_nhs_number, uhl_system_number=v_s_number)

        if pmi is not None:
            pmi_details = DemographicsRequestPmiData(**pmi._asdict())

            pmi_details.demographics_request_data_id = drd.id
            db.session.add(pmi_details)

    except PmiException as e:
        drd.messages.append(
            DemographicsRequestDataMessage(
                type='error',
                source='pmi_details',
                scope='pmi_details',
                message=e.message,
            ))
    except Exception as e:
        log_exception(e)
        drd.messages.append(
            DemographicsRequestDataMessage(
                type='error',
                source='pmi_details',
                scope='pmi_details',
                message=traceback.format_exc(),
            ))