IP Library Granted Patent US 11,887,702
Granted Patent B1
US 11,887,702 · App. 18/332,555 · Granted Jan 30, 2024

Computer-based systems configured for real-time integration of resources across disparate electronic platforms and methods of use thereof

Inventors: Michael Lewis (Murray, UT); James Grove (Murray, UT); Mercy Murguia Rosales (Murray, UT); Wayne Delisser (Murray, UT)
Assignee: R1 RCM INC.
G16H10/20G06F9/5055G06F9/548G06F16/2457G06F16/24539G06F16/27G16H10/60
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,887,702
App. No.
18/332,555
Granted
Jan 30, 2024
Kind
B1
Abstract

Described herein are systems and methods for real-time integration of resources across disparate electronic platforms, including automated data mapping and message translation for improved resource platform access. The embodiments provide technical solutions and technical improvements that overcome technical problems, drawbacks and/or deficiencies in the technical fields involving compatibility with multiple third-party APIs, unified access to data from multiple platforms, and efficient synchronization with multiple platforms. Technical solutions and technical improvements herein include aspects of improved API call normalization for scalable and flexible API calls that integrate with various platforms, proactive and/or real-time caching of data associated with the various platforms, and efficient orchestration of client queries, platform API calls and cache querying to answer the client queries most efficiently and quickly with up-to-date, synchronized data.

Claims (121)

1. A system comprising:

at least one interface gateway configured to interface with at least one client device and a plurality of resource platforms, the at least one interface gateway comprising a resource orchestrator comprising at least one processor in communication with at least one non-transitory computer-readable medium having software instructions stored thereon, wherein, upon execution of the software instructions, the at least one processor is configured to:

generate an abstracted query about a plurality of resources managed by the plurality of resource platforms;

wherein the abstracted query is for at least:

each respective resource of the plurality of resources,

an availability of each respective resource of the plurality of resources, and

a capability of each respective resource of the plurality of resources;

identify a plurality of application programming interfaces maintained by a normalization layer for querying the plurality of resource platforms about the plurality of resources managed by the plurality of resource platforms;

wherein the plurality of application programming interfaces are defined by a plurality of resource selection questionnaire templates specific to each respective resource platform of the plurality of resource platforms;

generate a respective normalized application programming interface call to each respective resource platform by modifying the abstracted query for each respective resource platform of the plurality of resource platforms based on each respective application programming interface of the plurality of application programming interfaces;

store, responsive to the respective normalized application programming interface call to each of the plurality of resource platforms, in a resource cache, a plurality of resource objects for each resource platform,

wherein each of the plurality of resource objects that represent a respective resource of the plurality of resources managed by the plurality of resource platforms comprise:

an availability property indicating the availability of the respective resource, and

a capability property indicating the capability of the respective resource;

receive, from the at least one client device, a resource request representing at least one request for at least one resource of the plurality of resources;

wherein the resource request comprises:

at least one user attribute associated with a user, and

at least one resource request attribute defining at least one requested capability;

access the resource cache comprising the plurality of resource objects representing the plurality of resources managed by the plurality of resource platforms;

determine at least one particular resource property representing at least one particular capability that corresponds to:

the at least one user attribute, and

the at least one requested capability defined by the at least one resource request attribute;

determine a particular resource object of the plurality of resource objects in the resource cache, the particular resource object comprising the at least one particular capability;

wherein the particular resource object represents a particular resource for the resource request;

determine a particular resource platform associated with the particular resource object;

transmit to the at least one client device, in real-time, a particular plurality of resource selection questionnaire templates specific to the particular resource platform so as to enable the at least one client device to:

display the particular plurality of resource selection questionnaire templates, and

return at least one user input associated with the particular plurality of resource selection questionnaire templates;

determine, based on the at least one user input, a particular availability of the particular resource object; and

generate, based on a particular application programming interface of the particular resource platform and the particular availability of the particular resource object, a particular application programming interface call comprising at least one resource selection configured to cause the particular resource platform to secure, for the user, the at least one resource associated with the particular resource object.

2. The system of claim 1 , wherein identifying the plurality of application programming interfaces comprises identifying three application programming interfaces for each of the plurality of resource platforms.

3. The system of claim 1 , wherein storing the plurality of resource objects comprises:

receive, responsive to the respective normalized application programming interface call to each of the plurality of resource platforms, an unstructured response from each of the plurality of resource platforms,

wherein the unstructured response is indicative of at least:

the respective resource,

the availability of the respective resource, and

the capability of the respective resource; and

generate, based on respective mapping identifiers for each respective resource platform of the plurality of resource platforms, the plurality of resource objects for storage in the resource cache using the respective mapping identifiers to map the unstructured response to the plurality of resource objects,

wherein each of the plurality of resource objects that represent the plurality of resources managed by the plurality of resource platforms comprise:

a respective resource property mapped to the respective resource,

