curl --request POST \
--url https://api.staging.scan.com/api/v2/referral_orders \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"referral_order": {
"order_form": "<string>",
"payment_type": "pi",
"physician_notes": "<string>",
"referred_by": "<string>",
"state_brand_abbreviation": "<string>",
"preferred_location": "<string>",
"practice_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"law_firm_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"coordination_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"patient_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
}
'require 'uri'
require 'net/http'
url = URI("https://api.staging.scan.com/api/v2/referral_orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"referral_order\": {\n \"order_form\": \"<string>\",\n \"payment_type\": \"pi\",\n \"physician_notes\": \"<string>\",\n \"referred_by\": \"<string>\",\n \"state_brand_abbreviation\": \"<string>\",\n \"preferred_location\": \"<string>\",\n \"practice_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"law_firm_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"coordination_group_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"patient_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n}"
response = http.request(request)
puts response.read_bodyimport requests
url = "https://api.staging.scan.com/api/v2/referral_orders"
payload = { "referral_order": {
"order_form": "<string>",
"payment_type": "pi",
"physician_notes": "<string>",
"referred_by": "<string>",
"state_brand_abbreviation": "<string>",
"preferred_location": "<string>",
"practice_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"law_firm_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"coordination_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"patient_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
referral_order: {
order_form: '<string>',
payment_type: 'pi',
physician_notes: '<string>',
referred_by: '<string>',
state_brand_abbreviation: '<string>',
preferred_location: '<string>',
practice_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
law_firm_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
coordination_group_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
patient_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
}
})
};
fetch('https://api.staging.scan.com/api/v2/referral_orders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.staging.scan.com/api/v2/referral_orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'referral_order' => [
'order_form' => '<string>',
'payment_type' => 'pi',
'physician_notes' => '<string>',
'referred_by' => '<string>',
'state_brand_abbreviation' => '<string>',
'preferred_location' => '<string>',
'practice_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'law_firm_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'coordination_group_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'patient_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.staging.scan.com/api/v2/referral_orders"
payload := strings.NewReader("{\n \"referral_order\": {\n \"order_form\": \"<string>\",\n \"payment_type\": \"pi\",\n \"physician_notes\": \"<string>\",\n \"referred_by\": \"<string>\",\n \"state_brand_abbreviation\": \"<string>\",\n \"preferred_location\": \"<string>\",\n \"practice_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"law_firm_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"coordination_group_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"patient_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "11111111-1111-1111-1111-111111111111",
"reference": "1234567890",
"status": "pending",
"visits": [],
"referring_provider": "Dr. Jane Smith",
"provider": {
"id": "11111111-1111-1111-1111-111111111111",
"name": "Dr. Jane Smith",
"npi": "1234567890"
},
"law_firm": {
"id": "11111111-1111-1111-1111-111111111111",
"name": "Acme LLP"
},
"practice": {
"id": "11111111-1111-1111-1111-111111111111",
"name": "Peachtree Family Practice"
},
"icd10_codes": [],
"patient": {
"id": "11111111-1111-1111-1111-111111111111",
"identifier": {
"system": "https://scan.com/fhir/sid/patient-id",
"value": "11111111-1111-1111-1111-111111111111"
},
"name": "Alex Patient",
"first_name": "Alex",
"last_name": "Patient",
"date_of_birth": "05/21/1988",
"date_of_birth_iso": "1988-05-21",
"email": "[email protected]",
"phone_number": "5551234567",
"gender": "male",
"address_line_1": "123 Main St",
"city": "Anytown",
"state": "GA",
"zip_code": "30303"
}
}Submits an order form referral
Creates a referral from an uploaded order form, sent as a base64 data URL.
Use this endpoint when you have the order document but have not broken it
down into visits and orders yourself. Scan reads the document after submit
and extracts the procedures from it, so the visits on the referral are
populated asynchronously rather than in this response. Poll
GET /api/v2/referrals/{id} or subscribe to the status webhook to see them.
If you already have the modality, body part, and contrast structured, use
POST /api/v2/referrals instead.
curl --request POST \
--url https://api.staging.scan.com/api/v2/referral_orders \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"referral_order": {
"order_form": "<string>",
"payment_type": "pi",
"physician_notes": "<string>",
"referred_by": "<string>",
"state_brand_abbreviation": "<string>",
"preferred_location": "<string>",
"practice_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"law_firm_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"coordination_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"patient_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
}
'require 'uri'
require 'net/http'
url = URI("https://api.staging.scan.com/api/v2/referral_orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"referral_order\": {\n \"order_form\": \"<string>\",\n \"payment_type\": \"pi\",\n \"physician_notes\": \"<string>\",\n \"referred_by\": \"<string>\",\n \"state_brand_abbreviation\": \"<string>\",\n \"preferred_location\": \"<string>\",\n \"practice_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"law_firm_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"coordination_group_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"patient_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n}"
response = http.request(request)
puts response.read_bodyimport requests
url = "https://api.staging.scan.com/api/v2/referral_orders"
payload = { "referral_order": {
"order_form": "<string>",
"payment_type": "pi",
"physician_notes": "<string>",
"referred_by": "<string>",
"state_brand_abbreviation": "<string>",
"preferred_location": "<string>",
"practice_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"law_firm_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"coordination_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"patient_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
referral_order: {
order_form: '<string>',
payment_type: 'pi',
physician_notes: '<string>',
referred_by: '<string>',
state_brand_abbreviation: '<string>',
preferred_location: '<string>',
practice_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
law_firm_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
coordination_group_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
patient_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
}
})
};
fetch('https://api.staging.scan.com/api/v2/referral_orders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.staging.scan.com/api/v2/referral_orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'referral_order' => [
'order_form' => '<string>',
'payment_type' => 'pi',
'physician_notes' => '<string>',
'referred_by' => '<string>',
'state_brand_abbreviation' => '<string>',
'preferred_location' => '<string>',
'practice_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'law_firm_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'coordination_group_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'patient_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.staging.scan.com/api/v2/referral_orders"
payload := strings.NewReader("{\n \"referral_order\": {\n \"order_form\": \"<string>\",\n \"payment_type\": \"pi\",\n \"physician_notes\": \"<string>\",\n \"referred_by\": \"<string>\",\n \"state_brand_abbreviation\": \"<string>\",\n \"preferred_location\": \"<string>\",\n \"practice_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"law_firm_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"coordination_group_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"patient_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "11111111-1111-1111-1111-111111111111",
"reference": "1234567890",
"status": "pending",
"visits": [],
"referring_provider": "Dr. Jane Smith",
"provider": {
"id": "11111111-1111-1111-1111-111111111111",
"name": "Dr. Jane Smith",
"npi": "1234567890"
},
"law_firm": {
"id": "11111111-1111-1111-1111-111111111111",
"name": "Acme LLP"
},
"practice": {
"id": "11111111-1111-1111-1111-111111111111",
"name": "Peachtree Family Practice"
},
"icd10_codes": [],
"patient": {
"id": "11111111-1111-1111-1111-111111111111",
"identifier": {
"system": "https://scan.com/fhir/sid/patient-id",
"value": "11111111-1111-1111-1111-111111111111"
},
"name": "Alex Patient",
"first_name": "Alex",
"last_name": "Patient",
"date_of_birth": "05/21/1988",
"date_of_birth_iso": "1988-05-21",
"email": "[email protected]",
"phone_number": "5551234567",
"gender": "male",
"address_line_1": "123 Main St",
"city": "Anytown",
"state": "GA",
"zip_code": "30303"
}
}Authorizations
Authorization: Bearer <api_token>. Sandbox tokens come from Get API keys
and allow 2,000 successful requests or 7 days. Failed 4xx/5xx responses do
not consume the allowance. Production tokens are issued from the group's
API access tab.
Body
Show child attributes
Show child attributes
Response
referral order submitted

