Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Introduction to VSee Clinic API
VSee Clinic API allow developer to make their own interface while still having full VSee Clinic and VSee Call capability.
Common Workflows
Example Set up
Let's take a look at a typical example set up
Key | Example | Note |
---|---|---|
Clinic Portal URL |
| This is your original portal |
Account code |
| Your VSee Clinic Account Code |
API Key |
| The key generated under Developers menu |
API Secret |
| The secret generated under Developers menu |
API Endpoint |
| To be advised by VSee Clinic Team |
Clinic Portal URL |
| To be advised by VSee Clinic Team |
Waiting Room URL |
| To be advised by VSee Clinic Team |
User Code |
| This is anything that you can formular and act as a way for VSee Clinic to identify the your user |
Patient Side Integration
Prerequisites: I already have a portal for patients with a way to sign up and login. I want to extend the functionality by letting them proceed to VSee Clinic without a need of additional sign up / login.
Use case #1: Log patient in and take them to VSee Clinic's patient dashboard
Step 1: Obtain patient access token from POST /users/sso
API call
The API will return you the token (data.token.token) look like this 66bcd0acff324e8a44992d9596b5d361
.
Step 2: Redirect the user to your VSee Clinic page
You need to provide the user with a button or link to redirect to VSee Clinic. The URL will follow this pattern
{portal_base_url}auth?sso_token={token}&next={next_url}
e.g
https://vclinic.vseepreview.com/vc/next/auth?sso_token=66bcd0acff324e8a44992d9596b5d361&next=/u/clinic
This will log user in, then redirect user to
https://vclinic.vseepreview.com/vc/next/u/clinic
Additional options: - disable_navigation: 1 - disable all email communication
e.g
https://vclinic.vseepreview.com/vc/next/auth?sso_token=66bcd0acff324e8a44992d9596b5d361&next=/u/clinic&disable_navigation=1
Use case #2: Log Patient In using SSO Token and Start a Video Session
Step 1: Obtain patient access token from POST /users/sso
API call
The API will return you the token (data.token.token) look like this 66bcd0acff324e8a44992d9596b5d361
. User's ID (data.id
) will also be used as member_id
later in Step 3.
Step 2: Create intake object via POST /intakes
API
Use the SSO token from Step 1 in the X-ApiToken
header field. You will get an intake ID in the response (data.id
), e.g. 61165a8e-d8cc-47da-bd8e-597d64457b1f
Step 3: Create a walkin visit via POST /visits/add_walkin
API
Use SSO token from Step 1 in the X-ApiToken
header field and intake_id from Step 2. You will get a visit ID in the response (data.id
, e.g. 67258
Step 4: Redirect the patient into the video call/chat page:
https://vclinic.vseepreview.com/vc/next/auth?sso_token=9fa6239291aa27d9528416cdcafbd6a5&next=/visits/inbrowser_calling/67258
Use case #3: Log Patient In using SSO Token and Schedule An Appointment
Step 1: Obtain patient access token from POST /users/sso
API call
The API will return you the token (data.token.token) look like this 66bcd0acff324e8a44992d9596b5d361
. User's ID (data.id
will also be used as member_id later in Step 3.
Step 2: Create intake object via POST /intakes
API
Use the SSO token from Step 1 in the X-ApiToken header field. You will get an intake ID in the response (data.id
), e.g. 61165a8e-d8cc-47da-bd8e-597d64457b1f
Step 3: Create a scheduled appointment visit via POST /visits
API
Use the SSO token from Step 1 in the X-ApiToken header field and intake_id from Step 2. You will get a visit ID in the response (data.id
) e.g. 67258
If your clinic is configured to use one time appointment links then the visit object will also contain data.one_time_link_token
, e.g. f7gybzjd9o
You can build a link using the format below and send it to the patient:
https://vclinic.vseepreview.com/vc/next/members/appointment/67258?token= f7gybzjd9o
Provider Side Integration
Use Case #1: Provider Accessing Web Dashboard using SSO Token
Usecase: I already have a way to sign up, manage my provider on my own providers' portal and now I want them to go to VSee Clinic for additional telehealth functionality.
Here is how you log in and redirect your provider using access token.
Step 1: Obtain provider access token from POST /users/sso
API call
The API will return you the token (data.token.token
) look like this 66bcd0acff324e8a44992d9596b5d361
.
Step 2: Redirect the provider to their dashboard
You need to provide the user with a button or link to redirect to VSee Clinic. URL will follow this pattern
{portal_base_url}auth?sso_token={token}&next={next_url}
e.g https://vclinic.vseepreview.com/vc/next/auth?sso_token=66bcd0acff324e8a44992d9596b5d361&next=/providers/dashboard
This will log user in, then redirect user to https://vclinic.vseepreview.com/vc/next/providers/dashboard
Use Case #2: Create a Provider Account With a Room
Usecase: I already have a way to sign up, manage my provider on my own providers' portal and now I want them to go to VSee Clinic for additional telehealth functionality. My portal has multiple providers, each provider should have their own Waiting Room in VSee Clinic to accept their own pool of patients.
Step 1: Obtain provider access token from POST /users/sso
API call
The API will return you the token (data.token.token) look like this 66bcd0acff324e8a44992d9596b5d361
.
Step 2: Create a waiting room in the clinic via POST /rooms
API call
The API will return you the room ID and room code (data.id
, data.code
). If the room already exists, it will return error 400.
Step 3: Assign the newly created provider to the waiting room via POST /users/:id/rooms
API call
Step 4: Redirect the provider to their dashboard. The provider will be assigned to a room already and be able to see patients from that room.
You need to provide the user with a button or link to redirect to VSee Clinic. URL will follow this pattern
{portal_base_url}auth?sso_token={token}&next={next_url}
e.g https://vclinic.vseepreview.com/vc/next/auth?sso_token=66bcd0acff324e8a44992d9596b5d361&next=/providers/dashboard
This will log user in, then redirect user to https://vclinic.vseepreview.com/vc/next/providers/dashboard
API Documentation
API Setup
API Endpoints
Production:
https://api.vsee.me/api_v3/
Staging:
https://api.vseepreview.com/vc/next/api_v3/
Note: Your clinic setting on Production environment is not available on Staging environment unless set up by VSee Clinic Support team.
API Parameters
Parameter | Location | Type | Description |
---|---|---|---|
|
|
| If the app knows the account code, it should pass it in this header for every request. Otherwise leave blank |
|
|
| Once the user logs in, the app gets the token and should pass it for every request. |
|
|
| Wherever there’s user’s :id field in API methods, it will also accept dash (-) as a mapping to the current user. |
API Objects
User Object
(To be completed soon)
Visit Object
status
:
Status Code | Meaning | Description |
---|---|---|
| Pending | Visit was just created |
| Confirmed | Appointment is confirmed |
| In-progress | Visit is in progress |
| Completed | Visit is closed |
| Deleted / Cancelled | Visit is cancelled by patient or provider |
Intake Object
(To be completed soon)
Settings API
GET /settings.json [public access]
Parameters
(None)
Response
Code Block |
---|
curl https://api.vsee.me/api_v3/settings.json { "data": { "visit": { "time": { "max_wait_time": 86400 } } } } |
GET /settings/:path.json [public access]
Parameters
Parameter | Type | Description |
---|---|---|
| String | The path to the settings object. e.g. |
Response
Code Block |
---|
curl https://api.vsee.me/api_v3/settings/visit/time/max_wait_time.json { "data": 86400 } |
Users API
POST /users/sso
Single Sign On for patient and provider.
This is disabled by default, you need to contact admin@vsee.com to request for it.
SSO process will create a user record on VSee side when you first call this API and will map to and return existing user record for further requests.
Parameters
Parameter | Type | Description |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Response
Note: you can use the data.token.token return here to redirect user from your portal to VSee Clinic portal, please see Workflows section.
Guest SSO
Code Block |
---|
curl -X POST -H "X-AccountCode: vclinic" -H "X-ApiKey: vclinic_api_key" -H "Content-Type: multipart/form-data;" -F "first_name=John" -F "last_name=Smith" -F "dob=1990-01-01" -F "type=600" "https://api.vsee.me/api_v3/users/sso.json" -k { "data": { "id": "10008", "code": "57d76ada0bb444f9b3057855ac1f0144", "first_name": "John", "last_name": "Smith", "username": "57d76ad979b843e6973e7855ac1f0144", "vseeid": "conciergedev+57d76ad979b843e6973e7855ac1f0144", "dob": "1990-01-01", "active": true, "tos": false, "subtype": "", "token": { "user_id": "10008", "token": "0437c1ce3b7079906e2ff247aad1adda", "expiry": 1473821786, "refresh_token": { "user_id": "10008", "token": "2693615fd2a46edf13334b3f35580e26", "expiry": 1476327386, "created": 1473735386 } } } } |
Patient SSO
Code Block |
---|
curl -X POST -H "X-AccountCode: vclinic" -H "X-ApiKey: vclinic_api_key" -H "Content-Type: multipart/form-data;" -F "first_name=John" -F "last_name=Smith" -F "code=ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb" -F "type=200" "https://api.vsee.me/api_v3/users/sso.json" -k { "data": { "id": "10008", "code": "ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb", "first_name": "John", "last_name": "Smith", "username": "57d76ad979b843e6973e7855ac1f0144", "vseeid": "conciergedev+57d76ad979b843e6973e7855ac1f0144", "active": true, "tos": false, "subtype": "", "token": { "user_id": "10008", "token": "0437c1ce3b7079906e2ff247aad1adda", "expiry": 1473821786, "refresh_token": { "user_id": "10008", "token": "2693615fd2a46edf13334b3f35580e26", "expiry": 1476327386, "created": 1473735386 } } } } |
Provider SSO
Code Block |
---|
curl -X POST -H "X-AccountCode: vclinic" -H "X-ApiKey: vclinic_api_key" -H "Content-Type: multipart/form-data;" -F "first_name=John" -F "last_name=Provider" -F "code=cd978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb" -F "type=400" "https://api.vsee.me/api_v3/users/sso.json" -k { "data": { "id": "10008", "code": "cd978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb", "first_name": "John", "last_name": "Provider", "username": "57d76ad979b843e6973e7855ac1f0144", "vseeid": "conciergedev+57d76ad979b843e6973e7855ac1f0144", "active": true, "tos": false, "subtype": "", "token": { "user_id": "10008", "token": "0437c1ce3b7079906e2ff247aad1adda", "expiry": 1473821786, "refresh_token": { "user_id": "10008", "token": "2693615fd2a46edf13334b3f35580e26", "expiry": 1476327386, "created": 1473735386 } } } } |
POST /users/login.json [public access]
Log user in and retrieve access token
Notes:
user_type will be member(200), provider(400), …, etc
There is 2 methods for log in
active user
use username and password field
inactive user
user email and email token sent to their email
only after user update their password via API, their status will change to active and can log in via active user log in method above.
Parameters
Parameter | Type | Description |
---|---|---|
|
| (for active user only) |
|
| (for active user only) |
|
| (for non-active user who has not set the password yet) |
|
| (for non-active user who has not set the password yet) |
Response
Note: you can use the token.token return here to redirect user from your portal to VSee Clinic portal, please see Section Web log in using SSO Token.
Code Block |
---|
curl -X POST -d "username=member-201&password=111111" https://api.vsee.me/api_v3/users/login.json curl -X POST -d "email=an+1@vsee.com&email_token=ztpand" https://api.vsee.me/api_v3/users/login.json { "data": { "user_id": "201", "token": "18c31fa10afb6f0857c803eb01a2b392", "expiry": 1473822319, "created": 1473735919, "user_type": "200", "refresh_token": { "user_id": "201", "token": "6338a6e42f407acf39d07a63442efb9d", "expiry": 1476327919, "created": 1473735919 }, "user": { "id": "201", "code": "54bdf165f02c4a0fbaac2603ac1f0144", "first_name": "Lemuel", "last_name": "Eveline (201)test", "username": "member-201", "vseeid": "conciergedev+richard", "dob": "1960-01-01", "email": "an+user1@vsee.com", "gender": 2, "photo": "https://api.vsee.me/api_v3/files/index/app_user/photo/201/?auth_code=e965cbbe29c1fc1e8076ff00733648625bd56ac0", "active": true, "tos": false, "phone": "800-555-5555", "subtype": "", "street_addr": "FIrst str 12", "state": "CA", "city": "San Francisco", "zip": "01234", "pcp_name": "", "pcp_phone": "" } } } |
GET /me
Parameters
Parameter | Type | Description |
---|---|---|
|
|
|
Response
Code Block |
---|
curl -X GET -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" https://api.vsee.me/api_v3/me.json { "data": { "id": "201", "first_name": "An", "last_name": "Nguyen", "username": "member-201", "dob": "1960-01-01", "email": "an+user1@vsee.com", "gender": 2, "active": true, "nationality": "Vietnamese", "tos": false, "photo": "https://api.vsee.me/api_v3/files/57e8c9a2-5c30-4b2c-b9d0-11d6ac1f0144?auth_code=8cd13ff90604b5820d2cfb16859054e9c1c074c4&time=1474873881&size=320x240", } } |
POST /me
Update current user profile
Parameters
Parameter | Type | Description |
---|---|---|
|
| (optional) Should be sent alone if it’s first time setting password, or together with old_password to change it. |
|
| (optional) Should be sent when user is changing password |
|
| (optional) yyyy-mm-dd |
|
| (optional) male / female |
|
| (optional) choose 1 from the list e.g Vietnamese |
|
| 0 - not accepting / 1 - accepted Terms of service |
|
| (optional) phone number |
|
| (optional) First name |
|
| (optional) Last name |
|
| (optional) Street addr |
|
| (optional) 2 letter state code (CA, AL) |
|
| (optional) eg 07123 |
|
| (optional) City |
|
| (optional) Primary Care Physician Name |
|
| (optional) Primary Care Physician Phone (10 digit) |
|
| (optional) See timezone list below |
|
| (optional) File id retrieved from |
To delete the uploaded avatar, pass empty string. lat
, long
??? gps | Object | json object, min lat, long
Timezone List
Code Block |
---|
$timezones = array( 'America/Los_Angeles' => "(GMT-08:00) Pacific Time (US & Canada)", 'America/Denver' => "(GMT-07:00) Mountain Time (US & Canada)", 'America/Chicago' => "(GMT-06:00) Central Time (US & Canada)", 'America/New_York' => "(GMT-05:00) Eastern Time (US & Canada)", 'Pacific/Pago_Pago' => "(GMT-11:00) Coordinated Universal Time-11", 'Pacific/Honolulu' => "(GMT-10:00) Hawaii", 'America/Anchorage' => "(GMT-09:00) Alaska", 'America/Mazatlan' => "(GMT-07:00) Chihuahua, La Paz, Mazatlan", 'America/Guatemala' => "(GMT-06:00) Central America", 'America/Mexico_City' => "(GMT-06:00) Guadalajara, Monterrey, Mexico City", 'America/Regina' => '(GMT-06:00) Saskatchewan', 'America/Bogota' => "(GMT-05:00) Bogota, Lima, Quito", 'America/Caracas' => "(GMT-04:30) Caracas", 'America/Asuncion' => "(GMT-04:00) Asuncion", 'America/Halifax' => "(GMT-04:00) Atlantic Time (Canada)", 'America/Santiago' => "(GMT-04:00) Santiago", 'America/St_Johns' => "(GMT-03:30) St Johns, Newfoundland", 'America/Buenos_Aires' => "(GMT-03:00) Buenos Aires", 'America/Godthab' => "(GMT-03:00) Godthab, Greenland", 'America/Montevideo' => "(GMT-03:00) Montevideo", 'America/Sao_Paulo' => "(GMT-03:00) Sao Paulo, Brasilia", 'America/Noronha' => "(GMT-02:00) Mid-Atlantic", 'Atlantic/Azores' => "(GMT-01:00) Azores", 'Atlantic/Cape_Verde' => "(GMT-01:00) Cape Verde Is.", 'Europe/London' => "(GMT+00:00) Dublin, Edinburgh, Lisbon, London", 'UTC' => "(GMT+00:00) Monrovia, Reykjavik", 'Europe/Berlin' => "(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna", 'Europe/Prague' => "(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague", 'Europe/Paris' => "(GMT+01:00) Brussels, Copenhagen, Madrid, Paris", 'Europe/Warsaw' => "(GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb", 'Africa/Windhoek' => "(GMT+01:00) Windhoek", 'Africa/Johannesburg' => "(GMT+02:00) Johannesburg, Harare, Pretoria", 'Asia/Beirut' => "(GMT+02:00) Beirut", 'Europe/Bucharest' => "(GMT+02:00) Athens, Bucharest", 'Europe/Istanbul' => "(GMT+02:00) Istanbul", 'Asia/Damascus' => "(GMT+02:00) Damascus", 'Asia/Jerusalem' => "(GMT+02:00) Jerusalem", 'Africa/Cairo' => "(GMT+02:00) Cairo", 'Europe/Kiev' => "(GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius", 'Asia/Amman' => "(GMT+03:00) Amman", 'Europe/Minsk' => "(GMT+02:00) Kalinignrad, Minsk", 'Asia/Baghdad' => "(GMT+03:00) Baghdad", 'Asia/Riyadh' => '(GMT+03:00) Kuwait, Riyadh', 'Asia/Tehran' => "(GMT+03:30) Tehran", 'Europe/Moscow' => "(GMT+04:00) Moscow, St. Petersburg, Volgograd", 'Asia/Dubai' => "(GMT+04:00) Dubai, Abu Dhabi, Muscat", 'Asia/Yerevan' => "(GMT+04:00) Yerevan", 'Asia/Baku' => "(GMT+04:00) Baku", 'Asia/Kabul' => "(GMT+04:30) Kabul", 'Asia/Karachi' => "(GMT+05:00) Islamabad, Karachi", 'Asia/Kolkata' => "(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi", 'Asia/Colombo' => "(GMT+05:30) Sri Lanka", 'Asia/Kathmandu' => "(GMT+05:45) Kathmandu", 'Asia/Yekaterinburg' => "(GMT+06:00) Ekaterinburg", 'Asia/Dhaka' => "(GMT+06:00) Dhaka", 'Asia/Rangoon' => "(GMT+06:30) Yangon", 'Asia/Novosibirsk' => "(GMT+07:00) Novosibirsk", 'Asia/Ho_Chi_Minh' => "(GMT+07:00) Hanoi, Hochiminh City, Bangkok", 'Asia/Jakarta' => "(GMT+07:00) Jakarta", 'Asia/Krasnoyarsk' => "(GMT+07:00) Krasnoyarsk", 'Asia/Shanghai' => "(GMT+08:00) Shanghai, Beijing, Chongqing, Hong Kong, Urumqi", 'Asia/Singapore' => "(GMT+08:00) Singapore, Kuala Lumpur", 'Asia/Taipei' => "(GMT+08:00) Taipei", 'Australia/Perth' => "(GMT+08:00) Perth", 'Asia/Irkutsk' => "(GMT+09:00) Irkutsk", 'Asia/Tokyo' => "(GMT+09:00) Osaka, Sapporo, Tokyo", 'Asia/Seoul' => "(GMT+09:00) Seoul", 'Australia/Darwin' => "(GMT+09:30) Darwin", 'Australia/Adelaide' => "(GMT+09:30) Adelaide", 'Australia/Brisbane' => "(GMT+10:00) Brisbane", 'Pacific/Guam' => "(GMT+10:00) Guam, Port Moresby", 'Asia/Yakutsk' => "(GMT+10:00) Yakutsk", 'Australia/Sydney' => "(GMT+10:00) Canberra, Melbourne, Sydney", 'Australia/Hobart' => "(GMT+10:00) Hobart", 'Asia/Vladivostok' => "(GMT+11:00) Vladivostok", 'Pacific/Fiji' => "(GMT+12:00) Fiji", 'Asia/Magadan' => "(GMT+12:00) Magadan", 'Pacific/Auckland' => "(GMT+12:00) Auckland, Wellington", 'Pacific/Tongatapu' => "(GMT+13:00) Tongatapu, Nuku'alofa", 'Pacific/Apia' => "(GMT+13:00) Samoa" ) ); |
Response
Code Block |
---|
curl -X POST -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" -d “password"password=111111&dob=1983-10-02&nationality=Vietnamese”Vietnamese" https://api.vsee.me/api_v3/me.json { "data": { "id": "201", "first_name": "An", "last_name": "Nguyen", "username": "member-201", "dob": "1960-01-01", "email": "an+user1@vsee.com", "gender": 2, "active": true, "nationality": "Vietnamese", "tos": true } } |
POST /users/logout
Parameters
Parameter | Type | Description |
---|---|---|
|
| Array of tokens to be destroyed, e.g |
Response
Code Block |
---|
{ "data": true } |
POST /tokens/refresh
Parameters
Parameter | Type | Description |
---|---|---|
|
|
Response
Code Block |
---|
curl -X POST -d "refresh_token: 6366a7018a39536a1ef4b63626f8e734" https://api.vsee.me/api_v3/tokens/refresh.json { "data": { "user_id": "201", "user_type": "200", "token": "b21ab6cb871fa452a1193f0fbcf400d5", "expiry": 1426236055, "user": { "id": "201", "code": "55011c6c5b5c4aed99624956c0a801ee", "username": "member-201", "first_name": "Kristopher", "last_name": "Nieves (201)", "email": "an+user1@vsee.com", "dob": "1960-01-01", "gender": "Female", "photo": null, "name": "Kristopher Nieves (201)" }, } } |
POST /users/reset_password
Parameters
Parameter | Type | Description |
---|---|---|
|
| Valid email to send reset password email |
Response
Code Block |
---|
curl -X POST -d "email=an+1@vsee.com" https://api.vsee.me/api_v3/users/reset_password.json { "data": true } |
POST /users/alive
When user is in critical workflow such as waiting for provider to call, it's required to send keep alive at certain interval recommended < 1/2 of the heartbeat value. Only "alive" patients will be able to show up on provider dashboard
Parameters
Parameter | Type | Description |
---|---|---|
|
| (optional) default value is 300s, you can set your own heartbeat value, the more intermittent your network connection, the higher the value you should set. Ideally for mobile, set to about 300s and update every 250s |
Response
Code Block |
---|
curl -X POST -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" https://api.vsee.me/api_v3/users/alive.json { "data": { "last_connected": 1423023124, "heartbeat": 300 } } |
POST /users/activate
It will check user info against eligibility file if configured for the current account. User will receive email with activation code.
Parameters
Parameter | Type | Description |
---|---|---|
|
| |
|
| |
|
| e.g |
|
|
|
|
| 4 digits e.g |
Response
Code Block |
---|
curl -X POST -d "first_name=An&last_name=Nguyen&email=an@vsee.com" https://api.vsee.me/api_v3/users/activate.json { "data": true } |
EMR API
GET /users/:id/emr
Parameters
Parameter | Type | Description |
---|---|---|
|
| User’s or “" |
Response
Code Block |
---|
curl -k -X GET -H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" -H "X-AccountCode: vclinic" "https://api.vsee.me/api_v3/users/575/emr" { "data": { "allergies": { "data": [ { "substance": "A+D" } ], "modified": 1467667527, "modified_by": { "id": "575", "type": "200", "subtype": "", "first_name": "Keven2", "last_name": "Teodoro2", "title": "Dr.", "Suffix": "MD" } }, "conditions": { "data": [ { "condition": "Bleeding problem" } ], "modified": 1465941203, "modified_by": { }, ... } } } |
POST /users/:id/emr/:name
Input fields should follow schema from GET /emr/schema
for corresponding :name schema.
Parameters
Parameter | Type | Description |
---|---|---|
|
| User’s or “"-” " (dash) for current user |
|
| Name of emr schema. Eg: conditions, surgeries, allergies, medications, family_conditions, social_history, health_habits |
|
| The health data object |
|
| True: User selects not to declare any data; False: User decides to input some data |
Conditions {“data”"data":[{"condition":"Asthma"},{"condition":"Bleeding problem"}], “data"data_not_reported”reported":false}
Surgeries {“data”"data":[{"procedure":"Heart valve replaced"}], “data"data_not_reported”reported":false}
Family History {“data”"data":[{"condition":"Alcoholism","relations":["Mother","Father"]},{"condition":"Asthma","relations":["Mother","Father"]}], “data"data_not_reported”reported":false}
Social History {“data”"data":{"marital_status":"Single","highest_ed":"Grammar school","occupation":"test","num_kids":"5"}, “data"data_not_reported”reported":false}
Health Habits {“data”"data":{"smoking":"Never","alcohol":"Never","drugs":"qwerty","exercise":"Never"}, “data"data_not_reported”reported":false}
Medications {“data”"data":[{"name": "Tylenol"}], “data"data_not_reported”reported":false}
Allergies {“data”"data":[{ "substance": "1-Day" }, {"substance": "12 Hour Nasal"}], “data"data_not_reported”reported":false}
Response
Code Block |
---|
curl -k -X POST -H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" -H "X-AccountCode: vclinic" -H "Content-Type: application/json" -d '{"data":[{"condition":"Asthma"},{"condition":"Bleeding problem"}],"data_not_reported":false}' "https://api.vsee.me/api_v3/users/575/emr/conditions" { "data": { "data": { "marital_status": "Single", "highest_ed": "Grammar school", "occupation": "test", "num_kids": "5" } } } |
ePrescribe API
GET /users/:id/erx/prescriptions
Get list of current prescriptions for a patient.
Parameters
Parameter | Type | Description |
---|---|---|
|
| Status of prescriptions. Send “Current” "Current" by default. |
Response
Code Block |
---|
{ "data": [ { "ID": "101544", "DrugID": "69202", "NDC": "59390003613", "RxNormCode": "1000990", "Drug": "12 Hour Nasal 0.05% nasal spray", "Supply": false, "Compound": false, "Directions": "1 Milliliter(s) 1 to 2 times a day", "Qty": 5, "QtyQual": "Milliliter", "Refills": 0, "DaysSupply": 0, "SubstitutionAllowedFlag": 1, "Schedule": 0, "PharmacyNote": "", "InternalNote": "", "PrescriberId": "403", "LocationId": "Cep tuc ID", "PrescriptionDate": "2016-03-09T00:00:00", "SignDate": "0001-01-01T00:00:00", "Status": "Current", "PharmacyNcpdpId": "0001060", "RouteDetail": "e-Sent:Mar 9 2016 8:38AM Test 000 Pharmacy 10.6MU<br />Sent", "PartnerMedID": "", "PrescriberName": "Dr. Rocky Charlette, N.P." } ] } |
GET /users/:id/erx/pharmacies
Parameters
Parameter | Type | Description |
---|---|---|
|
| User ID or dash (-) for current user |
Response
Array of Pharmacy object
Code Block |
---|
curl -k -X GET -H "X-ApiToken: c1dfcb553b2395a902722387222310a4" -H "X-AccountCode: vclinic" "https://api.vsee.me/api_v3/users/575/erx/pharmacies" { "data": [ { "is_default": true "name": "4700 Sunset Blvd", "address": "4700 Sunset Boulevard", "address_more": "2nd line of address", "code": "0561539", "city": "Los Angeles", "country": "", "state": "CA", "zip": "90027", "phone": "8663528725", "fax": "8663528725", "lat": 36.800488, "long": -116.718750, "distance": 0.95993211712521 } ] } |
POST /users/:id/erx/pharmacies
Save patient’s currently chosen pharmacy.
Parameters
Parameter | Type | Description |
---|---|---|
|
| 1010 UNIVERSITY AVENUE, SAN DIEGO, CA, 92103 |
|
| |
|
| 5555008 |
|
| 02855 |
|
| Los Angeles |
|
| |
|
| CA |
|
| 90027 |
|
| 4017707046 |
|
| 8663528725 |
|
| 36.800488 |
|
| -116.718750 |
|
| 0.95993211712521 |
|
| mdtoolbox |
|
| Unmodified data returned by pharmacy search API |
Response
Code Block |
---|
curl -k -X POST -H "X-ApiToken: c1dfcb553b2395a902722387222310a4" -H "X-AccountCode: vclinic" -H "Content-Type: application/json" -d ' { "name": "A247PC00-Anesthesia 24/7, PC", "address": "Freas Avenue, 1200", "address_more": "", "code": "1001103", "city": "Berwick", "country": "", "state": "PA", "zip": "18063", "phone": "5707525572", "fax": "6153972423", "type": "mdtoolbox", "extra": { "NCPDPID": "1001103", "StoreName": "A247PC00-Anesthesia 24/7, PC", "Addr1": "1200 Freas Avenue", "Addr2": "", "City": "Berwick", "State": "PA", "Zip": "18063", "Phone": "5707525572", "Fax": "6153972423", "Email": "", "ServiceLevel": 1 } } "https://api.vsee.me/api_v3/users/575/erx/pharmacies" { "data": true } |
DELETE /users/:id/erx/pharmacies/:code
Delete the specified pharmacy from the user profile.
Parameters
Parameter | Type | Description |
---|
Response
Code Block |
---|
curl -k -X DELETE -H "X-ApiToken: c1dfcb553b2395a902722387222310a4" -H "X-AccountCode: vclinic" -H "Content-Type: application/json" "https://api.vsee.me/api_v3/users/575/erx/pharmacies/12834" { "data": true } |
Visits API
POST /intakes
Create intake information
Parameters
Parameter | Type | Description |
---|---|---|
|
| (optional) The ID of the provider who is being visited |
|
| (optional) Reason for visit |
|
| (optional) Visit type: 1 - walkin; 2 - schedule |
|
| (optional) Patient’s code ID on behalf of whom the intake will be created |
|
| Room’s code |
|
| (optional) Multiple formats supported: [{id:"577af3e6-9e48-4a51-9315-2ba8c0a8210a"}, ...] or ["577af3e6-9e48-4a51-9315-2ba8c0a8210a", ...] or 577af3e6-9e48-4a51-9315-2ba8c0a8210a,577af3e6-9e48-4a51-9315-2ba8c0a8210a,... |
|
| (optional) CA/AL/... |
|
| (optional) 7123465789 |
Response
Code Block |
---|
curl -k -X POST -d "provider=541&reason_for_visit=Test&reset=true&type=1" https://api.vsee.me/api_v3/intakes.json { "data": { "id": "56e8c536-566c-44b6-bbca-66f0ac1f0144" } } |
POST /intakes/:id
Update intake information
Parameters
Parameter | Type | Description |
---|---|---|
|
| (optional) The ID of the provider who is being visited |
|
| (optional) Reason for visit |
|
| (optional) Visit type: 1 - walkin; 2 - schedule |
|
| (optional) Patient’s code ID on behalf of whom the intake will be created |
|
| Room’s code |
|
| Multiple formats supported: [{id:"577af3e6-9e48-4a51-9315-2ba8c0a8210a"}, ...] or ["577af3e6-9e48-4a51-9315-2ba8c0a8210a", ...] or 577af3e6-9e48-4a51-9315-2ba8c0a8210a,577af3e6-9e48-4a51-9315-2ba8c0a8210a,... |
|
| CA/AL/... |
|
| 7123465789 |
|
| (optional) Required for payment related, the consultation objects can be found at |
Response
Code Block |
---|
curl -X POST -H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" -H "X-AccountCode: vclinic" -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" -F "location=CA" -F "phone=7123456789" -F "reason_for_visit=Test intake functionalities 2" "https://api.vsee.me/api_v3/intakes/57a0705e-1c4c-4f24-b51d-3c71ac1f0144" { "data": { "id": "56e8c536-566c-44b6-bbca-66f0ac1f0144" } } |
GET /intakes/:id
Get the specific intake
Parameters
None
Response
Code Block |
---|
curl -X GET \ -H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" \ -H "X-AccountCode: vclinic" \ "https://api.vsee.me/api_v3/intakes/57a0705e-1c4c-4f24-b51d-3c71ac1f0144" { "data": { "modified": 1471465080, "created": 1471465080, "type": "1", "reason_for_visit": "the reason", "attachments": [ { "_id": "57b4c65d-7ef8-461f-8951-43b1ac1f0144", "name": "575004c7-b350-421d-8542-4dcdac1f0144.png", "path": "files/2016/08/17/57b4c65d-7ef8-461f-8951-43b1ac1f0144.png", "size": 12859, "ext": "png", "type": 0, "creator_id": "575", "remark": null, "using": 1, "modified": { "sec": 1471465053, "usec": 966000 }, "created": { "sec": 1471465053, "usec": 967000 } } ], "id": "57b4c678-de20-4c1a-a52b-43e9ac1f0144" } } |
POST /visits/add_walkin
Create a walkin visit
Parameters
Parameter | Type | Description |
---|---|---|
|
| (optional) The ID of the provider who is being visited if patient is starting an appointment. Shouldn’t pass this for walkins. |
|
| The ID of the intake. |
|
| The ID of a scheduled appointment. This one is used in the case when the patient visits a scheduled appointment. |
|
| (optional) The ID of a scheduled appointment. This one is used in the case when the patient visits a scheduled appointment. |
|
| (optional) Patient’s code ID on behalf of whom the intake will be created |
|
| Current room’s code in which the visit will be created |
Response
Code Block |
---|
curl -k -X POST \ -H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" \ -H "X-AccountCode: vclinic" \ -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" \ -F "provider_id=826" \ -F "intake_id=57a0705e-1c4c-4f24-b51d-3c71ac1f0144" \ -F "room_code=ceproom1" \ "https://api.vsee.me/api_v3/visits/add_walkin" { "data": { "id": "1525", "member_id": "508", "provider_id": "509", "account_code": null, "code": "56e8c580f55c44a2868b66f0ac1f0144", "start": "1458095488", "end": "1458096388", "actual_start": null, "actual_end": null, "specialty_id": null, "state": null, "type": "1", "status": "10", "completed_by": null, "created": 1458095488, "modified": 1458095488, "room_id": null, "_id": "1525", "payment": { "duration": 15, "amount": "00.00", "description": "FruitStreet Config Level One-time charge" }, "intake": { "provider": "509", "reason_for_visit": "Test intake functionalities 1", "type": "1", "modified": 1458095488, "created": 1458095414, "visit_id": "1525", "id": "56e8c536-566c-44b6-bbca-66f0ac1f0144" }, "provider": { "id": "509", "first_name": "Ligeng", "last_name": "Doctor", "vseeid": "wellikodev+user509", "title": "" }, "member": { "id": "508", "first_name": "Ligeng", "last_name": "01", "vseeid": "wellikodev+user508", "dob": "2014-09-10", "gender": 1, "phone": "6506506500" }, } } |
POST /visits/close
Close/Cancel a visit or an appointment
Parameters
Parameter | Type | Description |
---|---|---|
|
| The ID of the visit/appointment |
|
|
"patientendcall" - Patient click End Call button on VSee
"patientexitroom" - Patient click Exit Waiting Room
"call_ended" - When call ended not by patient, could be due to network problem or provider ended the call
"patientcancelappointment" - Patient click cancel appointment button
"maxwaitingtime_reached" - Patient side max waiting time reached
Response
Code Block |
---|
curl -k -X POST -H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" -H "X-AccountCode: vclinic" -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" -F "id=14" "https://api.vsee.me/api_v3/visits/close" { "data": { "id": "1525" } } |
Appointment API
GET /availability [public access available upon request]
Get provider's available slots
Parameters
Parameter | Type | Location | Description |
---|---|---|---|
|
|
| (optional) Room code. If not given, will try to fall back to Intake.room |
|
|
| Search for available slots from this start time |
|
|
| Search for available slots up to this end time |
|
|
| Search for available slots during certain seconds |
|
|
| (optional) Pick only this provider’s slots |
|
|
| Intake ID. Should be passed when patient is choosing a slot for an appointment. It will use intake’s location, specialty, etc. |
|
|
| Consultation ID. This will help to determine slot duration |
|
|
| (beta) Header value is required if the application want to retrieve availablity without user token |
|
|
| (beta) Header value is required if the application want to retrieve availablity without user token |
Notes: If application want to retrieve providers availability slots for a room without user token, the following are required X-ApiKey
, X-ApiSecret
, room_code
, start
, end
, consultation_id
. location
will be required if you want to filter by state as well.
Notes: The time range parameters 'start', 'end' and 'duration' obey the following rules:
input | actual | |||||
---|---|---|---|---|---|---|
start | end | duration | start | end | duration | |
1 | not set | not set | not set | available | available+4d | 4d |
2 | set | not set | not set |
|
| 4d |
3 | set | set | not set | start | end | (ignored) |
4 | set | not set | set |
|
| duration |
5 | not set | set | not set | end-4d | end | 4d |
6 | not set | set | set | end-duration | end | duration |
7 | not set | not set | set | available | available+duration | duration |
8 | set | set | set | start | end | (ignored) |
(available: The start time of the 1st available slot)
Response
Code Block |
---|
curl -k -X GET -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" https://api.vsee.me/api_v3/availability { "data": { "slots": [ { "slot_id": "5277", "slot_start": 1470186000, "slot_end": 1470186900, "slot_booked": 0, "slot_available": 1, "group_id": "57106583f46874e70afc93b4" }, ] } ] } curl -X GET \ 'https://api.vsee.me/api_v3/availability?consultation_id=593999b2-08e4-404c-82f8-772dc0a8016f&start=1497063600&end=1497065400&location=AL&room_code=234yn' \ -H 'x-accountcode: vclinic' \ -H 'x-apikey: vclinic_api_key' \ -H 'x-apisecret: vclinic_api_secret' \ { "data": { "slots": [ { "slot_id": "4", "slot_start": 1497063600, "slot_end": 1497065400, "slot_booked": 0, "slot_available": "1", "group_id": "59399694-9ec0-4108-927d-7776c0a8016f" } ] } } |
The above data response format will change soon to
Code Block |
---|
{ "data": [ { "start": 1470186000, "end": 1470186900, "providers": ["123", "345"] }, { "start": 1470186000, "end": 1470186900, "providers": ["123", "345"] } ] ] } |
POST /visits
Create an appointment
Parameters
Parameter | Type | Description |
---|---|---|
|
| The ID of the visiting patient (optional - only use in paramedic workflow) |
|
| The timestamp of the beginning of the appointment (in UNIX timestamp format) |
|
| The timestamp of the ending of the appointment (in UNIX timestamp format) |
|
| Room code (required) |
|
| 2 - scheduling |
|
| The ID of the intake |
|
| (optional) The ID of the provider who is being visited |
Response
Code Block |
---|
curl -X POST \ -H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" \ -H "X-AccountCode: vclinic" \ -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" \ -F "member_id=575" \ -F "slot_start=1470669300" \ -F "slot_end=1470670200" \ -F "type=2" \ -F "intakeId=57a0705e-1c4c-4f24-b51d-3c71ac1f0144" \ "https://api.vsee.me/api_v3/appointments" { "data": { "member_id": 17778181, "provider_id": 12456470, "account_code": "vclinic", "code": "615f2e2eabc46ad94e9b6457b11", "start": 1631628616, "end": 1631628916, "actual_start": 1631628211, "actual_end": null, "specialty_id": null, "state": null, "type": 2, "status": 30, "completed_by": null, "room_id": 1002387, "room_code": "vclinicroom", "modified": 1633630312, "created": 1633627694, "provider": { "id": "12456470", "email": "anton+providersa@vseelab.com", "subtype": "482", "vseeid": "anton+providersa@vseelab.com", "photo": null, "full_name": "Anton Provider", "title": "", "suffix": "" }, "member": { "id": "17778181", "code": "anton+vclinic2@vseelab.com", "email": "anton+vclinic2@vseelab.com", "vseeid": "cmo+615f28cd70804d8994d62bd564457b11", "photo": null, "full_name": "Anton Test", "phone": "5551231122" }, "subType": 3, "more_provider_ids": null, "guest_emails": null, "guest_mobiles": null, "reminder_type": null, "reminder_time": null, "host_ids": [ "12456470" ], "hosts": [ { "username": "anton+providersa@vseelab.com", "email": "anton+providersa@vseelab.com", "phone": "", "timezone": "America/Los_Angeles", "vseeid": "anton+providersa@vseelab.com", "full_name": "Anton Provider", "title": "", "suffix": "", "id": "12456470", "photo_attachment_id": "", "role": "owner" } ], "creator": { "id": "15729940", "code": "60aed4242c90409099385cef64457b11", "vseeid": "d55d2f77ff3653891a587fdfa83207b4@vsee.com", "type": 160, "subtype": "", "first_name": null, "last_name": null, "account_code": "vclinic" }, "pending_actions": [], "is_test": false, "meeting": { "recording_auto_start": false, "phone_numbers": { "US": [ "+1.650.758.0255" ] }, "hosts": [ "anton+providersa@vseelab.com", "chau+provider@vseelab.com" ], "expiry": 1633643316, "conference_pin": 838759, "meeting_id": "1633627695040_2cc263f4-3d07-49fa-97b1-b2955ff40dfa__jitsi" }, "one_time_link_token": "l0vht6wkxj", "notify_list": [], "payment": { "duration": null, "amount": "25.00", "description": "Cloud Clinic Default One-time Charge Message", "id": "615cec5b-14c8-4493-b9ce-365764457b11" }, "intake_id": "615f2de7-8ab8-48d3-80d8-53f564457b11", "related_walkin_id": "18407370", "call_logs": { "total_start": 1633628208, "total_end": 1633628268, "total_duration": 60, "waiting_time": 0, "provider_id_1": "anton+providersa@vseelab.com", "call_start_1": 1633628208, "call_duration_1": 60, "wait_time_1": 0, "patients": [ "cmo+615f28cd70804d8994d62bd564457b11" ], "source": "v2", "source_ids": [ "1633628104000_1633627695040_2cc263f4-3d07-49fa-97b1-b2955ff40dfa__jitsi", "1633628745000_1633627695040_2cc263f4-3d07-49fa-97b1-b2955ff40dfa__jitsi" ] }, "incharge": false, "intake": { "provider_id": "12456470", "member_id": "17778181", "room_code": "vclinicroom", "location": "MI", "phone": "5551234415", "type": "2", "room": "vclinicroom", "modified": 1633627623, "created": 1633627623, "visit_id": "18407167", "attachments": "", "reason_for_visit": "", "consent": "true", "consultation": { "description": "test", "duration": 60, "charge": false, "group": false, "slots": 1, "amount": 0, "visible_to_patient": true, "id": "615cec5b-14c8-4493-b9ce-365764457b11", "currency": "USD" }, "id": "615f2de7-8ab8-48d3-80d8-53f564457b11" }, "related_walkin": { "start": 1633628101, "end": 1633631701, "status": 30, "id": "18407370" }, "postvisit": { "member_id": "17778181", "class_id": null, "visit_id": "18407167", "modified": 1633627695, "created": 1633627695, "id": "615f2e2f-c240-4088-a28b-594b64457b11" }, "isEditExpired": false, "room": { "id": "10023087", "code": "vclinicroom", "name": "VClinic UAT", "domain": "vclinic.vseepreview.com", "account_code": "vclinic", "slug": "UAT" }, "account": { "code": "vclinic", "name": "VClinic", "domain": "vclinic.vseepreview.com", "vsee_api": { "meeting": { "enabled": true, "guest_invite_enabled": true, "adhoc_group_call": { "disabled": true } } } }, "root_visit": { "id": "18407167", "group_chat_id": null, "participants": null }, "id": "18407167", "subtype": 3 }, "s": "ms" } |
GET /visits
Get the visits list of the patient. The frontend can check the data["start"] field. If the start field is greater than the current timestamp then the visit is a upcoming appointment, otherwise it’s a past session. Group appointments and one-to-one appointments are now differentiated by the field visit_group_id
which only exists in group appointments data.
For one-to-one appointments, consultation information can be retrieved from intake.consultation; for group appointments, consultation information has to be got from visit_group.consultation.
The following sample response offers 2 example for one-to-one appointment and one for group appointment.
Fields that can be returned for fields with format: "html"
: <u>, <b>, <i>, <strong>, <ul>, <ol>, <li>, <p>, <br>
Parameters
Response
Code Block |
---|
curl -k -X GET \ -H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" \ -H "X-AccountCode: vclinic" \ "https://api.vsee.me/api_v3/visits.json" { "data": [ { "id": "7727", "member_id": "575", "provider_id": "1096", "account_code": "vclinic", "code": "57a07c26947c4544aeef4e5cac1f0144", "start": "1470669300", "end": "1470670200", "actual_start": null, "actual_end": null, "specialty_id": null, "state": null, "type": "2", "subtype": "3", "status": "20", "completed_by": null, "created": 1470135334, "modified": 1470135334, "room_id": null, "_id": "7727", "payment": { "duration": null, "amount": "0.00", "description": "CMO Config Level One-time charge" }, "invoice_id": "57a071d0-c0dc-45a6-9bc3-40fdac1f0144", "provider": { "id": "1096", "code": "563b40f082584368bee10335ac1f0144", "first_name": "Anton", "last_name": "Provider III", "username": "anton+provider3@vsee.com", "vseeid": "conciergedev+user1096", "email": "anton+provider3@vsee.com", "photo": "https://api.vsee.me/api_v3/files/index/app_user/photo/1096/?auth_code=8350f279578774a6e31787fc5a5a05d2948770e0", "active": true, "title": "", "suffix": "", "tos": true, "phone": "(334) 229-4100", "subtype": "482" }, "member": { "id": "575", "code": "553ea41edfd041bd94475276ac1f0144", "first_name": "Keven2", "last_name": "Teodoro2", "username": "anton+1@vsee.com", "vseeid": "conciergedev+user575", "dob": "1983-02-02", "email": "anton+1@vsee.com", "gender": 2, "active": true, "tos": true, "phone": "7123456111", "subtype": "" } }, "postvisit": { "visit_id": "9709", "modified": 1473370072, "created": 1473368099, "member_id": "1290", "modifiedBy": "Alexey Provider 2", "draft": false, "attachments": [], "physical_exam": "<p>dfvevofivuoiwue<\/p><p>iou<\/p><p>oi<\/p>", "assessment_plan": "<p>oiuoiwfuweoifu<\/p><p>efweiofweiofuweoif<\/p><p><br><\/p>", "reason_for_visit": "Allergic reaction", "reason_for_visit_other": "", "schema": "", "diagnosis": "Allergic reaction,initial encounter (T78.40XA),Asthma (J45.909)", "patient_instructions": "<p>Plan \/ Discharge...<br><\/p>", "disposition": "Referred to ED", "dea": "", "npi": "" } } |
GET /visits/:id
Get detailed information for a certain appointment.
Group appointments and one-to-one appointments are now differentiated by the field "visitgroupid" which only exists in group appointments data.
For one-to-one appointments, consultation information can be retrieved from intake.consultation; for group appointments, consultation information has to be got from visit_group.consultation.
Parameters
None
Response
Code Block |
---|
curl -k -X GET \ -H "X-ApiToken: 5a2eb231d652b49f4d7fc0fbb78328fb" \ -H "X-AccountCode: vclinic" \ "https://api.vsee.me/api_v3/visits/7727.json" { "data": { "member_id": 17778181, "provider_id": 12456470, "account_code": "vclinic", "code": "615f2e2eabc46ad94e9b6457b11", "start": 1631628616, "end": 1631628916, "actual_start": 1631628211, "actual_end": null, "specialty_id": null, "state": null, "type": 2, "status": 30, "completed_by": null, "room_id": 1002387, "room_code": "vclinicroom", "modified": 1633630312, "created": 1633627694, "provider": { "id": "12456470", "email": "anton+providersa@vseelab.com", "subtype": "482", "vseeid": "anton+providersa@vseelab.com", "photo": null, "full_name": "Anton Provider", "title": "", "suffix": "" }, "member": { "id": "17778181", "code": "anton+vclinic2@vseelab.com", "email": "anton+vclinic2@vseelab.com", "vseeid": "cmo+615f28cd70804d8994d62bd564457b11", "photo": null, "full_name": "Anton Test", "phone": "5551231122" }, "subType": 3, "more_provider_ids": null, "guest_emails": null, "guest_mobiles": null, "reminder_type": null, "reminder_time": null, "host_ids": [ "12456470" ], "hosts": [ { "username": "anton+providersa@vseelab.com", "email": "anton+providersa@vseelab.com", "phone": "", "timezone": "America/Los_Angeles", "vseeid": "anton+providersa@vseelab.com", "full_name": "Anton Provider", "title": "", "suffix": "", "id": "12456470", "photo_attachment_id": "", "role": "owner" } ], "creator": { "id": "15729940", "code": "60aed4242c90409099385cef64457b11", "vseeid": "d55d2f77ff3653891a587fdfa83207b4@vsee.com", "type": 160, "subtype": "", "first_name": null, "last_name": null, "account_code": "vclinic" }, "pending_actions": [], "is_test": false, "meeting": { "recording_auto_start": false, "phone_numbers": { "US": [ "+1.650.758.0255" ] }, "hosts": [ "anton+providersa@vseelab.com", "chau+provider@vseelab.com" ], "expiry": 1633643316, "conference_pin": 838759, "meeting_id": "1633627695040_2cc263f4-3d07-49fa-97b1-b2955ff40dfa__jitsi" }, "one_time_link_token": "l0vht6wkxj", "notify_list": [], "payment": { "duration": null, "amount": "25.00", "description": "Cloud Clinic Default One-time Charge Message", "id": "615cec5b-14c8-4493-b9ce-365764457b11" }, "intake_id": "615f2de7-8ab8-48d3-80d8-53f564457b11", "related_walkin_id": "18407370", "call_logs": { "total_start": 1633628208, "total_end": 1633628268, "total_duration": 60, "waiting_time": 0, "provider_id_1": "anton+providersa@vseelab.com", "call_start_1": 1633628208, "call_duration_1": 60, "wait_time_1": 0, "patients": [ "cmo+615f28cd70804d8994d62bd564457b11" ], "source": "v2", "source_ids": [ "1633628104000_1633627695040_2cc263f4-3d07-49fa-97b1-b2955ff40dfa__jitsi", "1633628745000_1633627695040_2cc263f4-3d07-49fa-97b1-b2955ff40dfa__jitsi" ] }, "incharge": false, "intake": { "provider_id": "12456470", "member_id": "17778181", "room_code": "vclinicroom", "location": "MI", "phone": "5551234415", "type": "2", "room": "vclinicroom", "modified": 1633627623, "created": 1633627623, "visit_id": "18407167", "attachments": "", "reason_for_visit": "", "consent": "true", "consultation": { "description": "test", "duration": 60, "charge": false, "group": false, "slots": 1, "amount": 0, "visible_to_patient": true, "id": "615cec5b-14c8-4493-b9ce-365764457b11", "currency": "USD" }, "medical_profile": { "_id": "553ea41ef468747652d11034", "user_id": "575", "family_conditions": { "data": [ { "condition": "Diabetes", "relations": [ "Paternal grandparents" ] }, { "condition": "Ulcer disease", "relations": [ "Mother" ] } ], "modified": 1467623311, "modifiedBy": "Keven Teodoro" }, "conditions": { "data": [ { "condition": "Kidney disease" }, { "condition": "Kidney stones" }, { "condition": "Stroke" } ], "modified": 1472059195, "modifiedBy": "Keven2 Teodoro2" }, "social_history": { "data": [], "modified": 1472588123, "modifiedBy": "Keven2 Teodoro2", "modified_by": { "id": "575", "type": 200, "subtype": "", "first_name": "Keven2", "last_name": "Teodoro2", "photo": "" } }, "health_habits": { "data": [], "modified": 1470128370, "modifiedBy": "Keven2 Teodoro2" }, "surgeries": { "data": [ { "procedure": "C-section" }, { "procedure": "Heart valve replaced" } ], "modified": 1471769856, "modifiedBy": "Keven2 Teodoro2" }, "medications": { "data": [], "modified": 1471769958, "modifiedBy": "Keven2 Teodoro2", "modified_by": { "id": "575", "type": "200", "subtype": "", "first_name": "Keven2", "last_name": "Teodoro2" } }, "allergies": { "data": [], "modified": 1471986123, "modifiedBy": "Keven2 Teodoro2", "modified_by": { "id": "575", "type": "200", "subtype": "", "first_name": "Keven2", "last_name": "Teodoro2" } }, "modified": { "sec": 1472059195, "usec": 806000 }, "created": { "sec": 1430168606, "usec": 596000 } }, "id": "615f2de7-8ab8-48d3-80d8-53f564457b11" }, "related_walkin": { "start": 1633628101, "end": 1633631701, "status": 30, "id": "18407370" }, "postvisit": { "member_id": "17778181", "class_id": null, "visit_id": "18407167", "modified": 1633627695, "created": 1633627695, "id": "615f2e2f-c240-4088-a28b-594b64457b11" }, "postvisit": { "visit_id": "9709", "modified": 1473370072, "created": 1473368099, "member_id": "1290", "modifiedBy": "Second Provider 2", "draft": false, "attachments": [], "physical_exam": "<p>dfvevofivuoiwue<\/p><p>iou<\/p><p>oi<\/p>", "assessment_plan": "<p>oiuoiwfuweoifu<\/p><p>efweiofweiofuweoif<\/p><p><br><\/p>", "reason_for_visit": "Allergic reaction", "reason_for_visit_other": "", "schema": "", "diagnosis": "Allergic reaction,initial encounter (T78.40XA),Asthma (J45.909)", "patient_instructions": "<p>Plan \/ Discharge...<br><\/p>", "disposition": "Referred to ED", "dea": "", "npi": "", "attachments": [ { "_id": "57e4f034-3a0c-4b1d-bc15-221bac1f0144", "name": "Water_nature_canyon_cliffs_horseshoe_bend_rivers_2560x1600.jpg", "path": "files/2016/09/23/57e4f034-3a0c-4b1d-bc15-221bac1f0144.jpg", "size": 1692776, "ext": "jpg", "type": 0, "creator_id": "1096", "remark": null, "using": 1, "modified": { "sec": 1474621492, "usec": 858000 }, "created": { "sec": 1474621492, "usec": 858000 } } ] }, "isEditExpired": false, "room": { "id": "10023087", "code": "vclinicroom", "name": "VClinic UAT", "domain": "vclinic.vseepreview.com", "account_code": "vclinic", "slug": "UAT" }, "account": { "code": "vclinic", "name": "VClinic", "domain": "vclinic.vseepreview.com", "vsee_api": { "meeting": { "enabled": true, "guest_invite_enabled": true, "adhoc_group_call": { "disabled": true } } } }, "prescriptionsBeforeVisit": [ { "ID": "97316", "DrugID": "69117", "NDC": "00122206038", "RxNormCode": "260654", "Drug": "One Tab Daily with Iron oral tablet", "Supply": false, "Compound": false, "Directions": "1 Milliliter(s) 1 to 2 times a day", "Qty": 60, "QtyQual": "Tablet", "Refills": 0, "DaysSupply": 0, "SubstitutionAllowedFlag": 1, "Schedule": 0, "PharmacyNote": "", "InternalNote": "", "PrescriberId": "826", "LocationId": "DEMO-ACCOUNT", "PrescriptionDate": "2016-01-30T00:00:00", "SignDate": "0001-01-01T00:00:00", "Status": "Current", "PharmacyNcpdpId": "0001060", "RouteDetail": "e-Sent:Jan 30 2016 3:41PM Test 000 Pharmacy 10.6MU<br />Sent", "PartnerMedID": "", "PrescriberName": "Dr. John Will, M.D." }, "prescriptions": [], "root_visit": { "id": "18407167", "group_chat_id": null, "participants": null }, "id": "18407167", "subtype": 3 } } |
GET /visits/current
Get current visit in progress
Parameters
None
Response
Code Block |
---|
curl -X GET \ -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \ https://api.vsee.me/api_v3/visits/current.json { "data": { "id": "1504", "member_id": "508", "provider_id": "509", "account_code": "fruitstreet", "code": "56e7b1d2b90c4d68953e3d02ac1f0144", "start": "1459973100", "end": "1459974000", "actual_start": null, "actual_end": "1458024955", "specialty_id": null, "state": null, "type": "2", "status": "40", "completed_by": "508", "created": 1458024914, "modified": 1458024914, "room_id": null, "_id": "1504", "payment": { "duration": 15, "amount": "00.00", "description": "FruitStreet Config Level One-time charge" }, "intake": { "provider": "509", "reason_for_visit": "Test intake functionalities", "reset": "true", "type": "1", "modified": 1458024914, "created": 1458024708, "visit_id": "1504", "id": "56e7b104-ded0-4096-979b-395bac1f0144" }, "provider": { "id": "509", "first_name": "Ligeng", "last_name": "Doctor", "username": "ligeng+provider1@vsee.com", "vseeid": "wellikodev+user509", "email": "ligeng+provider1@vsee.com", "active": true, "title": "", "tos": false, "phone": "6506506500" }, "member": { "id": "508", "first_name": "Ligeng", "last_name": "01", "username": "ligeng+1@vsee.com", "vseeid": "wellikodev+user508", "dob": "2014-09-10", "email": "ligeng+1@vsee.com", "gender": 1, "active": true, "tos": true, "phone": "6506506500" } } } |
Payment API
GET /billing/settings
Allow user to retrieve payment settings
Parameters
Parameter | Type | Description |
---|
Response
Code Block |
---|
{ "data": { "stripe": { "publishable_key": "2342342" } } } |
POST /billing/sources?room_code=abc&provider_id=12312
Allow user to add a new payment source to their account
Parameters
Parameter | Type | Location | Description |
---|---|---|---|
|
| “card” "card" for credit card, more to be supported later e.g bitcoin,.. (no need???) | |
|
| token obtain from Stripe after posting card detail to api.stripe.com | |
|
| Query string | |
|
| Query string | (optional) |
Response
Code Block |
---|
{ "data": { "id": "card_19DrgXBY2jn2BCqQNpjjzuay", "type": "card", "brand": "Visa", "country": "US", "exp_month": 8, "exp_year": 2017, "funding": "credit", "last4": "4242", "name": "Jack Sparrow", "is_default": true } } |
DELETE /billing/sources/:id
Allow user to delete payment source from his account
Parameters
Parameter | Type | Description |
---|---|---|
|
| Payment source id |
Response
Code Block |
---|
{ "data": [] } |
GET /billing/sources?room_code=abc&provider_id=12312
Allow user to retrieve all payment sources from their account
Parameters
Parameter | Type | Location | Description |
---|---|---|---|
|
| (optional) “card” "card" for credit card, more to be supported later e.g bitcoin,.. | |
|
|
| |
|
|
| (optional) |
Response
Code Block |
---|
{ "data": [ { "id": "card_19DrgXBY2jn2BCqQNpjjzuay", "type": "card", "brand": "Visa", "exp_month": 8, "exp_year": 2017, "last4": "4242", "name": "Jack Sparrow", "is_default": true }, { "id": "card_19DrgXBY2jn2BCqQNpjjzuay", "type": "card", "brand": "Visa", "exp_month": 8, "exp_year": 2017, "last4": "4242", "name": "JackSparrow", "is_default": false } ] } |
GET /billing/sources/:id (new)
Allow user to retrieve a payment source from their account
Parameters
Parameter | Type | Description |
---|---|---|
|
| Payment source id |
Response
Code Block |
---|
{ "data": { "id": "card_19DrgXBY2jn2BCqQNpjjzuay", "type": "card", "brand": "Visa", "exp_month": 8, "exp_year": 2017, "last4": "4242", "name": "Jack Sparrow", "is_default": true } } |
PUT /billing/sources/:id
Allow user to make this card as default card
Parameters
Parameter | Type | Description |
---|---|---|
|
| 1 |
|
| If it’s CC app, we need to pass this parameter |
|
| If it’s FS app, then we need to pass this parameter |
Response
Code Block |
---|
{ "data": { "id": "card_19DrgXBY2jn2BCqQNpjjzuay", "type": "card", "brand": "Visa", "exp_month": 8, "exp_year": 2017, "last4": "4242", "name": "Jack Sparrow", "is_default": true } } |
POST /billing/invoices/process
Allow user to process invoice
Parameters
Parameter | Type | Description |
---|---|---|
|
| Coupon code |
|
| Required - intake id to apply coupon code to |
|
| 1 |
Response
Code Block |
---|
{ "data": { "currency": "USD", "consultation": { "description": "30 mins", "amount": 30, "duration": 30, "id": "58244a53-0f28-4ff9-bdbc-7468ac1f0144" }, "coupon": { "id": "10_percents_1479363579", "object": "coupon", "amount_off": null, "created": 1479363580, "currency": null, "duration": "once", "duration_in_months": null, "livemode": false, "max_redemptions": null, "metadata": [ ], "percent_off": 10, "redeem_by": null, "times_redeemed": 0, "valid": true }, "amount_due": 27 } } |
Clinic Account API
GET /accounts [public access]
Get list of accounts
Response
Code Block |
---|
curl -k -X GET https://api.vsee.me/api_v3/accounts.json { "data": [ { "code": "DEMO-ACCOUNT-LOCAL", "name": "DEMO-ACCOUNT-LOCAL", }, { "code": "DEMO-ACCOUNT-LOCAL", "name": "DEMO-ACCOUNT-LOCAL", }, ... ] } |
GET /accounts/:code [public access]
Get current member’s Account data. Each member is mapped to Account which contains some general settings. It includes schema for Intake forms, Signup form. Account.code is also used for starting visits. Intake wizard flow: Patient should go through all steps defined in 2 arrays: Account.intakesteps and Account.postintakesteps * Create / update Intake object * When Account.intakesteps are all passed, create a visit * Go through Account.postintakesteps at which the patient may update existing intake and do other things (take survey, pick pharmacy, etc) Each step has a “code” "code" field which defines the type of content of the step. See the description below
Parameters
Parameter | Type | Description |
---|---|---|
|
| Account’s code or dash (-) for current account |
Response
Code Block |
---|
curl -k -X GET https://api.vsee.me/api_v3/accounts/vclinic.json { data: { id: "56ced820-55bc-43ca-9b35-4599ac1f0144", code: "vclinic", domain: "demo.vsee.me", name: "VClinic", portal_title: "", privacy_id: "", states: { signup: { signup: [ { name: "", code: "signup", next: { title: "Enter" }, sections: [ { code: "signup_activate", schema: { first_name: { type: "string", required: true, eligibility: { field: "first_name" } }, last_name: { type: "string", required: true, eligibility: { field: "last_name" } }, dob: { type: "string", required: true, eligibility: { field: "dob" } }, ssn: { type: "integer", maxLength: 4, required: true, allowedEmpty: true, eligibility: { field: "ssn" } }, email: { type: "string", required: true } }, form: [ { key: "first_name", placeholder: "First Name", type: "text" }, { key: "last_name", placeholder: "Last Name", type: "text" }, { key: "dob", placeholder: "Date of Birth", type: "datepicker" }, { key: "ssn", placeholder: "Last 4 digit of SSN", type: "text" }, { key: "email", placeholder: "Email", type: "email" } ] } ] } ], verification: [ { name: "", code: "signup_verification", next: { title: "Enter" }, sections: [ { code: "signup_verification", schema: { email_token: { type: "string", required: true }, email: { type: "string" } }, form: [ { key: "email_token", placeholder: "6-digit verification code", type: "text" } ] } ] } ], update_profile: [ { name: "New account", code: "post_signup_update_profile", next: { title: "Create" }, sections: [ { code: "post_signup_profile", schema: { first_name: { type: "string", required: true }, last_name: { type: "string", required: true }, gender: { type: "string", enum: [ "male", "female" ], required: true }, dob: { type: "string", required: true }, password: { type: "string", required: true }, password_retype: { type: "string" }, phone: { type: "string", required: false }, street_addr: { type: "string" }, city: { type: "string" }, state: { type: "string", enum: [ "AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY" ] }, zip: { type: "string" }, pcp_name: { type: "string" }, pcp_phone: { type: "string" } }, form: [ { key: "first_name", title: "First Name", type: "text" }, { key: "last_name", title: "Last Name", type: "text" }, { key: "gender", type: "radios", title: "Gender", titleMap: { male: "Male", female: "Female" } }, { key: "dob", title: "Date of Birth", type: "datepicker" }, { key: "password", title: "Password", type: "password" }, { key: "password_retype", title: "Retype password", type: "password" }, { key: "phone", type: "text", title: "Phone number" }, { key: "street_addr", type: "text", title: "Street Addr" }, { key: "city", type: "text", title: "City" }, { key: "state", type: "select", title: "State", titleMap: { AL: "Alabama", AK: "Alaska", AZ: "Arizona", AR: "Arkansas", CA: "California", CO: "Colorado", CT: "Connecticut", DE: "Delaware", DC: "District Of Columbia", FL: "Florida", GA: "Georgia", HI: "Hawaii", ID: "Idaho", IL: "Illinois", IN: "Indiana", IA: "Iowa", KS: "Kansas", KY: "Kentucky", LA: "Louisiana", ME: "Maine", MD: "Maryland", MA: "Massachusetts", MI: "Michigan", MN: "Minnesota", MS: "Mississippi", MO: "Missouri", MT: "Montana", NE: "Nebraska", NV: "Nevada", NH: "New Hampshire", NJ: "New Jersey", NM: "New Mexico", NY: "New York", NC: "North Carolina", ND: "North Dakota", OH: "Ohio", OK: "Oklahoma", OR: "Oregon", PA: "Pennsylvania", RI: "Rhode Island", SC: "South Carolina", SD: "South Dakota", TN: "Tennessee", TX: "Texas", UT: "Utah", VT: "Vermont", VA: "Virginia", WA: "Washington", WV: "West Virginia", WI: "Wisconsin", WY: "Wyoming" } }, { key: "zip", type: "text", title: "Zip" }, { key: "pcp_name", type: "text", title: "Primary Care Physician Name" }, { key: "pcp_phone", type: "text", title: "Primary Care Physician Phone" } ] }, { code: "post_signup_tos_popup", title: "Before you can complete your registration, you must accept the Onduty Terms of Service and Privacy Policy", agree: { title: "I Agree" }, terms: { title: "View Terms" } } ] } ], terms_of_service: [ { name: "Terms of Service", code: "terms_of_service_text", sections: [ { code: "terms_of_service_text" } ] } ] }, visits: { signin: [ ], intake: [ { name: "Enter Lounge", code: "intake", next: { title: "Next" }, sections: [ { code: "update_intake", schema: { reason_for_visit: { type: "string", provider_title: "Chief Complaint", required: true, multiple: true, allow_tags: false, enum: [ "Abdominal pain", "Allergic reaction", "Anxiety", "Asthma", "Back pain", "Chest pain", "Cold/runny nose", "Constipation", "Cough", "Cut/scrape", "Depression", "Diarrhea", "Difficulty breathing", "Ear problem", "Extremity injury/fall", "Eye problem", "Fever", "Flu symptoms", "Headache", "Insect sting/bite", "Pregnancy problem", "Rash", "Seasonal allergies", "Sore throat", "Urination problem", "Vomiting", "Other (my symptoms are not listed above)" ] } }, form: [ { key: "reason_for_visit", title: "What is your health concern today?", placeholder: "Describe your symptom(s)", type: "select" } ] }, { code: "file_upload", title: "Is there any image you would like to share with the doctor today?" } ] }, { name: "Enter Lounge", code: "intake2", next: { title: "Next" }, sections: [ { code: "update_intake", schema: { location: { type: "string", required: true, enum: [ "CA" ], show_to_provider: false }, phone: { type: "string", provider_title: "Phone", required: true } }, form: [ { key: "location", type: "select", title: "Where are you located?", placeholder: "Enter state or zipcode", titleMap: { CA: "California" } }, { key: "phone", title: "Which phone number can we reach you at today?", type: "text" } ] }, { code: "emergency_warning" } ] } ], visit_type: [ { name: "Enter Lounge", code: "visit_type", sections: [ { code: "label", title: "When would you like to see a doctor?" }, { code: "visit_type" } ] } ], consent: [ { name: "Consent Forms", code: "consent_text", next: { title: "I Agree. Next" }, sections: [ { code: "consent_text" } ] } ], calendar: [ { name: "Appointment", code: "appointment_calendar", next: { title: "Next" }, sections: [ { code: "appointment_calendar", title: "Pick a Date and Time" } ] } ], post_intake: [ { name: "Enter Lounge", code: "emr", next: { title: "Next" }, sections: [ { code: "label", title: "Please update your medical history" }, { code: "emr_conditions", title: "Past Medical History" }, { code: "emr_surgeries", title: "Past Surgeries" }, { code: "emr_medications", title: "Medications" }, { code: "emr_allergies", title: "Allergies" } ] }, { name: "Enter Lounge", code: "pharmacy", next: { title: "Next" }, sections: [ { code: "pharmacy_picker", title: "If you need a prescription today, where would you like it sent?" } ] }, { name: "Enter Lounge", code: "survey", next: { title: "Submit" }, sections: [ { code: "label", title: "Your **Parameters** is valuable to help us improve our service. Please take a moment to answer the following questions." }, { code: "intake_survey" } ] } ], post_call: [ { name: "Enter Lounge", code: "survey", next: { title: "Submit" }, sections: [ { code: "label", title: "Your **Parameters** is valuable to help us improve our service. Please take a moment to answer the following questions." }, { code: "post_visit_survey" } ] } ] } }, files: [ { file_id: "56b29a3e-a72c-49e1-93f0-4c23ac1f0144", code: "logo", path: "https://api.vsee.me/api_v3/files/56b29a3e-a72c-49e1-93f0-4c23ac1f0144" }, { file_id: "56fcdfa6-c7cc-433f-b2da-1a21ac1f0144", code: "consent", path: "https://api.vsee.me/api_v3/files/56fcdfa6-c7cc-433f-b2da-1a21ac1f0144" }, { file_id: "57adac35-ac94-4c2d-aedc-7f23ac1f0144", code: "terms_of_use", path: "https://api.vsee.me/api_v3/files/57adac35-ac94-4c2d-aedc-7f23ac1f0144" } ], waiting_room: { subtitle: "If this is an emergency, please call 911 or go to your nearest emergency department.", consent: "I consent and reviewed and agreed to <a href='$link' target='_blank'>the terms of use and privacy policy</a>", enter_text: "Enter Lounge", need_schedule: true, show_code: true, average_visit_time: 3600, capacity: 100, default_room_code: "ceproom1" } } } |
Rooms API
GET /rooms [public access]
Parameters
(none)
Response
Code Block |
---|
curl -k -X GET -H "X-AccountCode: vclinic" "https://api.vsee.me/api_v3/rooms" { "data": [{ "slug": "room1", "name": "Room 1", "domain": "demo.vsee.me", "code": "room1_code", "created": 1427922788, "modified": 1427922788 }, ...] } |
POST /rooms
Parameters
Parameter | Type | Description |
---|---|---|
|
| Clinic’s domain |
|
| (optional) Room code (should be unique) |
|
| (optional) Set this room as default, other rooms will lose default status. |
|
| Room's name |
Response
Code Block |
---|
curl --location --request POST 'https://api.vsee.me/api_v3/rooms' \ --header 'X-AccountCode: vclinic' \ --header 'X-ApiToken: 83ec6843c3af534c551ab609d869dd82' \ --form 'domain=vclinic.vsee.me' \ --form 'slug=provider00102' \ --form 'name=provider00102 room' { "data": { "visits": { "walkin": { "enabled": true }, "appointment": { "enabled": false } }, "auth": { "guest": { "type": 600, "log_in": { "enabled": true } } }, "subtitle": "If this is an emergency, please call 911.", "slug": "provider00102", "name": "provider00102 room", "domain": "vclinic.vsee.me", "active": true, "users": "85741", "account_code": "clinic", "provider_ids": [ "85741" ], "public_access_room": true, "modified": 1605728974, "created": 1605728974, "payment": { "consultations": [ { "id": "5fb57ace-4808-4346-ad3c-3348925862c1", "description": "15-min Consultation", "duration": 15, "amount": 0, "group": false, "charge": false, "slots": 1 } ], "currency": "USD", "__note__": "paymentCurrency will be deprecated by 1 Jun 2017" }, "operation_settings": { "is_closed": false, "close_msg": "Service currently not available. Please check back later", "default_timezone": "America/Los_Angeles" }, "id": "171", "code": "b4vjj" } } |
GET /rooms/:code [public access]
Parameters
(none)
Response
Code Block |
---|
curl -k -X GET -H "X-AccountCode: vclinic" "https://api.vsee.me/api_v3/rooms/room1" { "data": { "description": "", "specialties": [ { "code": "general_care", "name": "Default", "duration": 15 }, { "code": "primary_care", "name": "Primary Care", "duration": 15 }, { "code": "psychiatry", "name": "Psychiatry", "duration": 30 }, { "code": "dermatology", "name": "Dermatology", "duration": 15 } ], "modified": 1466796316, "created": 1446802721, "payment": { "paymentCurrency": "USD", "consultations": [ { "description": "15-min Consultation", "amount": 0, "duration": 15 }, { "description": "30 min", "amount": 20, "duration": 30 }, { "description": "45 min", "amount": 40, "duration": 45 } ] }, "slug": "room1", "name": "Room 1", "domain": "demo.vsee.me", "code": "room1", "account_code": "DEMO-ACCOUNT" } |
GET /rooms/:code/providers [public access]
Response
Code Block |
---|
curl -k -X GET \ -H "X-AccountCode: vclinic" \ "https://api.vsee.me/api_v3/rooms/example-room-code/providers" { "data": [ { "id": "401", "username": "provider-401", "code": "", "subtype": "482", "first_name": "Jarod", "last_name": "Sun 401", "vseeid": "evisitdev+user401", "photo": null, "title": "", "suffix": "", "status": false, "short_bio": false } ] } |
GET /rooms/:code/providers/:id [public access]
Response
Code Block |
---|
curl -k -X GET \ -H "X-AccountCode: vclinic" \ "https://api.vsee.me/api_v3/rooms/ceproom1/providers/826" { "data": { "id": "826", "code": "55de45a2ce384a24ad633301ac1f0144", "first_name": "John", "last_name": "Will", "username": "provider1", "vseeid": "conciergedev+user826", "email": "anton+provider1@vsee.com", "active": true, "title": "Dr.", "suffix": "M.D.", "tos": false, "phone": "334 2222211", "subtype": "482", "status": false, "educational_training": "edu and training...", "professional_interests": "interests...", "personal_interests": "some personal hobby" } } |
GET /rooms/:code/queue [public access]
Waiting time = average_visit_time
* before_me
Response
Code Block |
---|
curl -X GET -H "X-AccountCode: vclinic" "https://api.vsee.me/api_v3/rooms/ceproom1/queue" { "data": { "length": 10, "capacity": 100, “average"average_visit_time”time": 3600, “before"before_me”me": 3 } } |
length
- total current queue lengthcapacity
- maximum possible queue lengthaverage_visit_time
- time in seconds per patientbefore_me
- patient in the queue before me
POST /users/:id/rooms
Associate a room to a user
Parameters
Parameter | Type | Description |
---|---|---|
|
| Room code |
|
| (optional) Set this room as default, other rooms will lose default status. |
Response
Code Block |
---|
curl --location --request POST 'https://api.vsee.me/api_v3/users/85741/rooms' \ --header 'X-AccountCode: vclinic' \ --header 'X-ApiToken: 83ec6843c3af534c551ab609d869dd82' \ --form 'code=b4vjj'' { "data": [ { "_id": "171", "slug": "provider00102", "name": "provider00102 room", "domain": "clinic.vseepreview.com", "code": "b4vjj", "active": true, "users": "85741", "account_code": "clinic", "provider_ids": [ "85741" ], "public_access_room": true, "modified": { "sec": 1605728974, "usec": 177000 }, "created": { "sec": 1605728974, "usec": 177000 }, "payment": { "consultations": [ { "id": "5fb57ace-4808-4346-ad3c-3348925862c1", "description": "15-min Consultation", "duration": 15, "amount": 0, "group": false, "charge": false, "slots": 1 } ] }, "default": false } ] } |
Push Notification API
Mostly for mobile appPOST /
endpointsParameters
Parameter
Type
Description
key
String
device token (for apple) or registration id (for android)
type
Integer
30 - Apple Push Notification 40 - Google Cloud Messaging
Response
rooms
Create a room
Code Block |
---|
curl --Xlocation POST -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \ -d "key=12345&type=-request POST 'https://api-template-wellevate-schedules.vseepreview.com/cc/next/api_v3/rooms' \ --header 'X-AccountCode: template-wellevate-schedules-00101' \ --header 'X-ApiToken: 83ec6843c3af534c551ab609d869dd82' \ --form 'domain=template-wellevate-schedules-00101.vseepreview.com' \ --form 'slug=uat2' \ --form 'name=UAT2' |
Input
Parameter Name | Type | Description |
|
| Clinic Admin token (app token) |
|
| |
|
| Clinic’s domain |
|
| Room code (should be unique) |
|
| (optional) Set this room as default, other rooms will lose default status. |
|
|
Response
Code Block |
---|
{
"data": {
"visits": {
"walkin": {
"enabled": true
},
"appointment": {
"enabled": true
}
},
"auth": {
"guest": {
"type": 600,
"log_in": {
"enabled": true
}
}
},
"subtitle": "If this is an emergency, please call 911.",
"slug": "uat2",
"name": "UAT2",
"domain": "template-wellevate-schedules-00101.vseepreview.com",
"active": true,
"account_code": "template-wellevate-schedules-00101",
"users": "",
"provider_ids": [],
"public_access_room": true,
"modified": 1605549399,
"created": 1605549399,
"payment": {
"consultations": [
{
"id": "5fb2bd57-9394-4cc0-934a-1b3b925862c1",
"description": "15-min Consultation",
"duration": 15,
"amount": 0,
"group": false,
"charge": false,
"slots": 1
}
],
"currency": "USD",
"__note__": "paymentCurrency will be deprecated by 1 Jun 2017"
},
"operation_settings": {
"is_closed": false,
"close_msg": "Service currently not available. Please check back later",
"default_timezone": "America/Los_Angeles"
},
"id": "169",
"code": "jstq9"
}
}
|
If room already exists (http response code 400):
Code Block |
---|
{
"code": 400,
"message": "In domain "template-wellevate-schedules-00101.vseepreview.com" slug "uat2" already exists."
} |
Push Notification API
Mostly for mobile app
POST /endpoints
Parameters
Parameter | Type | Description |
---|---|---|
|
| device token (for apple) or registration id (for android) |
|
| 30 - Apple Push Notification 40 - Google Cloud Messaging |
Response
Code Block |
---|
curl -X POST -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \
-d "key=12345&type=30" \
https://api.vsee.me/api_v3/endpoints
{
"data": {
"id": "551c5f64-a6d8-425d-b89c-581fac1f0144",
"key": "123456",
"user_id": "201",
"type": 30,
"created": 1427922788,
"modified": 1427922788
}
}
|
GET /endpoints
Retrieve all notification endpoints for current user
Parameters
Parameter | Type | Description |
---|---|---|
|
| (empty) - get all type of endpoints for current user 30 - Apple Push Notification 40 - Google Cloud Messaging |
Response
Code Block |
---|
curl -X GET -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" https://api.vsee.me/api_v3/endpoints.json
{
"data": [
{
"id": "551c5f64-a6d8-425d-b89c-581fac1f0144",
"key": "123456",
"user_id": "201",
"type": 30,
"arn": "arn:aws:sns:us-west-2:048881245029:endpoint\/APNS\/com.vsee.isos.TeleAssistance\/203fd06c-e559-3fba-a47f-87844eca4e6e",
"created": 1427922788,
"modified": 1427922788
},
{
"id": "551c6005-83d0-48f0-abfe-59c4ac1f0144",
"key": "an@vsee.com",
"user_id": "201",
"type": 10,
"created": 1427922949,
"modified": 1427922949
}
]
}
|
GET /endpoints/:id
Parameters
Parameter | Type | Description |
---|---|---|
|
| (empty) - get all type of endpoints for current user 30 - Apple Push Notification 40 - Google Cloud Messaging |
Response
Code Block |
---|
curl -X GET \ -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \ https://api.vsee.me/api_v3/endpoints/551c5f64-a6d8-425d-b89c-581fac1f0144 { "data": { "id": "551c5f64-a6d8-425d-b89c-581fac1f0144", "key": "123456", "user_id": "201", "type": 30, "created": 1427922788, "modified": 1427922788 } } |
DELETE /endpoints/:id
Parameters
Parameter | Type | Description |
---|
Response
Code Block |
---|
curl -X DELETE \ -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \ https://api.vsee.me/api_v3/endpoints/551c5f64-a6d8-425d-b89c-581fac1f0144 { "data": { "id": "551c5f64-a6d8-425d-b89c-581fac1f0144", } } |
GET /notifications
Reference here for more information: https://docs.google.com/document/d/1o-FH6yKDd8g4ecRZhJT91O8SL7luucK_zyxIFUaHxSw/edit#heading=h.gpbb94y21tki
Parameters
Parameter | Type | Description |
---|---|---|
|
| (optional) Fetch size, how many records to fetch, default to 10 |
|
| (optional) unix timestamp in ms, only fetch notifications before this time (please use the field |
Response
Code Block |
---|
curl -X GET \ -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \ https://api.vsee.me/api_v3/notifications.json { "data": [ { "id": "570f3f04-f1f4-4805-946e-178d50e631f8", "user_id": "201", "type": "foodlog.comment", "time": "1460616964", "mtime": 14606169641000, "is_new": false, "read": false, "title": "Johnathon Lavon (401) commented on a photo", "image": "http://portal.fruitstreet.dev/files/index/food/photo/1/250x250?auth_code=b9b6746928de9450db3c1265d2d90edf83c14688", "data": { "food_id": "1", "food_comment_id": "1" } } ] } |
PUT /notifications/:id
Mark a notification as read
Parameters
Parameter | Type | Description |
---|---|---|
|
| Notification id |
Response
Notification object
Code Block |
---|
curl -X PUT \ -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \ https://api.vsee.me/api_v3/notifications/570f3f04-f1f4-4805-946e-178d50e631f8 { "data": { "id": "570f3f04-f1f4-4805-946e-178d50e631f8", "user_id": "201", "type": "foodlog.comment", "time": 1460616964, "mtime": 14606169641000, "is_new": false, "read": true, "title": "Johnathon Lavon (401) commented on a photo", "image": "http://portal.fruitstreet.dev/files/index/food/photo/1/250x250?auth_code=b9b6746928de9450db3c1265d2d90edf83c14688", "data": { "food_id": "1", "food_comment_id": "1" } } } |
GET /notifications/badge
Get the badge number for notifications
Parameters
(None)
Response
Code Block |
---|
curl -X GET \ -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" \ https://api.vsee.me/api_v3/notifications/badge { "data": 5 } |
POST /notifications/badge
Reset the badge number for notifications
Parameters
(None)
Response
Code Block |
---|
curl -X POST -H "X-ApiToken: 6366a7018a39536a1ef4b63626f8e734" https://api.vsee.me/api_v3/notifications/badge { "data": true } |
File Upload API
POST /files
Parameters
Parameter | Type | Description |
---|---|---|
|
| File content |
|
| File category. This is to mark the usage of the attachments. For now the possible reasons are 'intake_attachment', 'user_consent', 'user_avatar', 'user_document' |
Response
Code Block |
---|
curl -X POST \ https://api.vsee.io/cc/ligeng/api_v3/files \ -H 'X-ApiToken: 4df5b2b7dec8a8c40e142e43c1825502' \ -H 'cache-control: no-cache' \ -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \ -F file=@/Users/teligeng/Pictures/p878984.jpg \ -F meta.category=user_document { "data": { "id": "5e15d150-19b4-4cbd-b217-332fc71b6977", "name": "p878984.jpg", "size": 40679, "ext": "jpg", "fullpath": "https://api.vsee.io/cc/ligeng/files/view/5e15d150-19b4-4cbd-b217-332fc71b6977?auth_code=e86ceb8b57c91e4db41611f08311a125e2df0b09&time=1578488144", "meta": { "category": "user_document", "target": { "id": "350936", "type": "user" }, "account": { "code": "5c47c63907c44f0486a16e1dc71b6977" }ß }, "creator": { "id": "350936", "username": "ligeng+trial14+member01@vseelab.com", "email": "ligeng+trial14+member01@vseelab.com", "full_name": "Ligeng Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Name" } } } |
POST /files/:id
Modify the document information. For now, only 'name' is allowed to be modified.
Parameters
Parameter | Type | Description |
---|---|---|
|
| File name |
Response
Code Block |
---|
curl -X POST \ https://api.vsee.io/cc/ligeng/api_v3/files/5e1598e7-4118-47ca-84da-0923c71b6977 \ -H 'X-ApiToken: 466c809667919d34d371d4c7d389392b' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -F name=test2.jpg { "data": { "id": "5e1598e7-4118-47ca-84da-0923c71b6977", "name": "test2.jpg", "size": 184259, "ext": "jpg", "fullpath": "https:\/\/api.vsee.io\/cc\/ligeng\/files\/view\/5e1598e7-4118-47ca-84da-0923c71b6977?auth_code=ed7e17f29a56cc8c4b2fec812a07e7d30f322b85&time=1579496452", "meta": { "target": { "id": "350936", "type": "user" }, "category": "user_document", "account": { "code": "5c47c63907c44f0486a16e1dc71b6977" } }, "created": 1578473704 } } |
DELETE /files/:id
Parameters
Parameter | Type | Description |
---|---|---|
|
| File id |
Response
Code Block |
---|
curl -X DELETE -H "X-ApiToken: c18e9874dccd26482e191f3d7b57d3d8" -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" -F "file=@" "https://api.vsee.me/api_v3/files/57aa6ede-bf6c-4a88-81e1-6bcdac1f0144" -k { "data": true } |
GET /files
Retrieve file list
Parameters
Parameter | Type | Description |
---|---|---|
|
| The id of the target which is related to the files |
|
| The file of the target which is related to the files. For now the possible values are 'user' and 'visit' |
|
| The category type of this file. For now the possible reasons are 'user_document', 'intake_attachment', 'user_consent', 'user_avatar'. |
Response
Code Block |
---|
curl -X GET \ > 'https://api.vsee.io/cc/ligeng/api_v3/files?target_id=350936&target_type=user' \ > -H 'X-ApiToken: 4df5b2b7dec8a8c40e142e43c1825502' \ > -H 'cache-control: no-cache' \ > -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \ > -F target_id=350936 \ > -F target_type=user { "data": [ { "id": "5e1598e7-4118-47ca-84da-0923c71b6977", "name": "55bb223fd7304.jpg", "size": 184259, "ext": "jpg", "fullpath": "https:\/\/api.vsee.io\/cc\/ligeng\/files\/view\/5e1598e7-4118-47ca-84da-0923c71b6977?auth_code=ede418b2b0b1fa5451c726a7e6959b2efabcad97&time=1578530083", "creator": { "username": "ligeng+trial14+member01@vseelab.com", "type": 200, "full_name": "Ligeng Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Name" }, "created": 1578473704 } ] } |
GET /files/:id
Retrieve file info
Parameters
Parameter | Type | Description |
---|---|---|
|
| File id |
|
| Auth code returned by other API method |
|
| Timestamp as returned by other API method |
|
| (optional) Resized image dimensions in {W}x{H} format. Example: 320x240. If the file is not image, this parameter will be ignored. Resized Image is always PNG format, Content-type: image/png header will be set in response |
Response
Code Block |
---|
curl -X GET "https://api.vsee.me/api_v3/files/57e8c9a2-5c30-4b2c-b9d0-11d6ac1f0144?auth_code=01f72b633c40c9c272f9dc73a87f1bc66694ee31&time=1475236382&size=320x480" -k Binary object |
Table of Contents |
---|