Plug-In/Hooks for E-Claims, Eligibility, Reports(ERAs, 271s, 277s, DentiCal Reports) and for Clearinghouse Setup Options

For talking about and sharing plug-ins that have been developed by outside developers.
Post Reply
Walker@ExtraDent
Posts: 1
Joined: Thu Feb 18, 2021 3:45 pm

Plug-In/Hooks for E-Claims, Eligibility, Reports(ERAs, 271s, 277s, DentiCal Reports) and for Clearinghouse Setup Options

Post by Walker@ExtraDent » Mon Feb 22, 2021 12:15 pm

OpenDental Plug-In/Hook Additions

The following hooks are requested to implement electronic claims, eligibility, reports retrieval (ERAs, 271s, 277s, DentiCal Reports) and some Clearinghouse Setup options in OpenDental using Plug-in/Hooks per our previous discussion. Per Plug-in/Hooks instructions, Hook names were created using class naming conventions.

OpenDental\Forms\FormClearinghouseEdit.cs: OpenDental.FormClearinghouseEdit
1. In FillFields() – Plugins.HookMethod: FormClearinghouseEdit.AllowFeature_ERA
object[] param = new object[] { ClearinghouseCur };
if (ClearinghouseCur.CommBridge.In(EclaimsCommBridge.ClaimConnect, EclaimsCommBridge.EDS, EclaimsCommBridge.Claimstream, EclaimsCommBridge.ITRANS,EclaimsCommBridge.EmdeonMedical, EclaimsCommBridge.EdsMedical) || Plugins.HookMethod(null, "FormClearinghouseEdit.AllowFeature_ERA", param))
{
listBoxEraBehavior.Enabled = true;
checkIsClaimExportAllowed.Enabled = true;
checkIsClaimExportAllowed.Checked = ClearinghouseCur.IsClaimExportAllowed
}

2. In FillFields() – Plugins.HookMethod: FormClearinghouseEdit.AllowFeature_Attachments
(Remove comment since Clearinghouses with Hook can use Attachments)//Uncheck and disable if not ClaimConnect as this checkbox only applies to ClaimConnect.
checkSaveDXC.Checked = PrefC.GetBool(PrefName.SaveDXCAttachments);
if (ClearinghouseCur.CommBridge != EclaimsCommBridge.ClaimConnect && !Plugins.HookMethod(null, "FormClearinghouseEdit.AllowFeature_Attachments", param))
{
checkAllowAttachSend.Enabled = false;
checkAllowAttachSend.Checked = false;
checkSaveDXC.Visible = false;
}
else
{
checkAllowAttachSend.Enabled = true;
checkAllowAttachSend.Checked = ClearinghouseCur.IsAttachmentSendAllowed;
}

OpenDental\Forms\FormInsPlan.cs: OpenDental.FormInsPlan
1. In butGetElectronic_Click() – Plugins.HookMethod: FormInsPlan.Is270Supported
object[] param = new object[] { clearinghouseHq };
if ((clearinghouseHq.CommBridge!=EclaimsCommBridge.ClaimConnect
&& clearinghouseHq.CommBridge!=EclaimsCommBridge.EDS
&& clearinghouseHq.CommBridge!=EclaimsCommBridge.WebMD)
&& clearinghouseHq.Eformat!=ElectronicClaimFormat.Canadian
&& !Plugins.HookMethod(null, "FormInsPlan.Is270Supported", param))
{
(Change Message text since clearinghouse with Hook can use this)MsgBox.Show(this,"So far, eligibility checks only work with ClaimConnect, EDS, WebMD (Emdeon Dental), and CDAnet.");
return;
}

OpenDentBusiness\Data Interface\Clearinghouse.cs: OpenDentBusiness.Clearinghouses
1. In RetrieveReports() – Plugins.HookMethod: Clearinghouses.RetrieveReports
else
{
StringBuilder errorMessage = new StringBuilder();
object[] param = new object[] { clearinghouseClin, errorMessage, progress };
if (!Plugins.HookMethod(null, "Clearinghouses.RetrieveReports", param) && errorMessage.ToString().Length > 0)
{
return OpenDentBusiness.Lans.g("FormClaimReports", "Error retrieving.") + "\r\n" + errorMessage.ToString();
}
}


OpenDentBusiness\Eclaims\Eclaims.cs: OpenDentBusiness.Eclaims.Eclaims
1. In SendBatch() – Plugins.HookMethod: Eclaims.SendBatch
else
{
StringBuilder errorMessage = new StringBuilder();
object[] param = new object[] { clearinghouseClin, messageText, errorMessage };
if (!Plugins.HookMethod(null, "Eclaims.SendBatch", param) && errorMessage.ToString().Length > 0)
{
MessageBox.Show(Lans.g("Eclaims", "Error sending.") + "\r\n" + errorMessage.ToString());
if (clearinghouseClin.IsClaimExportAllowed)
//if a file was written out, delete it on fail
x837Controller.Rollback(clearinghouseClin, batchNum);
return;
}
}

//----------------------------------------------------------------------------------------
//finally, mark the claims sent. (only if not Canadian)
EtransType etype=EtransType.ClaimSent;
if(clearinghouseClin.Eformat==ElectronicClaimFormat.Renaissance){
etype=EtransType.Claim_Ren;
}

OpenDentBusiness\Eclaims\x270Controller.cs: OpenDentBusiness.x270Controller
1. In TryInsVerifyRequest() – Plugins.HookMethod: FormInsPlan.Is270Supported
object[] param = new object[] { clearinghouseHq };
if (!ListTools.In(clearinghouseHq.CommBridge,EclaimsCommBridge.ClaimConnect, EclaimsCommBridge.EDS,EclaimsCommBridge.WebMD) &&
!Plugins.HookMethod(null, "FormInsPlan.Is270Supported", param))

{
(Change message text since clearinghouse with Hook can use this) error="So far, eligibility checks only work with ClaimConnect, EDS, WebMD (Emdeon Dental), and CDAnet.";
return null;
}
2. In RequestBenefits() – Plugins.HookMethod: x270Controller.RequestBenefits
try {
if(!String.IsNullOrWhiteSpace(FakeResponseOverride271)) {
x12response=FakeResponseOverride271;
}
else if(clearinghouseClin.CommBridge==EclaimsCommBridge.ClaimConnect) {
x12response=ClaimConnect.Benefits270(clearinghouseClin,x12message);
}
else if(clearinghouseClin.CommBridge==EclaimsCommBridge.EDS) {
x12response=EDS.Benefits270(clearinghouseClin,x12message,out etransHtml);
}
else if(clearinghouseClin.CommBridge==EclaimsCommBridge.WebMD) {
x12response=WebMD.Benefits270(clearinghouseClin,x12message);
}
else
{
StringBuilder result_x12Message = new StringBuilder();
object[] param = new object[] { clearinghouseClin, x12message, result_x12Message };
if (Plugins.HookMethod(null, "x270Controller.RequestBenefits", param))
x12response = result_x12Message.ToString();
}

}
Shari Walker
V.P. of Development
ExtraDent - Development
ShariWalker@ExtraDent.com
Phone: (866) 886.5113 ext. 301
Mobile: (317) 432.9326
www.extradent.com

Post Reply