rule "Create seperate Person if termination Date and coverage are different"
ruleflow-group "PostTransform"
salience -1
no-loop
when
$latestRequestedData:LatestRequestedData()
$person : BFEnrollmentPerson(benefits != null, benefits.benefitRecord != null,ediTransaction != EdiTransactionConstants.SKIP)
$count_skip : List() from collect(BenefitRecord(EdiTransactionConstants.SKIP == ediTransaction) from $person.benefits.benefitRecord)
$event_date : Metadata(name == "EVENT_DATE") from $person.dxMetaData
then
String event_date=$event_date.getValue();
HashMap filterBenefits = new HashMap();
String coverageLostDate="";
for (BenefitRecord benefitRecord : $person.getBenefits().getBenefitRecord()){
if(EdiTransactionConstants.SKIP!=benefitRecord.getEdiTransaction()){
Metadata coverageLostEvent=EDIUtil.findMetadataInMetadataList(benefitRecord.getDxMetaData(), "LOST_EVENT_DATE" );
coverageLostDate=coverageLostEvent.getValue();
if(coverageLostDate!=null && !"".equals(coverageLostDate.trim())){
if($person.getBenefits().getBenefitRecord().size()==$count_skip.size()+1){
Metadata evenDate= EDIUtil.findMetadataInMetadataList($person.getDxMetaData(), "EVENT_DATE" );
if(evenDate!=null){
evenDate.setValue(coverageLostDate);
}
}else if(filterBenefits.containsKey(coverageLostDate)){
ArrayList benefitObject= (ArrayList)filterBenefits.get(coverageLostDate);
benefitObject.add(benefitRecord);
filterBenefits.put(coverageLostDate, benefitObject);
}
else{
ArrayList benefitObject = new ArrayList();
benefitObject.add(benefitRecord);
filterBenefits.put(coverageLostDate, benefitObject);
}
}
}
}
if(!filterBenefits.isEmpty()){
for(Object entrySetObj :filterBenefits.entrySet()) {
Map.Entry entry = (Map.Entry) entrySetObj;
ArrayList benefitList = (ArrayList) entry.getValue();
String coverageEndDate=(String)entry.getKey();
BFEnrollmentPerson person= TransactionHistoryCloneUtil.copy(BFEnrollmentPerson.class, $person);
Metadata evenDate= EDIUtil.findMetadataInMetadataList(person.getDxMetaData(), "EVENT_DATE" );
if(evenDate!=null){
evenDate.setValue(formatDateToUse(coverageEndDate));
}
person.getBenefits().getBenefitRecord().clear();
person.getBenefits().getBenefitRecord().addAll(benefitList);
$person.getBenefits().getBenefitRecord().removeAll(benefitList);
$latestRequestedData.getPerson().add(person);
}
}
if($person.getBenefits().getBenefitRecord().size()==$count_skip.size()){
$latestRequestedData.getPerson().remove($person);
}
filterBenefits.clear();
filterBenefits=null;
end
ruleflow-group "PostTransform"
salience -1
no-loop
when
$latestRequestedData:LatestRequestedData()
$person : BFEnrollmentPerson(benefits != null, benefits.benefitRecord != null,ediTransaction != EdiTransactionConstants.SKIP)
$count_skip : List() from collect(BenefitRecord(EdiTransactionConstants.SKIP == ediTransaction) from $person.benefits.benefitRecord)
$event_date : Metadata(name == "EVENT_DATE") from $person.dxMetaData
then
String event_date=$event_date.getValue();
HashMap filterBenefits = new HashMap();
String coverageLostDate="";
for (BenefitRecord benefitRecord : $person.getBenefits().getBenefitRecord()){
if(EdiTransactionConstants.SKIP!=benefitRecord.getEdiTransaction()){
Metadata coverageLostEvent=EDIUtil.findMetadataInMetadataList(benefitRecord.getDxMetaData(), "LOST_EVENT_DATE" );
coverageLostDate=coverageLostEvent.getValue();
if(coverageLostDate!=null && !"".equals(coverageLostDate.trim())){
if($person.getBenefits().getBenefitRecord().size()==$count_skip.size()+1){
Metadata evenDate= EDIUtil.findMetadataInMetadataList($person.getDxMetaData(), "EVENT_DATE" );
if(evenDate!=null){
evenDate.setValue(coverageLostDate);
}
}else if(filterBenefits.containsKey(coverageLostDate)){
ArrayList benefitObject= (ArrayList)filterBenefits.get(coverageLostDate);
benefitObject.add(benefitRecord);
filterBenefits.put(coverageLostDate, benefitObject);
}
else{
ArrayList benefitObject = new ArrayList();
benefitObject.add(benefitRecord);
filterBenefits.put(coverageLostDate, benefitObject);
}
}
}
}
if(!filterBenefits.isEmpty()){
for(Object entrySetObj :filterBenefits.entrySet()) {
Map.Entry entry = (Map.Entry) entrySetObj;
ArrayList benefitList = (ArrayList) entry.getValue();
String coverageEndDate=(String)entry.getKey();
BFEnrollmentPerson person= TransactionHistoryCloneUtil.copy(BFEnrollmentPerson.class, $person);
Metadata evenDate= EDIUtil.findMetadataInMetadataList(person.getDxMetaData(), "EVENT_DATE" );
if(evenDate!=null){
evenDate.setValue(formatDateToUse(coverageEndDate));
}
person.getBenefits().getBenefitRecord().clear();
person.getBenefits().getBenefitRecord().addAll(benefitList);
$person.getBenefits().getBenefitRecord().removeAll(benefitList);
$latestRequestedData.getPerson().add(person);
}
}
if($person.getBenefits().getBenefitRecord().size()==$count_skip.size()){
$latestRequestedData.getPerson().remove($person);
}
filterBenefits.clear();
filterBenefits=null;
end
No comments:
Post a Comment