33
Cost Sharing Estimator Zainab Almugbel Special thanks to Prof. Harold Boley for his contribution in this use case 1

Grailog Use Case

Embed Size (px)

Citation preview

Page 1: Grailog Use Case

1

Cost Sharing EstimatorZainab AlmugbelSpecial thanks to Prof. Harold Boley for his contribution in this use case

Page 2: Grailog Use Case

2

Cost sharing estimator•Cost sharing is the share of costs covered

by your insurance that you pay out of your own pocket. This term generally includes deductibles, coinsurance, and copayments, or similar charges, but it doesn't include premiums, balance billing amounts for non-network providers, or the cost of non-covered services.

https://www.healthcare.gov/glossary/cost-sharing/

Page 3: Grailog Use Case

3

How costSharingEstimator works

Page 4: Grailog Use Case

4

start

Client has

insurance?

Compensation>

treatment cost

cost sharing inquiry

yes

Payment = treatment cost

cost sharing result

end

no

Payment = 0

yes

Payment = treatment cost - compensation

no

Partner hospital

?

yes

no

Page 5: Grailog Use Case

5

Data Fact / Decision Rule Architecture

insuranceOffer client partnermedicalExpens

es

Data Facts

costSharingEstimator

paymentCalculator

Decision Rules

Page 6: Grailog Use Case

6

Data FactsThis includes medicalExpenses, insuranceOffer, client and partner

Page 7: Grailog Use Case

7

Data facts: medicalExpenses• This predicate stores the expenses/price of having a service in a

specific hospital :1. medicalExpenses(saudiGermanHospital, teeth, xray,

300^^Integer).%...(hospital, site, required treatment, price)

2. medicalExpenses(britishSaudiHospital, teeth, xray, 350^^Integer).

3. medicalExpenses(dallahHospital, teeth, xray, 350^^Integer).4. medicalExpenses(dallahHospital, teeth, surgery, 2000^^Integer).5. medicalExpenses(britishSaudiHospital, teeth, surgery,

1350^^Integer).6. medicalExpenses(binsinaMedicalCenter, teeth, surgery,

1500^^Integer).7. medicalExpenses(medCareHospital, teeth, surgery,

1350^^Integer).

Page 8: Grailog Use Case

8

Data facts: insurance offers• This predicate stores the information about the available

medical insurance offers in a specific insurance company. The compensation for treating a specific site is categorized based on the insurance type:

1. insuranceOffer(tawuniya, silver, teeth, 1000^^Integer).%...(insurance company, insurance type, site, compensation)

2. insuranceOffer(tawuniya, gold, teeth, 1500^^Integer).3. insuranceOffer(tawuniya, platinum, teeth,

2000^^Integer).4. insuranceOffer(tawuniya, diamond, teeth,

2500^^Integer).

Page 9: Grailog Use Case

9

Data facts: client•This predicate stores the registered

clients, their insurance company, and their insurance type:

1. client(11122, tawuniya, silver).%...(clientSSN,insurance company, insurance type)

2. client(66700, tawuniya, gold).

Page 10: Grailog Use Case

10

Data facts: partner•This predicate stores the partners :1. partner(tawuniya,

saudiGermanHospital).%...(insurance company, partner hosipital) 2. partner(tawuniya, britishSaudiHospital).3. partner(tawuniya, dallahHospital).

Page 11: Grailog Use Case

11

Decision RulesThis includes costSharingEstimator and paymentCalculator

Page 12: Grailog Use Case

12

Decision Rule: costSharingEstimator

•The predicate costSharingEstimator estimates the cost sharing ?Payment for a client ?ClientSSN who may have a medical insurance in ?InsCompany and needs a treatment ?RequiredTreatment for a ?Site in a ?Hospital

•?InsCompany is bound to Tawuniya company in this usecase but it could be bound to any other value

costSharingEstimator(?ClientSSN, ?InsCompany, ?Hospital, ?Site, ?RequiredTreatment, ?Payment) :-

Page 13: Grailog Use Case

13

Decision Rule: costSharingEstimator Cont’d.

costSharingEstimator has three versions:• Client has medical insurance:

▫Hospital is a partner with his insurance company(1) Compensation covers treatment cost Compensation does not cover treatment cost

▫Hospital is not a partner with his insurance company (2)

• Client does not have an insurance (3)

Page 14: Grailog Use Case

14

Decision Rule: costSharingEstimator(1)costSharingEstimator(?ClientSSN, ?InsCompany, ?Hospital, ?Site, ?RequiredTreatment, ?Payment) :-

client(?ClientSSN, tawuniya, ?InsType), % check if the client has insurance

partner(tawuniya, ?Hospital), % check the partnered hospitalsmedicalExpenses(?Hospital, ?Site, ?RequiredTreatment, ?Price),

% check the price (cost of the service)

insuranceOffer(tawuniya, ?InsType, ?Site, ?Compensation), % check the compensation(money given by the insurance

company) paymentCalculator(?Price, ?Compensation, ?Payment).

% calculate the cost sharing (?Payment)

This rule executes when the hospital that provides services to clients is partner of its insurance company

% costSharingEstimator(in, in, out, in, in, out)

Page 15: Grailog Use Case

15

Decision Rule: paymentCalculatorpaymentCalculator (?Price, ?Compensation, ?Payment).

