IP Library Granted Patent US 10,379,907
Granted Patent B2
US 10,379,907 · App. 15/080,668 · Granted Aug 13, 2019

Event-driven system and method for selectively performing computations

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 10,379,907
App. No.
15/080,668
Granted
Aug 13, 2019
Kind
B2
Abstract

An event-driven system, method and computer program product are provided to selectively generate events in response to receipt of data elements. The event-driven system includes processing circuitry configured to identify, in response to receipt of one or more data elements, an event that is impacted by the one or more data elements. The processing circuitry is also configured to determine whether at least a threshold number of consumers are currently listening for the event. In an instance in which at least a threshold number of consumers are currently listening for the event, the processing circuitry is configured to perform one or more computations based upon the one or more data elements to generate the event. Otherwise, however, the processing circuitry is configured to at least defer the one or more computations that would be performed upon the one or more data elements to generate the event.

Claims (47)

1. An event-driven system comprising processing circuitry configured to:

in response to receipt of one or more data elements, identify an event that is impacted by the one or more data elements;

determine whether at least a threshold number of consumers are currently listening for the event;

in an instance in which at least the threshold number of consumers are currently listening for the event, perform one or more computations based upon the one or more data elements to generate the event; and

in an instance in which less than the threshold number of consumers are currently listening for the event, at least defer the one or more computations that would be performed upon the one or more data elements to generate the event,

wherein the processing circuitry is configured to defer the one or more computations in the instance in which less than the threshold number of consumers are currently listening for the event by subsequently performing the one or more computations following a delay after receipt of the one or more data elements with the delay based upon a number of consumers that are currently listening for the event, wherein the delay defines a period of time for which the one or more computations are deferred that is based upon the number of consumers that are currently listening for the event,

wherein performing the one or more computations comprises performing the one or more computations based upon combinations of the one or more data elements by performing one or more calculations or by performing aggregation,

wherein the event is dependent upon one or more other events such that generation of the event causes generation of the one or more other events upon which the event is dependent, and

wherein the event and the one or more other events are configured to be subscribed or listened to by one or more consumers.

2. An event-driven system according to claim 1 wherein the processing circuitry is further configured, in an instance in which less than the threshold number of consumers are currently listening for the event, to cause the event to be flagged as an event that is impacted by the one or more data elements but that has not yet been generated.

3. An event-driven system according to claim 1 wherein the processing circuitry is configured to perform the one or more computations in accordance with a predefined schedule by performing the computations to generate a plurality of events in a batch process.

4. An event-driven system according to claim 1 wherein the processing circuitry is configured to defer the one or more computations by:

determining that the event has been requested prior to being generated; and

in response to the event being requested, performing the one or more computations based upon the one or more data elements to generate the event.

5. An event-driven system according to claim 1 wherein a plurality of events of different relative importance are impacted by the one or more data elements, and wherein the one or more computations are performed upon the one or more data elements to generate at least one of the plurality of events of greater relative importance regardless of whether the threshold number of consumers are currently listening for the at least one of the plurality of events but the one or more computations that would be performed upon the one or more data elements to generate at least another one of the plurality of events of lesser relative importance are deferred in an instance in which less than the threshold number of consumers are currently listening for the at least another one of the plurality of events.

6. An event-driven system according to claim 1 wherein the delay has an inverse relationship to the number of consumers that are currently listening for the event such that larger numbers of consumers that are currently listening for the event results in shorter delays than smaller numbers of consumers that are currently listening for the event.

7. A method for selectively generating events based upon one or more data elements, the method comprising:

in response to receipt of one or more data elements, identifying an event that is impacted by the one or more data elements;

determining whether at least a threshold number of consumers are currently listening for the event;

in an instance in which at least the threshold number of consumers are currently listening for the event, performing, with processing circuitry, one or more computations based upon the one or more data elements to generate the event; and

in an instance in which less than the threshold number of consumers are currently listening for the event, at least deferring the one or more computations that would be performed upon the one or more data elements to generate the event,

wherein deferring the one or more computations in the instance in which less than the threshold number of consumers are currently listening for the event comprises subsequently performing the one or more computations following a delay after receipt of the one or more data elements with the delay based upon a number of consumers that are currently listening for the event, wherein the delay defines a period of time for which the one or more computations are deferred that is based upon the number of consumers that are currently listening for the event,

wherein performing the one or more computations comprises performing the one or more computations based upon combinations of the one or more data elements by performing one or more calculations or by performing aggregation,

wherein the event is dependent upon one or more other events such that generation of the event causes generation of the one or more other events upon which the event is dependent, and

wherein the event and the one or more other events are configured to be subscribed or listened to by one or more consumers.

8. A method according to claim 7 further comprising, in an instance in which less than the threshold number of consumers are currently listening for the event, causing the event to be flagged as an event that is impacted by the one or more data elements but that has not yet been generated.

9. A method according to claim 7 wherein performing the one or more computations in accordance with a predefined schedule comprises performing the computations to generate a plurality of events in a batch process.

10. A method according to claim 7 wherein deferring the one or more computations comprises:

determining that the event has been requested prior to being generated; and

in response to the event being requested, performing the one or more computations based upon the one or more data elements to generate the event.

11. A method according to claim 7 wherein a plurality of events of different relative importance are impacted by the one or more data elements, and wherein the one or more computations are performed upon the one or more data elements to generate at least one of the plurality of events of greater relative importance regardless of whether the threshold number of consumers are currently listening for the at least one of the plurality of events but the one or more computations that would be performed upon the one or more data elements to generate at least another one of the plurality of events of lesser relative importance are deferred in an instance in which less than the threshold number of consumers are currently listening for the at least another one of the plurality of events.

