Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Note

In this project, the generated AI Model is only valid for Nepal openIMIS implementation. Any usage in other context/implementation will give wrong categorization responses. For other context/implementation, the retraining of the AI Model, based on already categorized Claims, is mandatory.

Several data files are to be loaded and saved during the AI Model execution:

  • encoded fields data file

  • scalling file

  • AI model file

The AI Model file name with full path (or relative path) is configured in the modules configuration key ai_model_file. Each time the model is executed, the model file is loaded, allowing to change the filename on execution in the configuration (hot-reload).

...

Plantumlcloud
filenameClaimStatusStateDiagram.png
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
width
compressedtrue
revision1113
Expand
titleDiagram source
Code Block
@startuml

state "Enter Claim" as ClaimEntering {
 [*] --> Entered : Enter Claim
 
 Entered --> Entered : Edit\nClaim
 Entered : ClaimStatus=Entered (2)
 Entered : ReviewStatus=Idle (1)
 Entered : ClaimItemStatus=Accepted (1)
 Entered : RejectionReason=Accepted (0)
}

state "Rule Engine Checking" as RuleEngineCheck {

 state RuleEngineValidation <<choice>>

 Entered --> RuleEngineValidation : Submit Claim

 RuleEngineValidation --> RejectedByRuleEngine : Reject\nAll Items
 RejectedByRuleEngine : ClaimStatus=Rejected (1)
 RejectedByRuleEngine : ClaimItemStatus=Rejected (2)
 RejectedByRuleEngine : RejectionReason=[1-19]

 RejectedByRuleEngine --> [*: json_ext.claim_ai_quality.was_categorized=false
 RejectedByRuleEngine : json_ext.claim_ai_quality.request_time=ValidityFrom
 RejectedByRuleEngine : json_ext.claim_ai_quality.response_time=ValidityFrom
 RejectedByRuleEngine : json_ext.claim_ai_quality.ai_result=Rejected (2)


 RejectedByRuleEngine --> [*]

 RuleEngineValidation --> CheckedIdle : Accept \n Some Items
 CheckedIdle : ClaimStatus=Checked (4)
 CheckedIdle : json_ext.claim_ai_quality.was_categorized=false
 
' note top of CheckedIdle : If AI modules not
activated \nthen
ClaimStatus=Checked (4)

}

state "AI Automatic Categorisation" as AICheck {

 state AIClaimCategorisation <<choice>>

 CheckedIdle --> AIClaimCategorisation 

 AIClaimCategorisation --> CheckedAIAccepted : Accept\nAll Items
 CheckedAIAccepted : json_ext.claim_ai_quality.was_categorized=true
 CheckedAIAccepted : json_ext.claim_ai_quality.ai_result=Accepted (1)

 AIClaimCategorisation --> CheckedAIFlagged : Reject\nSome Items
 CheckedAIFlagged : ReviewStatus=SelectedForReview (4)
 CheckedAIFlagged : ClaimItemStatus=Rejected (2)
 CheckedAIFlagged : RejectionReason=Rejected by AI (-2)
 CheckedAIFlagged : json_ext.claim_ai_quality.was_categorized=true
 CheckedAIFlagged : json_ext.claim_ai_quality.ai_result=Rejected (2)

 note top of CheckedAIFlagged : Rejected Items values 

}

state "Manual Review" as ManualReview {

 state SelectForReview <<choice>>

 CheckedAIAccepted --> SelectForReview

 SelectForReview --> CheckedNotSelected : Select manually\nnot to review
 CheckedNotSelected : ReviewStatus=Not Selected (2)
 CheckedNotSelected : RejectionReason=Accepted (0)

 SelectForReview --> CheckedSelected : Select manually\nto review
 CheckedSelected : ReviewStatus=Selected (4)
 CheckedSelected : RejectionReason=Accepted (0)

 state RequireManualReview <<choice>>

 CheckedSelected --> RequireManualReview 

 CheckedAIFlagged --> RequireManualReview : Selected automatically\nfor review

 RequireManualReview --> CheckedRejected : Manual Review\nReject All Items
 CheckedRejected: ClaimStatus=Rejected (1)
 CheckedRejected: ClaimItemStatus=Rejected (2)
 CheckedRejected : RejectionReason=Rejected by MO (-1)

 CheckedRejected --> [*]

 RequireManualReview --> CheckedAccepted : Manual Review\nAccept Some Items
 CheckedAccepted : ClaimItemStatus=Accepted (1)
 CheckedAccepted : RejectionReason=Accepted (0)

 CheckedAccepted  --> CheckedReviewed : Deliver review
 CheckedReviewed : ReviewStatus=Reviewed (8)

}

state "Processing" as Process {

 CheckedReviewed --> ValuatedAccepted : Process
 ValuatedAccepted : ClaimStatus=Valuated (16)

 CheckedNotSelected --> ValuatedAccepted : Process

 CheckedAccepted --> ValuatedBypassed : Process \nwithout \ndelivering \nreview
 ValuatedBypassed : ClaimStatus=Valuated (16)
 ValuatedBypassed : ReviewStatus=Bypassed (16)

 ValuatedBypassed --> [*]

 ValuatedAccepted --> [*]

}

@enduml

...

If Claim.ClaimStatus == Entered (Value 2) Then don’t add Claim.json_ext.claim_ai_quality_quality

If Claim.ClaimStatus == Checked (Value 4) Then add

Code Block
Claim.json_ext.claim_ai_quality.was_categorized = false
Claim.json_ext.claim_ai_quality.request_time = null
Claim.json_ext.claim_ai_quality.response_time = null

If Claim.ClaimStatus == Checked Rejected (Value 41) Then add

Code Block
Claim.json_ext.claim_ai_quality.was_categorized = false
Claim.json_ext.claim_ai_quality.request_time = nullClaim.ValidityFrom
Claim.json_ext.claim_ai_quality.response_time = null Claim.ValidityFrom
ClaimService.json_ext.claim_ai_quality.ai_result = ClaimService.ClaimServiceStatus
ClaimItem.json_ext.claim_ai_quality.ai_result = ClaimItem.ClaimItemStatus

If Claim.ClaimStatus in [Rejected (Value 1), Reviewed Reviewed/Processed (Value 8), Valuated (Value 16)] Then add

Code Block
Claim.json_ext.claim_ai_quality.was_categorized = true
Claim.json_ext.claim_ai_quality.request_time = Claim.ValidityFromReview?:Claim.ValidityFrom
Claim.json_ext.claim_ai_quality.response_time = Claim.ValidityFromReview?:Claim.ValidityFrom
ClaimService.json_ext.claim_ai_quality.ai_result = ClaimService.ClaimServiceStatus
ClaimItem.json_ext.claim_ai_quality.ai_result = ClaimItem.ClaimItemStatus

...

  • ClaimFilterMedicalItem allows Medical Officers to filter the Claims list based on a specific Medical Item (only one from autocomplete list)

  • ClaimFilterMedicalService allows Medical Officers to filter the Claims list based on a specific Medical Service (only one from autocomplete list)

  • ClaimFilterAIProcessed allows Medical Officers to display or hide the non AI-processed Claims (checkbox, default checked)

Custom Claim Review Search Results - Frontend

The following column will be added to the result list:

  • ClaimResultsAIProcessed will display the value of Claim.json_ext.claim_ai_quality.was_categorized as True/False.

AI Categorisation Misclassification Report

...