This wiki has undergone a migration to Confluence found Here
<meta name="googlebot" content="noindex">

201705 Provider Directories and Scheduling

From HL7Wiki
Revision as of 21:57, 12 April 2017 by Richard ettema (talk | contribs) (Updates to Directory Search test cases and links to FHIR specification)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Return to May 2017 Proposals

Background for Service Provider Directory

If considering implementing more than a simple client, extensive pre-connectathon work is recommended.

Specification Page(s):

Organization
Location
Practitioner
HealthcareService

And we are seeking some feeback on the new Directory Support resources:

PractitionerRole
Endpoint

Background For Scheduling

If creating a client application, this track should require minimal work in advance of the connectathon, though at least a bit of playing is recommended. If creating a server, advanced preparation will be required, but this scenario should somewhat limit the effort involved.

Specification Page(s):

Appointment
AppointmentResponse
Schedule
Slot
Encounter

The introduction section on the "usual" workflow can be found here: http://hl7.org/fhir/STU3/appointment.html#basic-workflow

If you're trying to work out what statuses mean, and what would be expected, there is a summary at the bottom of that same page including a collection of examples http://hl7.org/fhir/STU3/appointment.html#typical which tie together the 4 resources...

Submitting WG/Project/Implementer Group

Patient Administration/Implementer Communities

Justification

A key challenge of healthcare is knowing about the resources available in the local, regional, and global healthcare networks. When a patient's care is transitioned from one setting to another, it's critical to know about the doctors, hospitals and clinics available to receive that patient. When a patient is travelling, it improves care when local healthcare facilities can retrieve the patient's up to date medical history from a primary care provider. There are currently no widely adopted standards for exchanging this directory information. Currently, healthcare organizations use a variety of labor intensive processes to gather, normalize, de-duplicate and consume this data. They share custom flat files, scrape web pages, or pay 3rd parties to curate their practitioner data. Organizational data is often isolated in different networks and aren't easily shared.

This track will test how FHIR can be used to standardize the exchange of services/provider directory data. Defining how healthcare organizations can participate in a federated healthcare directory will promote interoperability and innovation. (And hopefully review the Provider Directory created by MiHN, and some mappings on the IHE HPD profile into FHIR)

This track will also lead into the creation of Appointments based on schedules found associated with the above services/providers, and also verify the workflow of proceeding from a booked appointment into the creation of the Encounter.

Proposed Track Lead

Coordinator: Brian Postlethwaite(sgtshultzpos) See Connectathon_Track_Lead_Responsibilities

Report

Sep 2016 Baltimore Connectathon Report

Expected participants

  • Telstra Health (HealthConnex)
  • SureScripts
  • Epic
  • Sequoia
  • Touchstone (AEGIS)

Roles

Service Provider Directory Server

A Server that has Service/Provider directory data in it (with associated schedule information)

Provider Consumer application

An application that should be used by a provider to search for information to support creating a referral, and can book an appointment on a client's behalf

Requester

A client that creates appointments (as either booked resources, or requests which need a placer to fill)

Placer

A placer is a client (or server) that processes appointment requests and allocates either participants, or times to these requests.

Scenarios For Service Provider Directory

1 Directory Search - Provider, Location, Organization

1.1 PractitionerRole Search - Locate telecom

Action: Perform a search for the Provider Directory related resource PractitionerRole to locate valid telecom value(s). The search criteria include practitioner.identifier, practitioner.name, practitioner.family, practitioner.given and specialty.
Precondition: The Directory FHIR Resources PractitionerRole and Practitioner exist on a FHIR server to query. The FHIR server supports chained searched criteria.
Success Criteria: The desired resources were found with valid telecom and location values. The FHIR RESTful API interactions are conformant to the specification.
Bonus point: Use paging to limit the number of search results returned.
Example Searches
  • GET [base]/PractitionerRole?practitioner.identifier=[system]|[code]
  • http://fhirtest.uhn.ca/baseDstu3/PractitionerRole?practitioner.identifier=http://hl7.org.fhir/sid/us-npi|9941339108
  • GET [base]/PractitionerRole?practitioner.family=[string]&practitioner.given=[string]
  • http://api.sandboxcernerdirect.com/hpd-service/api2/PractitionerRole?practitioner.given=greg&practitioner.family=stella
  • GET [base]/PractitionerRole?specialty=[system]|[code]
  • GET http://fhirtest.uhn.ca/baseDstu3/PractitionerRole?specialty=207RS0010X
Bonus Example Searches
  • GET [base]/PractitionerRole?specialty=[system]|[code]&_count=5
  • http://wildfhir.aegis.net/fhir3-0-0/PractitionerRole?specialty=207RS0010X&_count=5

1.2 PractitionerRole Search - Locate Direct address

