If you bill insurances, and are submitting more than a few claims a month, connecting an Open Practice Solutions (OPS) account to your Cerbo build can make insurance billing much easier (especially if you have a biller). OPS (sometimes called OPM) is a billing platform that comes with its own clearinghouse and tools to easily submit, track, and manage claims generated by the office.

Set Up:

To get an account set up, just go to https://www.openpractice.net/contact/ and contact OPS. They can set up a demo and activate an account. Once you've established an account with them, OPS will contact Cerbo directly to get the account integrated.

How it works:

The integration between Cerbo and Open Practice Solutions is a one-way sync that allows Cerbo to push data into OPS - whenever a patient's demographics are edited (name, date of birth, phone numbers, address, insurance company, etc), Cerbo will update the patient demographics in OPS, and whenever an encounter note is signed it will create a complete/coded claim in OPS within a minute of the signing event.

There are a few things to keep in mind about the integration:

  • Our integration is one-way (updates in our system automatically get pushed to OPS but not the reverse - demographic changes should be entered directly into Cerbo for this reason.
  • There are a few "triggers" that tell Cerbo when to push data to OPS:
    • When a patient created or deleted (demographics will push)
    • When a patient's demographics are edited (i.e. patient info block is saved)  (demographics will push) 
    • When an encounter note signed with charges that (A) have "add to insurance invoice" checked and (B) have a value in the billing-code field; and (C) the note must have at least one valid diagnostic code in the assessments block.
      • If (A) the bill-to-insurance checkbox is unchecked or (B) the billing code field is left blank, the charge will NOT sync, and if there are no valid charges it will not sync at all. The billing code does not have to be a valid CPT code, as OPS will allow you to map custom/proprietary codes to CPT automatically.

        From the Add Charge window, it is suggested to leave the default "Insurance" selection from this drop down menu versus selecting the patient's insurance (if that is on file). OPS will handle the primary/secondary piece on their end.

      • If it does sync, it also goes over with associated DX codes (everything from the note unless provider specified in the charge window which diagnostic codes are associated with a specific procedure)
    • You can manually trigger a claim to sync to OPS if you're inside the note and go to My Links use the option to manually sync the encounter to OPS. This is useful if you need to send the claim before the provider is ready to sign the note.
  • OPS has a few options of how to handle "duplicate submission" which can happen if you manually sync a claim and then subsequently sign the note or if you unsigned an already synced claim and re-sign it. In these cases OPS will receive the same claim more than once, but there are three options for how to handle these duplicates:
    • Allow OPS to generate a second claim and you can dismiss it in OPS if you want to remove it
    • Non-Strict de-duplication: OPS would reject based on DOS, provider and facility, Primary CPT and Primary DX, if these match the new claim is rejected (ignored) - basically, if the *primary* claims data looks the same it will be rejected as a duplicate
    • Strict de-duplication: If all the details of the new claim match an existing claim, ignore it.
    • Based on your preferences, you just need to contact OPS and request which approach you'd like them to use when they see new claims being sent over.
  • For charges that will be synced with OPS, we strongly encourage clients to set the charge amount to $0.00 
    • OPS can automatically adjust the price to the patient/insurance specific price
    • Then your clinic/biller doesn't need to adjust in our system to balance out the patient's billing total
    • For reporting purposes you would have a clean division between insurance claims (reported in OPS) and cash transactions (which would be reported in Cerbo)


In general, the sync works quite well, but there are a couple of things that can come up that you should be aware of:

  • Merging duplicate patients: One spot where practices might have trouble is with patient merges. IF there are duplicate charts on our side then there will be duplicate charts on their side. An issue can arise of users aren't careful when merging these charts. If Cerbo patient #30 is merged with patient #45, leaving #30 as the "final" copy (and archiving #45) and they them go into OPS (who also has a merge function) and merges the opposite direction - so they merge the chart associated with our #30 into the chart associated with our #45, leaving the #45 chart remaining in OPS, then when we send charges over (DFT HL7 messages) their system won't know who to associate them with because we're saying "Patient #30" and on their end, patient #30 no longer exists.

    Users should be careful when merging to make sure that they're merging consistently between the two platforms to make sure that the patients end up with the same Cerbo MRN in both systems. However, if you make a mistake just contact support and the Cerbo team should be able to straighten it out.

  • If a claim isn't pushing over, the most likely cause is that 
    • it is either missing a diagnosis (ICD10 code), or the added code after the note was signed
    • it is missing at least one charge that is checked to be insurance billed AND has a billing code
    • it *was* missing a qualifying charge (see previous bullet) at the time it was signed/synched