12. A method according to claim 7 wherein the delay has an inverse relationship to the number of consumers that are currently listening for the event such that larger numbers of consumers that are currently listening for the event results in shorter delays than smaller numbers of consumers that are currently listening for the event.

13. A computer program product for selectively generating events based upon one or more data elements, the computer program product comprising at least one non-transitory computer-readable storage medium having computer-executable program code portions stored therein, the computer-executable program code portions comprising program code instructions for:

in response to receipt of one or more data elements, identifying an event that is impacted by the one or more data elements;

determining whether at least a threshold number of consumers are currently listening for the event;

in an instance in which at least the threshold number of consumers are currently listening for the event, performing one or more computations based upon the one or more data elements to generate the event; and

in an instance in which less than the threshold number of consumers are currently listening for the event, at least deferring the one or more computations that would be performed upon the one or more data elements to generate the event,

wherein the program code instructions for deferring the one or more computations in the instance in which less than the threshold number of consumers are currently listening for the event comprise program code instructions for subsequently performing the one or more computations following a delay after receipt of the one or more data elements with the delay based upon a number of consumers that are currently listening for the event, wherein the delay defines a period of time for which the one or more computations are deferred that is based upon the number of consumers that are currently listening for the event,

wherein performing the one or more computations comprises performing the one or more computations based upon combinations of the one or more data elements by performing one or more calculations or by performing aggregation,

wherein the event is dependent upon one or more other events such that generation of the event causes generation of the one or more other events upon which the event is dependent, and

wherein the event and the one or more other events are configured to be subscribed or listened to by one or more consumers.

14. A computer program product according to claim 13 wherein the computer-executable program code portions further comprise program code instructions for, in an instance in which less than the threshold number of consumers are currently listening for the event, causing the event to be flagged as an event that is impacted by the one or more data elements but that has not yet been generated.

15. A computer program product according to claim 13 wherein the program code instructions for deferring the one or more computations comprise program code instructions for:

determining that the event has been requested prior to being generated; and

in response to the event being requested, performing the one or more computations based upon the one or more data elements to generate the event.

16. A computer program product according to claim 13 wherein a plurality of events of different relative importance are impacted by the one or more data elements, and wherein the one or more computations are performed upon the one or more data elements to generate at least one of the plurality of events of greater relative importance regardless of whether the threshold number of consumers are currently listening for the at least one of the plurality of events but the one or more computations that would be performed upon the one or more data elements to generate at least another one of the plurality of events of lesser relative importance are deferred in an instance in which less than the threshold number of consumers are currently listening for the at least another one of the plurality of events.

17. A computer program product according to claim 13 wherein the delay has an inverse relationship to the number of consumers that are currently listening for the event such that larger numbers of consumers that are currently listening for the event results in shorter delays than smaller numbers of consumers that are currently listening for the event.

Assignments (10)
RELEASE OF SECURITY INTEREST Recorded Oct 5, 2022
From: BANK OF AMERICA, N.A.
To: CHANGE HEALTHCARE RESOURCES, LLC (FORMERLY KNOWN AS ALTEGRA HEALTH OPERATING COMPANY LLC); CHANGE HEALTHCARE SOLUTIONS, LLC; CHANGE HEALTHCARE PERFORMANCE, INC. (FORMERLY KNOWN AS CHANGE HEALTHCARE, INC.); CHANGE HEALTHCARE OPERATIONS, LLC; CHANGE HEALTHCARE HOLDINGS, INC.; CHANGE HEALTHCARE TECHNOLOGIES, LLC (FORMERLY KNOWN AS MCKESSON TECHNOLOGIES LLC); CHANGE HEALTHCARE HOLDINGS, LLC
Reel/Frame 061620/0054 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2018
From: CHANGE HEALTHCARE LLC
To: CHANGE HEALTHCARE HOLDINGS, LLC
Reel/Frame 046449/0899 →
CHANGE OF ADDRESS Recorded Mar 23, 2017
From: CHANGE HEALTHCARE LLC
To: CHANGE HEALTHCARE LLC
Reel/Frame 042082/0061 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 10, 2017
From: PF2 IP LLC
To: CHANGE HEALTHCARE LLC
Reel/Frame 041966/0356 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2017
From: MCKESSON CORPORATION
To: PF2 IP LLC
Reel/Frame 041938/0501 →
SECURITY AGREEMENT Recorded Mar 2, 2017
From: CHANGE HEALTHCARE HOLDINGS, LLC; CHANGE HEALTHCARE, INC.; CHANGE HEALTHCARE HOLDINGS, INC.; CHANGE HEALTHCARE OPERATIONS, LLC; CHANGE HEALTHCARE SOLUTIONS, LLC; ALTEGRA HEALTH OPERATING COMPANY LLC; MCKESSON TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 041858/0482 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2017
From: MCKESSON FINANCIAL HOLDINGS UNLIMITED COMPANY
To: MCKESSON CORPORATION
Reel/Frame 041355/0408 →
CHANGE OF NAME Recorded Jan 11, 2017
From: MCKESSON FINANCIAL HOLDINGS
To: MCKESSON FINANCIAL HOLDINGS UNLIMITED COMPANY
Reel/Frame 041329/0879 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2016
From: MCKESSON CORPORATION
To: MCKESSON FINANCIAL HOLDINGS
Reel/Frame 039887/0935 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 25, 2016
From: MALEC, ARIEN; PATTERSON, CHRIS
To: MCKESSON CORPORATION
Reel/Frame 038098/0899 →