Action: Perform a search for the Provider Directory related resource PractitionerRole to locate valid Endpoint Direct address value(s). The search criteria include practitioner.name.
Precondition: The Directory FHIR Resources PractitionerRole and Practitioner exist on a FHIR server to query. The FHIR server supports chained searched criteria and included search resources.
Success Criteria: The desired resources were found with valid Endpoint Direct address values either as contained resource(s) or included in the search results. The FHIR RESTful API interactions are conformant to the specification.
Bonus point: The search criteria use several restrictions, possibly specialty or location.
Bonus point: Use paging to limit the number of search results returned.
Example Searches
  • GET [base]/PractitionerRole?practitioner.name=[name]&_include=PractitionerRole:endpoint
  • http://fhirtest.uhn.ca/baseDstu3/PractitionerRole?practitioner.name=stella&_include=Practitioner:endpoint
Bonus Example Searches
  • GET [base]/PractitionerRole?location=[reference]&_include=PractitionerRole:endpoint
  • http://api.sandboxcernerdirect.com/hpd-service/api2/PractitionerRole?location=Location/hl7east&_include=Practitioner:endpoint
  • GET [base]/PractitionerRole?specialty=[system]|[code]&_include=PractitionerRole:endpoint
  • GET http://fhirtest.uhn.ca/baseDstu3/PractitionerRole?specialty=207RS0010X&_include=PractitionerRole:endpoint
  • GET [base]/PractitionerRole?practitioner.name=[name]&_include=PractitionerRole:endpoint&_count=5
  • http://fhirtest.uhn.ca/baseDstu3/PractitionerRole?practitioner.name=stella&_include=Practitioner:endpoint&_count=5

1.3 Organization Search - Locate endpoint

Action: Perform a search for the Provider Directory related resource Organization to locate valid Endpoint(s). The search criteria include identifier and name.
Precondition: The Directory FHIR Resources Organization and Endpoint exist on a FHIR server to query. The FHIR server supports included search resources.
Success Criteria: The desired resources were found with valid referenced Endpoint(s) either as contained resource(s) or included in the search results. The FHIR RESTful API interactions are conformant to the specification.
Bonus point: The search criteria use a location restriction.
Bonus point: Use paging to limit the number of search results returned.
Example Searches
  • GET [base]/Organization?identifier=[system]|[code]&_include=Organization:endpoint
  • http://fhirtest.uhn.ca/baseDstu3/Organization?identifier=[system]|[code]&_include=Organization:endpoint
  • GET [base]/Organization?name=[string]&_include=Organization:endpoint
  • http://api.sandboxcernerdirect.com/hpd-service/api2/Organization?name=[string]&_include=Organization:endpoint
Bonus Example Searches
  • GET [base]/Organization?location=[reference]&_include=Organization:endpoint
  • http://fhirtest.uhn.ca/baseDstu3/Organization?location=Location/hl7east&_include=Organization:endpoint
  • GET [base]/Organization?identifier=[system]|[code]&_include=Organization:endpoint&_count=5
  • http://fhirtest.uhn.ca/baseDstu3/Organization?identifier=[system]|[code]&_include=Organization:endpoint&_count=5

1.4 Location Search - Locate telecom

Action: Perform a search for the Provider Directory related resource Location to locate valid telecom value(s). The search criteria include address and name.
Precondition: The Directory FHIR Resource Location exists on a FHIR server to query.
Success Criteria: The desired resources were found with valid telecom value(s). The FHIR RESTful API interactions are conformant to the specification.
Bonus point: Use paging to limit the number of search results returned.
Example Searches
  • GET [base]/Location?name=[string]
  • https://fhirtest.uhn.ca/baseDstu3/Location?name=EHS
  • GET [base]/Location?address=[string]
  • http://wildfhir.aegis.net/fhir3-0-0/Location?address=Ann Arbor
Bonus Example Searches
  • GET [base]/Location?name=[string]&_count=5
  • https://fhirtest.uhn.ca/baseDstu3/Location?name=EHS&_count=5

1.5 Location Search - Locate endpoint

Action: Perform a search for the Provider Directory related resource Location to locate valid Endpoint(s). The search criteria include address and name.
Precondition: The Directory FHIR Resources Location and Endpoint exist on a FHIR server to query. The FHIR server supports included search resources.
Success Criteria: The desired resources were found with valid referenced Endpoint(s) either as contained resource(s) or included in the search results. The FHIR RESTful API interactions are conformant to the specification.
Bonus point: The search criteria use an organization restriction.
Bonus point: Use paging to limit the number of search results returned.
Example Searches
  • GET [base]/Location?name=[string]&_include=Location:endpoint
  • http://fhirtest.uhn.ca/baseDstu3/Location?name=[string]&_include=Location:endpoint
  • GET [base]/Location?address=[string]&_include=Organization:endpoint
  • http://api.sandboxcernerdirect.com/hpd-service/api2/Location?address=[string]&_include=Location:endpoint
