Upload
zainab-almugbel
View
50
Download
0
Embed Size (px)
Citation preview
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