Building a HIPAA compliant referral form, e-sign process, and billing for telehealth counseling in one month with no code.
I recently had an extremely tight deadline for a client. The telehealth counseling organization needed a new system for its clients that provided the following:
- Referral form for patients
- E-sign functionality for consent documents
- Digital billing submission capabilities following patient services
They needed a completed solution in a month. Building from scratch, therefore, wasn’t a great option. I chose Formstack and was able to roll out the new functionality in a month.
Digital & HIPPA Needs in Healthcare
I built this solution for a healthcare counseling unit, so HIPAA complaint forms came into play. Formstack covers this, making my development process much easier.
I needed to create an intake form that could handle any number of entry paths:
- Someone at a hospital referring a patient
- Someone at a school referring a patient
- A parent who found the website and self-referred their child
- An adult who found the website and referred themselves
- A parent completing a referral someone else (referrer) starts
I then needed a way for a counselor to note who they met with and provide the proper billing codes to properly track revenue.
The Finished Solution
Formstack forms handled all of my intake needs on one form with rules that displayed or hid the pages and fields needed for the person who was currently filling out the form. If a hospital or school referred a patient, an email alert sent the parent a link to click and took them to the prefilled form with all of the info the referrer provided. It also gave them a chance to correct anything that was wrong and fill in the information the referrer didn’t provide.
I set up my form with the custom referral object as the parent object and then contacts for the patient and referrer. Formstack can look for a matching contact in Salesforce to prevent duplicates by checking a box. I didn’t have an account on my form; instead, I decided to use text boxes and have a flow to go find and/or create the account. This gives me the option to add an alias field later, where known names can be filled in to help prevent dupes (Kingman High School, Kingman HS, etc.).
The process in a nutshell:
- The form gets submitted by someone.
- Formstack creates a referral (or updates an existing one, depending on who you are and where in the process it is).
- Formstack creates and/or updates the contacts.
- Process builder launches flow(s).
- Flow finds or creates accounts.
- Flow associates the contacts with the accounts it created/found.
- I have a handful of accounts to create — schools, school districts, hospitals. I do the same thing for parents — I just collect text info and then use flow to go find or create them.
Documents are super-duper easy with Formstack.
I’ve used other programs that make you pull out your hair. With Formstack, you enter a tag and then set up a map in Salesforce that links the field to the tag. That’s it.
E-signature tags are created right in the document program, so they are simple as well. Formstack has its own e-sig module, and that’s what I used. The form comes in with a field pre-set saying it’s ready to be signed, and the process builder chooses the mapping. The code included with the AppExchange document application sends it out.
I had two mappings — one for minors and one for adults — to ensure I put the right information in the right fields. Signing is easy, just a few clicks. Once complete, the document is delivered onto the record in Salesforce (notes & attachments or files) and emailed to the signer. When that document is delivered back to Salesforce, it also has the ability to set field values via JSON in the docs delivery method. In my case, I’m updating a status to let someone know the patient is ready to be scheduled.
Scheduling is a process that happens outside of Salesforce right now. Onto billing.
Flow does the magic
This process requires a clinician to fill in the patient’s name and referral number (sent in an email alert from the last step), their own name, and CPT code(s) for the services provided. (CPT codes are universal billing codes for insurances.)
Since we’re not requiring any authentication, I chose to make a staging object (with related codes) where records from this form go, and then I process them to the session and billing line items on the referral with the flow. A community where users authenticate and have a list of their patients could also be a good option, but this isn’t an immediate need. Formstack also works in Community.
I had to build a lot of error handling, loops, and decisions into the flow:
- I have to double-check that the referral number exists (in case they enter 90000 instead of 9000).
- I have to double-check that the referral actually has a clinician. (It should since that is how they are scheduled, but always anticipate errors.)
- The referral number has to match the patient’s name.
- The clinician’s name has to match the name on the referral (to ensure the billing info doesn’t end up in the wrong place).
- If all of this works and the session gets created, we publish the number of codes we took in from the form and the number of billing line items that were created. A formal tells us if they match.
What happens when one of these things doesn’t match? The original record gets updated with an error message, and someone needs to go fix and reprocess it. O,r in the case where the session actually gets created, the formula of line items in vs. line items out indicates we need to double-check some stuff.
I made a second flow with a button to reprocess the record in case something went wrong (misspelled names, incorrect referral numbers, missing insurance, etc.).
Each insurance pays its own rate for each CPT code, so the flow gets a bit complex going to find each code, finding who the patient’s insurance is, and the rate junction for the insurance/code combo. It creates these as line items for each session tied to the referral. There are many loops and assignments in this flow, as well.
Declarative Lookup Rollup Summaries does the math to see the total $$ for each session, as well as the total $$ for each referral (someone might be discharged and referred back in later on, so we keep those referrals/amounts separate). Right now, a scheduled report handles anything that might have generated an error on the staging object for a human to go see what is wrong and reprocess it after it’s fixed.
Going No-Code in Salesforce with Formstack
There was a learning curve to get all the rules worked out on my complex form, but it wasn’t too bad. Documents and e-sign were easy. There were a couple of things in the form that took some extra work to deploy, but it was pretty straight forward.
Any process you have that collects info from users that has any rules associated would be a great use case for Formstack. You can also integrate with payment processors and take payment on forms. I recommend their docs and sign products as well — they were just as easy to use and worked well. If you don’t need a full-out document sign, there are some simple signs and/or initials you can even add right into the forms.
My team and I are so impressed with the solution that we’ve become Formstack partners. If you’re looking for a form or digital document solution, give us a call, and we’d be happy to discuss your options and point you in the right direction.