Bonus Example Searches
  • GET [base]/Location?organization=[reference]&_include=Location:endpoint
  • http://fhirtest.uhn.ca/baseDstu3/Location?organization=Organization/393872&_include=Location:endpoint
  • GET [base]/Location?name=[string]&_include=Location:endpoint&_count=5
  • http://fhirtest.uhn.ca/baseDstu3/Location?name=[string]&_include=Location:endpoint&_count=5

1.6 Organizational Relationships Search - PractitionerRole by Organization

Action: Perform a search for the Provider Directory related resource PractitionerRole within a specific Organization to locate valid Endpoint Direct address value(s). The search criteria include organization, organization.address and organization.name.
Precondition: The Directory FHIR Resources PractitionerRole, Organization and Endpoint exist on a FHIR server to query. The FHIR server supports chained searched criteria and included search resources.
Success Criteria: The desired resources were found with valid Endpoint Direct address value(s) either as contained resource(s) or included in the search results. The FHIR RESTful API interactions are conformant to the specification.
Bonus point: Use paging to limit the number of search results returned.
Example Searches
  • GET [base]/PractitionerRole?organization=[reference]&_include=PractitionerRole:endpoint
  • http://fhirtest.uhn.ca/baseDstu3/PractitionerRole?organization=Organization/hl7-east&_include=PractitionerRole:endpoint
  • GET [base]/PractitionerRole?organization.name=[name]&_include=PractitionerRole:endpoint
  • http://fhirtest.uhn.ca/baseDstu3/PractitionerRole?organization.name=hl7&_include=PractitionerRole:endpoint
  • GET [base]/PractitionerRole?organization.address=[string]&_include=PractitionerRole:endpoint
  • http://fhirtest.uhn.ca/baseDstu3/PractitionerRole?organization.address=hudson&_include=PractitionerRole:endpoint
Bonus Example Searches
  • GET [base]/PractitionerRole?organization.name=[name]&_include=PractitionerRole:endpoint&_count=5
  • http://fhirtest.uhn.ca/baseDstu3/PractitionerRole?organization.name=hl7&_include=PractitionerRole:endpoint&_count=5

Scenarios For Scheduling

2 Check Availability

Action: Now that we have been able to search for a resource, check for an endpoint that references a location for schedule/slot information
Precondition: The Organization/Location/Practitioner or HealthcareService has an endpoint defined to a FHIR server where a Schedule/Slot can be queried
Success Criteria: The list of slots available for this connectathon weekend (or the week of the WGM) could be located
Bonus point: Were able to locate a slot that was not available


3 Create Appointment

Action: Create an appointment resource and store on a server (Requester)

This appointment should have a status of proposed or pending, and participant statuses of needs-action

Precondition: None
Success Criteria: Appointment passes validation against the Appointment schema and schematron, and has these statuses set
Bonus point: Define an Appointment with multiple participants
Bonus point: Define an appointment with a Location
Bonus point: Define an Appointment with varied Participant statuses
Bonus point: Define an Appointment against multiple slots


4 Check Schedule

Test the ability to interrogate a schedule to book an appointment

Action: Query a server for a schedule/slots
Action: Create an appointment against one of the slots returned
Action: Update Slot to mark Status
Precondition: A Server must have a some schedule and slot resources available to search
Success Criteria: The server is able to indicate that the client searched for the content, and created an appointment against one of the slots.
Bonus point: The slot was marked as booked


5 Process Appointment (Response)

Action: Server recieves an AppointmentResponse resource, and updates the Appointment with details of the participants answer
Precondition: an appointment existed with a participant status of needs-action
Success Criteria: only the participant defined in the appointmentresponse has its status updated as per the response
Bonus point: If all participants in the appointment are now accepted and the appointment was in pending or proposed then the appointment status can be changed to booked.


6 Cancel Appointment

Action: Mark an appointment with a cancelled status
Precondition: an appointment was present on the server with a booked status
Success Criteria: The history of the appointment will show that it had a booked status, then was changed to a cancelled status
Bonus point: server reject a status change to cancelled if an encounter was created - (if business rules justify this)

7 Create Encounter

Action: Create an encounter to represent when a patient arrived at the facility for an appointment created earlier
Precondition: An appointment existed that was ready to be turned into an encounter
Success Criteria: An encounter can be found on the server and can be retrieved through searching on the encounter's appointment search parameter
Bonus point: Can show a history for the encounter and move it through some of the various states

TestScript(s)

TestScripts and corresponding fixtures have been committed to the FHIR SVN repository at: http://gforge.hl7.org/svn/fhir/trunk/connectathons/MadridMay2017/Connectathon15/ProviderDirectories, and http://gforge.hl7.org/svn/fhir/trunk/connectathons/MadridMay2017/Connectathon15/Scheduling (NOTE: use 'anonymous' as the username and your email address as the password)