the availability property mapped to the availability of the respective resource, and

the capability property mapped to the capability of the respective resource.

4. The system of claim 3 , wherein the at least one processor is further configured to:

determine, for each resource platform, the plurality of resource objects associated with the abstracted query based at least in part on the respective mapping identifiers;

determine a set of additional application programming interface fields in each respective normalized application programming interface call;

wherein the set of additional application programming interface fields are in addition to a set of abstracted query fields of the abstracted query;

wherein the set of abstracted query fields define each respective resource of the plurality of resources;

determine a set of additional application programming interface data for each respective normalized application programming interface call to populate the set of additional application programming interface fields based at least in part on the plurality of resource objects associated with the abstracted query; and

generate the respective normalized application programming interface call to each respective resource platform by modifying the abstracted query for each respective resource platform of the plurality of resource platforms to include the set of additional application programming interface fields comprising the set of additional application programming interface data of each respective normalized application programming interface call.

5. The system of claim 1 , wherein the at least one processor is further configured to:

generate, periodically for each resource platform of the plurality of resource platforms, according to at least one refresh period, at least one subsequent abstracted query configured to synchronize the plurality of resource objects with the plurality of resource platforms;

generate, based on the at least one refresh period, at least one subsequent respective normalized application programming interface call to each respective resource platform by modifying the at least one subsequent abstracted query for each respective resource platform of the plurality of resource platforms based on each respective application programming interface of the plurality of application programming interfaces; and

storing, responsive to the at least one subsequent respective normalized application programming interface call to each of the plurality of resource platforms, in the resource cache, a plurality of refreshed resource objects for each resource platform,

wherein the plurality of refreshed resource objects comprises an up-to-date record of each resource of the plurality of resources managed by the plurality of resource platforms, comprising:

an updated availability property indicating a current availability of the respective resource, and

an updated capability property indicating a current capability of the respective resource.

6. The system of claim 5 , wherein the at least one refresh period comprises one day.

7. The system of claim 5 , wherein the plurality of refreshed resource objects comprises the up-to-date record for changed resources of the plurality of resources.

8. The system of claim 5 , wherein the plurality of refreshed resource objects comprises the up-to-date record for all the plurality of resources.

9. The system of claim 1 , wherein the plurality of resource platforms comprises a plurality of electronic health record (EHR) integrations.

10. The system of claim 1 , wherein the plurality of resources comprises a plurality of healthcare providers.

11. A method comprising:

generating, by at least one processor of a resource orchestrator of at least one interface gateway configured to interface with at least one client device and a plurality of resource platforms, an abstracted query about a plurality of resources managed by the plurality of resource platforms;

wherein the abstracted query is for at least:

each respective resource of the plurality of resources,

an availability of each respective resource of the plurality of resources, and

a capability of each respective resource of the plurality of resources;

identifying, by the at least one processor, a plurality of application programming interfaces maintained by a normalization layer for querying the plurality of resource platforms about the plurality of resources managed by the plurality of resource platforms;

wherein the plurality of application programming interfaces are defined by a plurality of resource selection questionnaire templates specific to each respective resource platform of the plurality of resource platforms;

generating, by the at least one processor, a respective normalized application programming interface call to each respective resource platform by modifying the abstracted query for each respective resource platform of the plurality of resource platforms based on each respective application programming interface of the plurality of application programming interfaces;

storing, by the at least one processor, responsive to the respective normalized application programming interface call to each of the plurality of resource platforms, in a resource cache, a plurality of resource objects for each resource platform,

wherein each of the plurality of resource objects that represent a respective resource of the plurality of resources managed by the plurality of resource platforms comprise:

an availability property indicating the availability of the respective resource, and

a capability property indicating the capability of the respective resource;

receiving, by the at least one processor, from the at least one client device, a resource request representing at least one request for at least one resource of the plurality of resources;

wherein the resource request comprises:

at least one user attribute associated with a user, and

at least one resource request attribute defining at least one requested capability;

accessing, by the at least one processor, the resource cache comprising the plurality of resource objects representing the plurality of resources managed by the plurality of resource platforms;

determining, by the at least one processor, at least one particular resource attribute representing at least one particular capability that corresponds to:

the at least one user attribute, and

the at least one requested capability defined by the at least one resource request attribute;

determining, by the at least one processor, a particular resource object of the plurality of resource objects in the resource cache, the particular resource object comprising at least one particular capability property;

wherein the particular resource object represents a particular resource for the resource request;

determining, by the at least one processor, a particular resource platform associated with the particular resource object;

transmit to the at least one client device, in real-time, a particular plurality of resource selection questionnaire templates specific to the particular resource platform so as to enable the at least one client device to:

display the particular plurality of resource selection questionnaire templates, and

return, to the at least one processor, at least one user input associated with the particular plurality of resource selection questionnaire templates;

