Welcome to SurveyVitals Setup

With over 35 data integrations and a dedicated implementation team to guide you through the process from start to finish we aim to make setup a breeze.

You and the dedicated team will accomplish two milestones during onboarding:
  1. Define your organization, users, and locations.
  2. Hook up patient data to send surveys.

1. Defining your Organization, Users & Providers

In order to customize the solution for your organization and team we need to know a bit about them.


  • Organizational Hierarchy
  • We want to understand your organization so we can help you report at each level appropriately. Sample Hierarchy


  • Access Level & Contact Info
  • Please tell us about those users who should have access to the survey response data. We’ll also ask what level of access and what level of reporting should be associated.

Provider Details

  • Healthcare Provider Details
  • We’ll need to know for whom you will be running surveys. Download the template to fill in basic information for your providers.

2. Mapping your Patient Data and Reporting Divisions

The foundation of quality feedback starts with a list of your patients exported from your data system. Utilizing an export file from a patient information software, for example an EMR, EHR, or Billing program, our processing engine uses either a qualified email or phone number to survey your patients. In order to get timely results we recommend an after-visit delivery timeline of, optimally, 24 hours and not longer than 14 days.

Required Data

  • Patient Data Fields
  • Minimal patient information is required to run surveys. Patient cases with contact information, provider NPI, and a few other items are all that are needed.

Sample Data Files

  • CSV, XLS & XML
  • Check out the data files below. When you’re ready we’re happy to help validate.

Location Mapping

  • Reporting Variables
  • Learn about linking your exportable location variables to the reporting structure defined in step 1 “structure.”

Patient Data Requirements

Required Fields Optional Fields Care Team Fields ASC
Patient First Name
Patient Last Name
Patient Date of Birth
Patient Phone
Patient Email
Patient Zip
Provider NPI 2nd Provider NPI 3rd Provider NPI
Provider First Name 2nd Provider First Name 3rd Provider First Name
Provider Last Name 2nd Provider Last Name 3rd Provider Last Name
Location Code If multiple locations
Date of Visit
Case #
CPT Code
ASA Code
Preferred Language
If you run a Care Team (Anesthesiologist/CRNA or AA team care) or an ASC model and can provide the data for all 3 provider types (Anesthesiologist/CRNA or AA/Surgeon) the highlighted fields above will be required to run surveys.

Requested Date Formatting

  • MM/DD/YYYY with separators, forward slash or hyphen
  • DD/MM/YYYY with separators, forward slash or hyphen
  • YYYY/MM/DD with separators, forward slash or hyphen
  • YYYY/DD/MM with separators, forward slash or hyphen
  • MMDDYYYY without separators requires leading zero
  • DDMMYYYY without separators requires leading zero
  • YYYYMMDD without separators requires leading zero
  • YYYYDDMM without separators requires leading zero

Data Upload Options

Once your data has been validated and mapped we’ll dive into uploading. There are two options for upload:

  1. Manual upload by logging-in as an administrative user and navigating to the upload & status page.
  2. Webservice automated upload. Web-service is preferred for consistent timely submission of data which results in consistent, timely survey administration and, in turn, better cognitive recall and higher response rates. Once your account has been created and data mapped to the system you will have API keys available to start this process. Please see documentation on this upload method below.

Webservice Documentation

API/Postman Example