Since compensation is based on the insurance type. The compensation may not cover the total treatment price. As a result, there are two versions of this rule:

1. If compensation >= price then payment=0paymentCalculator (?Price, ?Compensation, ?Payment) :- greaterThanOrEqual(?Compensation, ?Price), subtract(?

Payment, ?Price, ?Price). 

2. If compensation < price then payment= price - compensationpaymentCalculator (?Price, ?Compensation, ?Payment) :- lessThan(?Compensation, ?Price), subtract(?Payment, ?Price, ?Compensation).

Page 16: Grailog Use Case

16

Decision Rule: costSharingEstimator(2)

costSharingEstimator(?ClientSSN, ?InsCompany, ?Hospital, ?Site, ?RequiredTreatment, ?Payment) :-

client(?ClientSSN, tawuniya, ?InsType), naf(partner(tawuniya, ?Hospital)),% return true if the hospital is in not a partner with the insurance

company medicalExpenses (?Hospital, ?Site, ?RequiredTreatment, ?

Payment).

• This rule executes when the hospital that provides services to clients is not partner (naf) of its insurance company. The client has to pay the full cost of the service

Page 17: Grailog Use Case

17

Decision Rule: costSharingEstimator(3)costSharingEstimator(?ClientSSN, ?InsCompany, ?Hospital, ?Site, ?RequiredTreatment, ?Payment) :-

naf(client(?ClientSSN, ?InsCompany, ?InsType)), % return true if the client in not registered in the insurance

companymedicalExpenses (?Hospital, ?Site, ?RequiredTreatment, ?

Payment).

• This rule executes when the client is not registered (naf) in any insurance company. The client has to pay the full cost of the service

Page 18: Grailog Use Case

18

Query Samples1. costSharingEstimator is the main query 2. Both knowledgebase and query could be run

using OO JDREW on http://www.jdrew.org/oojdrew/download.html

Page 19: Grailog Use Case

19

Query Sample 1

This query is for (Exist client); it gives 2 results:

• costSharingEstimator(11122, tawuniya, ?Hospital, teeth, surgery, ?Payment).

Only partner hospitals that provide the required treatment are shown in the results

Page 20: Grailog Use Case

20

Query Sample 2

This query is for (exist client) with (non partner hospital); it gives one result:

• costSharingEstimator(11122, tawuniya, medCareHospital, teeth, surgery, ?Payment).

•Only the selected hospital is shown in the result•The client has to pay the full cost of the service

Page 21: Grailog Use Case

21

Query Sample 3

This query is for (non exist client); it gives 4 results:

• costSharingEstimator(11622, tawuniya, ?Hospital, teeth, surgery, ?Payment).

•All available hospitals that provide the required treatment are shown in the results•The client has to pay the full price of the service

Page 22: Grailog Use Case

22

Steps of Creating CostSharingEstimator

First

• Data and rules were written in POSL

Second

Third

Page 23: Grailog Use Case

23

Note •<Naf> [4] is not yet identified by Grailog.

Therefore, whenever it’s needed in a predicate, the predicate is preceded by “not”

•For example:POSL

naf(partner(tawuniya, ?Hospital))

RuleML (not)RuleML (naf)

Page 24: Grailog Use Case

24

Flat FunctionExample: paymentCalculator rule

Page 25: Grailog Use Case

25

Transforming POSL to RuleML (OO JDREW)POSL RuleML

paymentCalculator (?Price,?Compensation, ?Payment) :-

lessThan(?Compensation, ?Price),

subtract(?Payment, ?Price, ?Compensation).

Page 26: Grailog Use Case

26

Visualizing RuleML as Grailog(svg)

Page 27: Grailog Use Case

27

Nested FunctionExample: paymentCalculator rule

Page 28: Grailog Use Case

28

Transforming POSL to RuleML (manually)POSL RuleML

paymentCalculator (?Price,?Compensation, ?Payment) :-

lessThan(?Compensation, ?Price),

Equal(?Payment,subtract(?Price,?Compensation)).

Page 29: Grailog Use Case

29

Visualizing RuleML as Grailog(svg)

Page 30: Grailog Use Case

30

Saxon•Saxon [2] is used to transform the RuleML

version of this usecase into Grailog. It takes the .ruleml and the .xslt files as inputs to produce the .svg as output of the transformation process

•Saxon does not have an interface; it uses DOS command for this purpose

Page 31: Grailog Use Case

31

Grailog•More information about Grailog is

available on[5]•[3] is the .xslt file that is used to

transform RuleML in to Grailog visualization

Page 32: Grailog Use Case

32

Future work•Data in this use case can be extended to:

▫ contain comparable information about different medical insurance companies in a specific region to help the user to select the most suitable insurance for himself

▫include additional insurance types(ex, car insurance)

•Grailog can be extended to visualize “naf”

Page 33: Grailog Use Case

33

References[1]http://www.jdrew.org/oojdrew/demo.html[2]http://www.saxonica.com/documentation/#!

about/gettingstarted/gettingstartedjava[3]http://www2.unb.ca/~lbidlak1/

GrailogKSViz2_0StandAlone.xslt[4]http://wiki.ruleml.org/index.php/

Glossary_of_Deliberation_RuleML_1.02#.3CNaf.3E

[5]http://wiki.ruleml.org/index.php/Grailog