XCPD Client - Integration Testing
XCPD Integration Testing
This page tries to gather all the specification of Integration testing for the XCPD client component, including several aspects such as the description, inputs, results and Status. The tests are located at the following class "eu.epsos.pt.cc.xcpdIT".
Please Note:
These test definitions match the code implementation. The same Id and Test Name is used in method definitions.
Please follow the same convention and remember to reflect the code changes in these tables and vice-versa. For each new test please add a new table and keep it updated.
Generic Integration Test Scenario
An emulation of portal activity, was developed inside Client Connector Integration Test class xcpdIT.
These class contains one test for each test situation, always running the above scenario.
- The portal emulation uses Integration Utilities to sends SOAP requests to Client Connector (CC);
- CC uses XCPD Client module to perform the IHE call to NCP-A;
- NCP-A uses a mock version of the National Connector (NC-IT);
- NC-IT replies with static content it has available for IT purposes.
Initial Information
If the epSOS Identification Service provider does not find a matching patient identifier it SHOULD include a <reasonOf/> element with the response message:
<reasonOf typeCode="RSON"> <detectedIssueEvent classCode="ALRT" moodCode="EVN"> <code code="ActAdministrativeDetectedIssueCode" codeSystem="2.16.840.1.113883.5.4"/> </detectedIssueEvent> </reasonOf>
Tests
normal usage
Test #0
Test Id | PT_CLIENT_XCPD_#0 |
---|---|
Name | testQueryPatient |
Description | This is a simple test, designed uniquely to test the normal worflow of the XCPD Query operation. |
Test Inputs | Valid Patient Identity Traits - an error free request. |
Expected Results | A PatientDemographics List |
Status | PASSED |
Invalid scenarios
Test #1
Test Id | PT_CLIENT_XCPD_#1 |
---|---|
Name | testQueryIdOnly |
Description | The service requestor tried an identification based on an ID only or did not provide enough data to univocally identify the patient. The HCP SHOULD ask the patient for further demographics and re-issue the request. AA (application accept) is returned in Acknowledgement.typeCode (transmission wrapper). OK (data found, no errors) is returned in QueryAck.queryResponseCode (control act wrapper) |
Inputs | Identification based on an ID only or not enough data to univocally identify the patient |
Expects | Error: AdditionalDemographicsRequested |
Status | IMPEDED NCP-A only allows query by id |
Test #2
Test Id | PT_CLIENT_XCPD_#2 |
---|---|
Name | testQueryDemographicsOnly |
Description | The service provider only allows for patient identification by national/shared ID. The HCP SHOULD ask the patient for a national (health care) identification card and reissue the request using Shared/national Patient Identifier Query and Feed mode. AA (application accept) is returned in Acknowledgement.typeCode (transmission wrapper). AE (application error) is returned in QueryAck.queryResponseCode (control act wrapper) |
Inputs | Query only using Patient Demographics |
Expects | Error: DemographicsQueryNotAllowed |
Status | N/A waiting for better definition |
Test #3
Test Id | PT_CLIENT_XCPD_#3 |
---|---|
Name | testQueryEHICardOnly |
Description | Queries based on demographics only are not supported.The service provider only allows for patient identification by national health card or EHIC. The HCP SHOULD ask the patient for a health care identification card and re-issue the request. AA (application accept) is returned in Acknowledgement.typeCode (transmissionwrapper). AE (application error) is returned in QueryAck.queryResponseCode (control act wrapper) |
Inputs | Query without using EHIC Card. |
Expects | Error: EHICDataRequested |
Status | N/A waiting for better definition |
Test #4
Test Id | PT_CLIENT_XCPD_#4 |
---|---|
Name | testQueryPrivateData |
Description | The service provider does not accept the query because responding MAY lead to a disclosure of private patient data. The HCP SHOULD limit the provided traits and re-issue the request. AA (application accept) is returned in Acknowledgement.typeCode (transmission wrapper). AE (application error) is returned in QueryAck.queryResponseCode (control act wrapper) |
Inputs | Private data that may lead to a disclosure. |
Expects | Error: PrivacyViolation |
Status | N/A waiting for better definition |
Test #5
Test Id | PT_CLIENT_XCPD_#5 |
---|---|
Name | testQueryInsRights |
Description | The requestor has insufficient rights to query for patient’s identity data. If access to the patient’s medical data is required at the PoC this MUST be performed by a person with additional permissions. AA (application accept) is returned in Acknowledgement.typeCode (transmission wrapper). AE (application error) is returned in QueryAck.queryResponseCode (control act wrapper) |
Inputs | A request with a requestor with insufficient rights. |
Expects | Error: InsufficientRights |
Status | PASSED |
Test #6
Test Id | PT_CLIENT_XCPD_#6 |
---|---|
Name | testQueryPatientAuthId |
Description | Patient authentication MUST be piggybacked with patient identification. A respective identifier (e.g. GSS TAN) was not provided . The HCP at the PoC SHOULD ask the patient for a respective identifier and SHOULD re-issue the request. AA (application accept) is returned in Acknowledgement.typeCode (transmission wrapper). AE (application error) is returned in QueryAck.queryResponseCode (control act wrapper) |
Inputs | Patient authentication not piggybacked with patient identification. |
Expects | Error: PatientAuthenticationRequired |
Status | N/A waiting for better definition |
Test #7
Test Id | PT_CLIENT_XCPD_#7 |
---|---|
Name | testQueryMinAccur |
Description | The service provider did not find a match with the given minimum accuracy. The service consumer SHOULD re-issue the request with a lower minimum confidence level. AA (application accept) is returned in Acknowledgement.typeCode (transmission wrapper). OK (data found) is returned in QueryAck.queryResponseCode (control act wrapper) |
Inputs | A request with high level of confidence. |
Expects | Error: AnswerNotAvailable |
Status | PASSED |
Test #8
Test Id | PT_CLIENT_XCPD_#8 |
---|---|
Name | testQueryInvalidTraits |
Description | The identity traits provided by the service consumer are not supported by the service provider. The service consumer SHOULD re-issue the request with a different set of identity traits. AA (application accept) is returned in Acknowledgement.typeCode (transmission wrapper). AE (application error) is returned in QueryAck.queryResponseCode (control act wrapper) |
Inputs | A request with unsupported identity traits. |
Expects | Error: AnswerNotAvailable |
Status | PASSED |
Test #9
Test Id | PT_CLIENT_XCPD_#9 |
---|---|
Name | testQueryConfConflict |
Description | The service consumer defined a confidence level that conflicts with the security policy of the service provider. The service provider SHOULD respond only with the candidate matches that it is allowed to provide wrt. its security policy. AA (application accept) is returned in Acknowledgement.typeCode (transmission wrapper). AE (application error) is returned in QueryAck.queryResponseCode (control act wrapper) |
Inputs | A request with a confidence level that conflicts with the security policy of the service provider. |
Expects | Error: PolicyViolation |
Status | N/A waiting for better definition |
Usage restrictions
Test #10
Test Id | PT_CLIENT_XCPD_#10 |
---|---|
Name | testBadLivingSubjectID |
Description | Asserts that a NOT well formulated <LivingSubjectID> results in a NOT valid response. |
Inputs | A patient Identification missing extension. |
Expects | Error: AnswerNotAvailable |
Status | PASSED |
Test #10.1
Test Id | PT_CLIENT_XCPD_#10.1 |
---|---|
Name | testGoodLivingSubjectID |
Description | Asserts that a well formulated <LivingSubjectID> results in a valid response. |
Inputs | A patient identification composed by root + extension. This id must be found. |
Expects | A PatientDemographics List |
Status | PASSED |
Test #11
Test Id | PT_CLIENT_XCPD_#11 |
---|---|
Name | testBadLivingSubjectName |
Description | Asserts that a NOT well formulated <LivingSubjectName> results in a NOT valid response. |
Inputs | A LivingSubjectName containing patient's given name but missing family name. |
Expects | Error: AnswerNotAvailable |
Status | IMPEDED NCP-A only allows query by id |
Test #11.1
Test Id | PT_CLIENT_XCPD_#11.1 |
---|---|
Name | testGoodLivingSubjectName |
Description | Asserts that a well formulated <LivingSubjectName> results in a valid response. |
Inputs | A LivingSubjectName containing patient's given name and family name. |
Expects | A PatientDemographics List |
Status | IMPEDED NCP-A only allows query by id |
Test #12
Test Id | PT_CLIENT_XCPD_#12 |
---|---|
Name | testBadLivingSubjectBirthTime |
Description | Asserts that a NOT well formulated <LivingSubjectBirthTime> results in a NOT valid response. |
Inputs | A LivingSubjectBirthTime containing a malformed birthdate element. |
Expects | Error: AnswerNotAvailable |
Status | IMPEDED NCP-A only allows query by id |
Test #12.1
Test Id | PT_CLIENT_XCPD_#12.1 |
---|---|
Name | testGoodLivingSubjectBirthTime |
Description | Asserts that a well formulated <LivingSubjectBirthTime> results in a valid response. |
Inputs | A LivingSubjectBirthTime element containing a well formed birthdate element. |
Expects | A PatientDemographics List |
Status | IMPEDED NCP-A only allows query by id |
Test #13
Test Id | PT_CLIENT_XCPD_#13 |
---|---|
Name | testBadLivingSubjectGender |
Description | Asserts that a NOT well formulated <LivingSubjectGender> results in a NOT valid response. |
Inputs | A LivingSubjectGender containing a malformed gender code. |
Expects | Error: AnswerNotAvailable |
Status | IMPEDED NCP-A only allows query by id |
Test #13.1
Test Id | PT_CLIENT_XCPD_#13.1 |
---|---|
Name | testGoodLivingSubjectGender |
Description | Asserts that a well formulated <LivingSubjectGender> results in a valid response. |
Inputs | A LivingSubjectGender containing a valid gender code. |
Expects | A PatientDemographics List |
Status | IMPEDED NCP-A only allows query by id |
Test #14
Test Id | PT_CLIENT_XCPD_#14 |
---|---|
Name | testBadLivingSubjectBirthPlaceAddress |
Description | Asserts that a NOT well formulated <LivingSubjectBirthPlaceAddress> results in a NOT valid response. |
Inputs | A LivingSubjectBirthPlaceAddress element containing only country or city, not both. |
Expects | Error: AnswerNotAvailable |
Status | IMPEDED NCP-A only allows query by id |
Test #14.1
Test Id | PT_CLIENT_XCPD_#14.1 |
---|---|
Name | testGoodLivingSubjectBirthPlaceAddress |
Description | Asserts that a well formulated <LivingSubjectBirthPlaceAddress> results in a valid response. |
Inputs | A LivingSubjectBirthPlaceAddress containing country and city elements. |
Expects | A PatientDemographics element |
Status | IMPEDED NCP-A only allows query by id |
Test #15
Test Id | PT_CLIENT_XCPD_#15 |
---|---|
Name | testBadPatientAddress |
Description | Asserts that a NOT well formulated <PatientAddress> results in a NOT valid response. |
Inputs | A BadpatientAddress containing only country or city but not both. |
Expects | Error: AnswerNotAvailable |
Status | IMPEDED NCP-A only allows query by id |
Test #15.1
Test Id | PT_CLIENT_XCPD_#15.1 |
---|---|
Name | testGoodPatientAddress |
Description | Asserts that a well formulated <PatientAddress> results in a valid response. |
Inputs | A PatientAddress containing country and city elements. |
Expects | N/A |
Status | IMPEDED NCP-A only allows query by id |
Test #16
Test Id | PT_CLIENT_XCPD_#16 |
---|---|
Name | TestInvalidField |
Description | Asserts that a well and full formulated request results in a valid response. |
Inputs | A PatientDemographics element with all the elements testes on tests 10-15 |
Expects | A PatientDemographics List |
Status | IMPEDED NCP-A only allows query by id |
Template
Test #X
Test Id | PT_CLIENT_XCPD_#X |
---|---|
Name | testXXXX |
Description | Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam fermentum vestibulum est. Cras rhoncus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. |
Inputs | Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam fermentum vestibulum est. Cras rhoncus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. |
Expects | N/A |
Status | N/A |