The SurveyVitals API allows for automated encrypted upload of your patient data files. The API keys, URL, and additional authentication information is available once the account has been created. Example scripts can be found within the tabs above including open source options that leverage encrypted methods.
	"info": {
		"_postman_id": "89d64b50-6a71-4812-a1c3-4645529fede9",
		"name": "API UPLOAD",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
	"item": [
			"name": "SurveyVitals API File upload Postman example",
			"request": {
				"auth": {
					"type": "basic",
					"basic": [
							"key": "username",
							"value": "\"ORG KEY HERE\"",
							"type": "string"
							"key": "password",
							"value": "",
							"type": "string"
				"method": "POST",
				"header": [],
				"body": {
					"mode": "formdata",
					"formdata": [
							"key": "file",
							"type": "file",
							"src": []
							"key": "profileKey",
							"value": "\"Get This From SurveyVitals\"",
							"type": "text"
							"key": "test",
							"value": "1",
							"type": "text",
							"disabled": true
				"url": {
					"raw": "https://surveyvitals.com/api/api-upload.php",
					"protocol": "https",
					"host": [
					"path": [
			"response": []
Please find the following example showing how to send to the SurveyVitals API through HTTPS POST. Using a library like curl is an efficient option for sending your patient data file through encrypted transfer. Please use your preferred method of sending through HTTPS POST while ensuring encryption at transfer (SSL/TLS), proper credentials and api keys, and by using the proper API URL found within the SurveyVitals documentation.

Step 1: Download

  • Download curl. Make sure to get the binary that corresponds with the operating system from which the files will be sent, and that it includes SSL.
  • a. Unzip to the location you will be exporting your patient file to. (e.g., C:/users/you/desktop/SurveyVitals_Export/)
  • b. Execute curl from a command prompt. if you come across an error “mszcr100.dll” not found, you may need to install a Visual C++ 2010 redistributable, found here.
  • c. Re-execute curl if you had to install the Visual C++ redistributable (a successful execution will display no errors)
  • d. Download SSL component of curl: cacert.pem Note: be sure this is saved as a cacert.pem and not another file type.

Step 2: Sample Script

						echo off
						FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
						FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
						FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
						SET date=%yyyy%%mm%%dd%
						echo on
						/*curl location*/ ^
						-u "/*Organization Key*/:/*API key*/" ^
						-ssl --cacert "/*cacert.pem location*/" ^
						-F "pfile=@/*file with %date%*/" ^
						-F "test=1" -F "profileKey=/*profile id*/" ^
						https://surveyvitals.com/api/api-upload.php ^
						@echo %DATE%>> /*append to log file location*/
						echo on *** Date: %DATE:/=-% and Time:%TIME::=-% ***\nEnd Entry >> /*append to log file location*/
Note that when using curl, you must include the `@` character before the filename to attach the file to the request for processing.
  • Next, use the sample script above to get started.
  • a. Create a new text document.
  • b. Copy the above text and paste it in.
  • c. Replace the above variables (everything that is in between /* and */, including those delimiters) with their descriptions. (see below)
  • d. Save as a batch file, i.e., “api.bat”. Make sure in the “save as” menu to save as type “All Files(*.*)” instead of “Text Documents(*.txt)”.

Append Date

This portion of the code is used to add a date to the file name. If you’re not running the script on a scheduled cron job or task, you can safely remove lines 1-7. If you are, update the date format to reflect the naming convention you’ll be using in your automatic export. For instance, the above format, %yyyy%%mm%%dd% will produce a four digit year, two digit month, then two digit day, such as 20120804. This date will always be the date that the script is run. %yyyy%-%mm%-%dd% would produce a date similar to 2011-04-15.
						echo off
						FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
						FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
						FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
						SET date=%yyyy%%mm%%dd%
						echo on

Script Changes

  • a. Edit the path to where you saved curl. It is recommended to use an absolute path, especially if this script will be run outside of the curl folder.
  • b. Enter the Organization Key And the API Key, which can be found above.
  • c. Edit the path to your location for the cacert.pem file.
  • d. Edit the path to the generated file. Note, it is important to prepend the filename with @ so that curl knows to attach the file for transfer. Also, if your generated file includes a date, you can insert the date varabiable into the filename. For instance, -F “pfile=@C:\file\location\file-%date%.xls”.
  • e. Insert a profile ID from one of the profiles displayed above.
  • f. Edit path to a log file if desired. The response, in JSON format, returned from the API allows you to monitor the status of the upload. Although the status is a simple success or failure at this point, more verbose messages are planned for future development.
  • g. Save file, close and then double click the API.bat file we created earlier. If all went well, the log file at the end of the command should now be populated with a variable dump of POST and FILES. If you get this message, then you are most likely good to go on a file transfer. If not, re-read these directions and ensure that every step was followed closely.
  • h. Be sure to specify “-F test=1” so that the file is not actually processed! When you want to actually process a file you should omit the “-F test=1” altogether.

Final example

						echo off
						FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
						FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
						FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
						SET date=%yyyy%%mm%%dd%
						echo on
						"C:\curl\curl.exe" ^
						-u ":" ^
						-ssl ^
						--cacert "C:\curl\cacert.pem" ^
						-F "pfile=@C:\curl\file-%date%.xls" ^
						-F "test=1" ^
						-F "profileKey=13" ^
						https://surveyvitals.com/api/api-upload.php ^
						@echo %DATE%>> /*append to log file location*/
						echo on *** Date: %DATE:/=-% and Time:%TIME::=-% ***\nEnd Entry >> /*append to log file location*/

Sending with PHP

Note this requires you to be running a server with php installed. If unsure the first example works in nearly all environments.
                        * API Test Upload
                        * Upload a file using curl over SSL.
                        $organizationKey = 'XXXXX'; // Insert Organization Key here
                        $apiKey = 'YYYYYYYYYYY'; // Insert API Key here
                        $profileKey = ‘ZZZZZZZZ’; // Insert Profile Key here
                        $userPwd = $organizationKey.':'.$apiKey;
                        $remoteUrl  = 'https://surveyvitals.com/api/api-upload.php';
                        $postFields = array(
                        'test'  => 1, // Omit this to actually process the file
                        'pfile' => '@/path/to/myfile',  // Insert the path to the data file here
                        'profileKey' => $profileKey
                        $ch = curl_init();
                        echo 'initializing curl';
                        curl_setopt($ch, CURLOPT_URL, $remoteUrl);
                        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
                        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
                        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: close'));
                        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
                        curl_setopt($ch, CURLOPT_HEADER, 0);
                        curl_setopt($ch, CURLOPT_VERBOSE, 1); // Uncomment to display connection details
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                        curl_setopt($ch, CURLOPT_POST, true);
                        curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
                        curl_setopt($ch, CURLOPT_USERPWD, $userPwd);
                        $response = curl_exec($ch);
                        var_dump($response); // Display the results of the transfer
                        if (curl_errno($ch))
                            echo curl_error($ch);

Training & Final Steps

Your dedicated support team is here to support you at any point of the process. If you have not yet had your onboarding meeting and are ready to do so please Email Us! If you are ready to upload the information defined above please start by clicking the button below.

Get Started!