Skip to content
This repository has been archived by the owner on Jul 11, 2024. It is now read-only.

sdhealthconnect/leap-ces-java-clients

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LEAP Consent Enforcement Service-Java Client

This library is a Java client for the LEAP Consent Decision Service.

Use

CDS Hooks Client

The CDS Hook Client can be instantiated by giving the host name where the Consent Decision Service resides:

import gov.hhs.onc.leap.ces.common.clients.card.ConsentConsultCardClient;

ConsentConsultCardClient client = new ConsentConsultCardClient(host);

The getConsentDecision() method can be called to get a consent decision from the Consent Decision Service. This method can take either be a JSON string containing the request or a PatientConsentConsultHookRequest which encodes the request as a POJO and returns a PatientConsentConsultHookResponse object.

To see an example of how to construct a PatientConsentConsultHookRequest see the following example (from this test).

PatientId patient =
    new PatientId()
        .setSystem("http://hl7.org/fhir/sid/us-ssn")
        .setValue("111111111");

Actor actor = 
    new Actor()
        .setSystem("urn:ietf:rfc:3986")
        .setValue("2.16.840.1.113883.20.5");

ContentClass contentClass = 
    new ContentClass()
        .setSystem("http://hl7.org/fhir/resource-types")
        .setValue("AllergyIntolerance");

Context context =
    new Context()
        .setPatientId(Arrays.asList(patient))
        .setPurposeOfUse(PurposeOfUse.TREAT)
        .setScope(Context.Scope.PATIENT_PRIVACY)
        .setActor(Arrays.asList(actor))
        .setContentClass(Arrays.asList(contentClass));

PatientConsentConsultHookRequest request =
    new PatientConsentConsultHookRequest()
        .setContext(context)
        .setHook("patient-consent-consult")
        .setHookInstance("123456");

PatientConsentConsultHookResponse res = client.getConsentDecision(request);

Note that for convenience, purpose of use is defined as an enum with the following values: HMARKT, HOPERAT, HPAYMT, HRESCH, PATRQT, TREAT, ETREAT, and PUBHLTH.

To see an example of the JSON string for the CDS Hooks request check out the LEAP CDS documentation.

XACML Client

The XACML Client can be instantiated by giving the host name where the Consent Decision Service resides:

import gov.hhs.onc.leap.ces.common.clients.xacml.ConsentConsultXacmlClient;

ConsentConsultXacmlClient client = new ConsentConsultXacmlClient(host);

The getConsentDecision() method can be called to get a consent decision from the Consent Decision Service. This method can take either be a JSON string containing the request or a XacmlRequest which encodes the request as a POJO and returns a XacmlResponse object.

To see an example of how to construct an XacmlRequest see this test. A simpler way to construct an XACML request is to use the toXacmlRequest() method of the generic request class CESRequest which provides a simpler interface to construct a request:

CESRequest request =
    new CESRequest()
        .setScope("patient-privacy")
        .setPurposeOfUse("TREAT")
        .setPatientId(
            Arrays.asList(
                new CESRequest.SystemValuePair("http://hl7.org/fhir/sid/us-ssn", "111111111")))
        .setActor(
            Arrays.asList(
                new CESRequest.SystemValuePair("urn:ietf:rfc:3986", "2.16.840.1.113883.20.5")))
        .setContentClass(
              Arrays.asList(
                  new CESRequest.SystemValuePair("http://hl7.org/fhir/resource-types", "AllergyIntolerance")));

XacmlResponse xacmlResponse = client.getConsentDecision(request.toXacmlRequest());

To see an example of the JSON string for the XACML request check out the LEAP CDS documentation.

Setup

Build

You can build the project using maven:

mvn clean install

Test

You can run the tests using maven:

mvn test

About

LEAP Consent Enforcement Service - Java Client

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •  

Languages