determining, by the at least one processor, based on the at least one user input, a particular availability of the particular resource object; and

generating, by the at least one processor, based on a particular application programming interface of the particular resource platform and the particular availability of the particular resource object, a particular application programming interface call comprising at least one resource selection configured to cause the particular resource platform to secure, for the user, the at least one resource associated with the particular resource object.

12. The method of claim 11 , wherein identifying the plurality of application programming interfaces comprises identifying three application programming interfaces for each of the plurality of resource platforms.

13. The method of claim 11 , wherein storing the plurality of resource objects comprises:

receiving, by the at least one processor, responsive to the respective normalized application programming interface call to each of the plurality of resource platforms, an unstructured response from each of the plurality of resource platforms,

wherein the unstructured response is indicative of at least:

the respective resource,

the availability of the respective resource, and

the capability of the respective resource; and

generating, by the at least one processor, based on respective mapping identifiers for each respective resource platform of the plurality of resource platforms, the plurality of resource objects for storage in the resource cache using the respective mapping identifiers to map the unstructured response to the plurality of resource objects,

wherein each of the plurality of resource objects that represent the plurality of resources managed by the plurality of resource platforms comprise:

a respective resource property mapped to the respective resource,

the availability property mapped to the availability of the respective resource, and

the capability property mapped to the capability of the respective resource.

14. The method of claim 13 , further comprising:

determining, by the at least one processor, for each resource platform, the plurality of resource objects associated with the abstracted query based at least in part on the respective mapping identifiers;

determining, by the at least one processor, a set of additional application programming interface fields in each respective normalized application programming interface call;

wherein the set of additional application programming interface fields are in addition to a set of abstracted query fields of the abstracted query;

wherein the set of abstracted query fields define each respective resource of the plurality of resources;

determining, by the at least one processor, a set of additional application programming interface data for each respective normalized application programming interface call to populate the set of additional application programming interface fields based at least in part on the plurality of resource objects associated with the abstracted query; and

generating, by the at least one processor, the respective normalized application programming interface call to each respective resource platform by modifying the abstracted query for each respective resource platform of the plurality of resource platforms to include the set of additional application programming interface fields comprising the set of additional application programming interface data of each respective normalized application programming interface call.

15. The method of claim 11 , further comprising:

generating, by the at least one processor, periodically for each resource platform of the plurality of resource platforms, according to at least one refresh period, at least one subsequent abstracted query configured to synchronize the plurality of resource objects with the plurality of resource platforms;

generating, by the at least one processor, based on the at least one refresh period, at least one subsequent respective normalized application programming interface call to each respective resource platform by modifying the at least one subsequent abstracted query for each respective resource platform of the plurality of resource platforms based on each respective application programming interface of the plurality of application programming interfaces; and

storing, by the at least one processor, responsive to the at least one subsequent respective normalized application programming interface call to each of the plurality of resource platforms, in the resource cache, a plurality of refreshed resource objects for each resource platform,

wherein the plurality of refreshed resource objects comprises an up-to-date record of each resource of the plurality of resources managed by the plurality of resource platforms, comprising:

an updated availability property indicating a current availability of the respective resource, and

an updated capability property indicating a current capability of the respective resource.

16. The method of claim 15 , wherein the at least one refresh period comprises one day.

17. The method of claim 15 , wherein the plurality of refreshed resource objects comprises the up-to-date record for changed resources of the plurality of resources.

18. The method of claim 15 , wherein the plurality of refreshed resource objects comprises the up-to-date record for all the plurality of resources.

19. The method of claim 11 , wherein the plurality of resource platforms comprises a plurality of electronic health record (EHR) integrations.

20. The method of claim 11 , wherein the plurality of resources comprises a plurality of healthcare providers.

Assignments (4)
SECURITY AGREEMENT Recorded Nov 20, 2024
From: R1 RCM INC.; IVINCI PARTNERS, LLC; ADVATA INC.; PAR8O, LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS TRUSTEE AND COLLATERAL AGENT
Reel/Frame 069402/0739 →
NOTICE AND CONFIRMATION OF GRANT OF SECURITY INTEREST IN PATENTS Recorded Nov 19, 2024
From: INVINCI PARTNERS, LLC; ADVATA INC.; PAR8O, LLC; R1 RCM INC.
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 069390/0490 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE SPELLING OF THE 3RD INVENTORS NAME PREVIOUSLY RECORDED AT REEL: 063913 FRAME: 0851. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jul 6, 2023
From: LEWIS, MICHAEL; GROVE, JAMES; ROSALES, MERCY MURGUIA; DELISSER, WAYNE
To: R1 RCM INC.
Reel/Frame 064221/0844 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2023
From: LEWIS, MICHAEL; GROVE, JAMES; ROSALES, MERCEY MURGUIA; DELISSER, WAYNE
To: R1 RCM INC.
Reel/Frame 063913/0851 →