Grailog Use Case

Post on 13-Apr-2017

50 views 0 download

transcript

1

Cost Sharing EstimatorZainab AlmugbelSpecial thanks to Prof. Harold Boley for his contribution in this 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/

3

How costSharingEstimator works

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

5

Data Fact / Decision Rule Architecture

insuranceOffer client partnermedicalExpens

es

Data Facts

costSharingEstimator

paymentCalculator

Decision Rules

6

Data FactsThis includes medicalExpenses, insuranceOffer, client and partner

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).

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).

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).

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).

11

Decision RulesThis includes costSharingEstimator and paymentCalculator

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) :-

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)

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)

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).

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

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

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

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

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

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

22

Steps of Creating CostSharingEstimator

First

• Data and rules were written in POSL

Second

Third

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)

24

Flat FunctionExample: paymentCalculator rule

25

Transforming POSL to RuleML (OO JDREW)POSL RuleML

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

lessThan(?Compensation, ?Price),

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

26

Visualizing RuleML as Grailog(svg)

27

Nested FunctionExample: paymentCalculator rule

28

Transforming POSL to RuleML (manually)POSL RuleML

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

lessThan(?Compensation, ?Price),

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

29

Visualizing RuleML as Grailog(svg)

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

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

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”

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