The Medpro24 API is provided under our End User License agreement.
Base URL: https://api.medpro24.com/
All API calls require the following POST parameters:
userkey: String, required. command: String, required. Command: getpatientlist
Method: POST
Description: 
yourcode: integer.firstname: String.lastname: String.email: String.cellphone: String.dateofbirth: String.
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://api.medpro24.com/",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => "userkey=your_userkey&command=getpatientlist",
    CURLOPT_HTTPHEADER => array(
        "Content-Type: application/x-www-form-urlencoded"
    ),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}
?>
            
        using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static readonly HttpClient client = new HttpClient();
    static async Task Main()
    {
        try
        {
            var url = "https://api.medpro24.com/";
            var content = new StringContent(
                "userkey=your_userkey&command=getpatientlist",
                Encoding.UTF8,
                "application/x-www-form-urlencoded"
            );
            HttpResponseMessage response = await client.PostAsync(url, content);
            response.EnsureSuccessStatusCode();
            string responseBody = await response.Content.ReadAsStringAsync();
            Console.WriteLine(responseBody);
        }
        catch (HttpRequestException e)
        {
            Console.WriteLine($"Request exception: {e.Message}");
        }
    }
} 
            
        
import requests
url = "https://api.medpro24.com/"
payload = {
    "userkey": "your_userkey",
    "command": "getpatientlist" 
}
headers = {
    "Content-Type": "application/x-www-form-urlencoded"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)
            
        
npm install axios
const axios = require('axios');
const qs = require('qs');
async function getpatientlist() {
    const url = 'https://api.medpro24.com/';
    const data = qs.stringify({
        userkey: 'your_userkey',
        command: 'getpatientlist' 
    });
    const config = {
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        }
    };
    try {
        const response = await axios.post(url, data, config);
        console.log(response.data);
    } catch (error) {
        console.error('Error making API call:', error);
    }
}
getpatientlist();
            
        Command: updatepatientdetails
Method: POST
Description: This endpoint inserts ot updates the information of a patient.
patientcode: String, required.patientname: String, required. email: String, optional. cellphone: String, optionalres_code: integer.res_text: String. 
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://api.medpro24.com/",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => "userkey=your_userkey&command=updatepatientdetails&patientcode=12345&patientname=John+Doe",
    CURLOPT_HTTPHEADER => array(
        "Content-Type: application/x-www-form-urlencoded"
    ),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}
?>
            
        using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static readonly HttpClient client = new HttpClient();
    static async Task Main()
    {
        try
        {
            var url = "https://api.medpro24.com/";
            var content = new StringContent(
                "userkey=your_userkey&command=updatepatientdetails&patientcode=12345&patientname=John+Doe&age=45&address=123+Main+St",
                Encoding.UTF8,
                "application/x-www-form-urlencoded"
            );
            HttpResponseMessage response = await client.PostAsync(url, content);
            response.EnsureSuccessStatusCode();
            string responseBody = await response.Content.ReadAsStringAsync();
            Console.WriteLine(responseBody);
        }
        catch (HttpRequestException e)
        {
            Console.WriteLine($"Request exception: {e.Message}");
        }
    }
} 
            
        
import requests
url = "https://api.medpro24.com/"
payload = {
    "userkey": "your_userkey",
    "command": "updatepatientdetails",
    "patientcode": "12345",
    "patientname": "John Doe" 
}
headers = {
    "Content-Type": "application/x-www-form-urlencoded"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)
            
        
npm install axios
const axios = require('axios');
const qs = require('qs');
async function updatePatientDetails() {
    const url = 'https://api.medpro24.com/';
    const data = qs.stringify({
        userkey: 'your_userkey',
        command: 'updatepatientdetails',
        patientcode: '12345',
        patientname: 'John Doe' 
    });
    const config = {
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        }
    };
    try {
        const response = await axios.post(url, data, config);
        console.log(response.data);
    } catch (error) {
        console.error('Error making API call:', error);
    }
}
updatePatientDetails();
            
        Command: updateexam
Method: POST
Description: This endpoint updates the details of a patient's exam.
examname: String, requiredexamcode: String, requiredpatientcode: String, requiredexamdate: Date (YYYY-MM-DD), requiredresult: String, optionalresultunits: String, optionalresultsfile: file, optional<?php
$curl = curl_init();
// Path to the file you want to upload
$filepath = '/path/to/your/file.jpg';
$filedata = new CURLFile($filePath, 'image/png', basename($filepath));
// Payload data including the file
$data = array(
    'userkey' => 'your_userkey',
    'command' => 'updateexam',
    'examname' => $yourexamname, // Name of the exam ex. Cholesterol HDL OR Brain MRI SAG FLAIR
    'examcode' => $yourexamcode, // Your system code for this exam
    'patientcode' => $yourpatientcode, // Your code for this patient
    'examdate' => $dateofexam, // YYYYMMDD formatted date
    'result' => $lineresults, // If it is a numeric or text result
    'resultunits' => $resultunits, // Units for numeric results
    'resultsfile' => $filedata // Adding file to the payload in case of imaging etc
);
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://api.medpro24.com/",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => $data, 
    CURLOPT_HTTPHEADER => array(
        "Content-Type: multipart/form-data"  
    ),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}
?>
            using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.IO;
class Program
{
    static readonly HttpClient client = new HttpClient();
    static async Task Main()
    {
        try
        {
            var url = "https://api.medpro24.com/";
            var filePath = @"path\to\your\file\0000001.jpg"; // Specify the path for the exam file
            await UpdateExam(url, "your_userkey", "12345", "Cholesterol HDL", "EX123", "20240605", "200", "mg/dL", filePath);
        }
        catch (Exception e)
        {
            Console.WriteLine($"Exception: {e.Message}");
        }
    }
    static async Task UpdateExam(string url, string userkey, string patientcode, string examname, string examcode, string examdate, string result, string resultunits, string filePath)
    {
        using (var content = new MultipartFormDataContent())
        {
            content.Add(new StringContent(userkey), "userkey");
            content.Add(new StringContent("updateexam"), "command");
            content.Add(new StringContent(patientcode), "patientcode");
            content.Add(new StringContent(examname), "examname");
            content.Add(new StringContent(examcode), "examcode");
            content.Add(new StringContent(examdate), "examdate");
            content.Add(new StringContent(result), "result");
            content.Add(new StringContent(resultunits), "resultunits");
            if (File.Exists(filePath))
            {
                var fileContent = new ByteArrayContent(File.ReadAllBytes(filePath));
                fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/jpeg");
                content.Add(fileContent, "resultsfile", Path.GetFileName(filePath));
            }
            else
            {
                Console.WriteLine("File not found.");
                return;
            }
            HttpResponseMessage response = await client.PostAsync(url, content);
            response.EnsureSuccessStatusCode();
            string responseBody = await response.Content.ReadAsStringAsync();
            Console.WriteLine(responseBody);
        }
    }
}
            import requests
url = "https://api.medpro24.com/"
# Path to the file you want to test
file_path = '/path/to/your/file.jpg'
# Open the file in binary mode
with open(file_path, 'rb') as file:
    files = {
        'resultsfile': (file_path, file, 'image/jpeg')  # In case of imaging etc, specify the path for the file, assuming the file is a JPEG image (this can be an image, a PDF or a raw DICOM file)
    }
 
    payload = {
        "userkey": "your_userkey",
        "command": "runmodel",
        "examname": "12345", // Name of the exam ex. Cholesterol HDL OR Brain MRI SAG FLAIR
        "examcode": "12345", // Your system code for this exam
        "patientcode": "12345", // Your code for this patient
        "examdate": "", // YYYYMMDD formatted date
        "result": "12345", // If it is a numeric or text result
        "resultunits": "12345" // Units for numeric results 
    }
    # Make the POST request
    response = requests.post(url, data=payload, files=files)
    # Print the response text
    print(response.text)
            
    npm install axios form-data
    const axios = require('axios');
    const qs = require('qs'); 
    const FormData = require('form-data');
    const fs = require('fs');
    async function updateexam() {
        const url = 'https://api.medpro24.com/';
        
        // Create an instance of FormData
        const form = new FormData();
        // Append fields to the form 
        form.append('userkey', 'your_userkey');
        form.append('command', 'updateexam');
        form.append('examname', '12345'); // Name of the exam ex. Cholesterol HDL OR Brain MRI SAG FLAIR
        form.append('examcode', '12345'); // Your system code for this exam
        form.append('patientcode', '12345'); // Your code for this patient
        form.append('examdate', '12345'); // YYYYMMDD formatted date
        form.append('result', '12345'); // If it is a numeric or text result
        form.append('resultunits', '12345'); // Units for numeric results 
        // Path to the file you want to upload
        const filePath = '/path/to/your/file.jpg'; # Specify the path for the file in case of imaging etc, assuming the file is a JPEG image (this can be an image, a PDF or a raw DICOM file)
        // Ensure the file exists
        if (fs.existsSync(filePath)) {
            // Append file to form
            form.append('resultsfile', fs.createReadStream(filePath), {
                filename: 'file.jpg', // Optional, form-data derives it from the file path 
                contentType: 'image/jpeg', // Optional, form-data can derive it from the file extension
                knownLength: fs.statSync(filePath).size // Optional, improves upload performance
            });
        } else {
            console.log('File not found');
            return;
        }
        // Axios configuration for the request
        const config = {
            headers: {
                ...form.getHeaders(), // Automatically sets the content-type to multipart/form-data with boundary
            }
        };
        try {
            const response = await axios.post(url, form, config);
            console.log(response.data);
        } catch (error) {
            console.error('Error making API call:', error);
        }
    }  
    updateexam();
                
            Command: updateprescription
Method: POST
Description: This endpoint updates the details of a patient's exam.
patientcode: String, requiredprescriptioncode: String, requiredprescriptiondate: Date (YYYY-MM-DD), requiredprescriptiontext: String, requiredquantity: Numeric, optionalunits: String, optionalfrequency: Integer, optional<?php
    $curl = curl_init();
 
    $data = array(
        'userkey' => 'your_userkey',
        'command' => 'updateprescription',
        'patientcode' => $yourpatientcode, // Your code for this patient
        'prescriptiontext' => $prescriptiontext, // Name of the prescription ex. Vitamin D 4000 iu daily
        'prescriptioncode' => $yourprescriptioncode, // Your system code for this prescription ex. ABC0001
        'prescriptiondate' => $dateofprescription, // YYYYMMDD formatted date 
        'quantity' => $prescr_quantity, // ex. 4000
        'units' => $prescr_units, // ex. 'iu'
        'frequency' => $prescr_frequency // Frequency in hours ex. '24'
    );
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://api.medpro24.com/",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_POSTFIELDS => $data, 
        CURLOPT_HTTPHEADER => array(
            "Content-Type: application/x-www-form-urlencoded"
        ),
    ));
    $response = curl_exec($curl);
    $err = curl_error($curl);
    curl_close($curl);
    if ($err) {
        echo "cURL Error #:" . $err;
    } else {
        echo $response;
    }
    ?>
            using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static readonly HttpClient client = new HttpClient();
    static async Task Main()
    { 
        await UpdatePrescription("your_userkey", "your_patientcode", "prescription_text", "your_prescriptioncode", "date_of_prescription", "quantity", "units");
    }
    static async Task UpdatePrescription(string userKey, string patientCode, string prescriptionText, string prescriptionCode, string dateOfPrescription, string quantity, string units)
    {
        try
        {
            var url = "https://api.medpro24.com/";
            var content = new StringContent(
                $"userkey={userKey}&command=updateprescription&patientcode={patientCode}&prescriptiontext={prescriptionText}&prescriptioncode={prescriptionCode}&prescriptiondate={dateOfPrescription}&quantity={quantity}&units={units}",
                Encoding.UTF8,
                "application/x-www-form-urlencoded"
            );
            HttpResponseMessage response = await client.PostAsync(url, content);
            response.EnsureSuccessStatusCode();
            string responseBody = await response.Content.ReadAsStringAsync();
            Console.WriteLine(responseBody);
        }
        catch (HttpRequestException e)
        {
            Console.WriteLine($"Request exception: {e.Message}");
        }
    }
                    }
            import requests
def update_prescription(userkey, patientcode, prescriptiontext, prescriptioncode, prescriptiondate, quantity, units, frequency):
    url = "https://api.medpro24.com/"
    payload = {
        "userkey": userkey,
        "command": "updateprescription",
        "patientcode": patientcode,  # Your code for this patient
        "prescriptiontext": prescriptiontext,  # Name of the prescription e.g., Vitamin D 4000 iu daily
        "prescriptioncode": prescriptioncode,  # Your system code for this prescription e.g., ABC0001
        "prescriptiondate": prescriptiondate,  # YYYYMMDD formatted date
        "quantity": quantity,  # e.g., 4000
        "units": units,  # e.g., 'iu'
        "frequency": frequency  # Frequency in hours e.g., '24'
    }
    headers = {
        "Content-Type": "application/x-www-form-urlencoded"
    }
    response = requests.post(url, data=payload, headers=headers)
    print(response.text)
# Example call
update_prescription("your_userkey", "12345", "Vitamin D 4000 iu daily", "ABC0001", "20240604", "4000", "iu", "24")
                
            const axios = require('axios');
async function updatePrescription(userkey, patientcode, prescriptiontext, prescriptioncode, prescriptiondate, quantity, units, frequency) {
    const url = 'https://api.medpro24.com/';
    const payload = {
        userkey: userkey,
        command: 'updateprescription',
        patientcode: patientcode,  // Your code for this patient
        prescriptiontext: prescriptiontext,  // Name of the prescription e.g., Vitamin D 4000 iu daily
        prescriptioncode: prescriptioncode,  // Your system code for this prescription e.g., ABC0001
        prescriptiondate: prescriptiondate,  // YYYYMMDD formatted date
        quantity: quantity,  // e.g., 4000
        units: units,  // e.g., 'iu'
        frequency: frequency  // Frequency in hours e.g., '24'
    };
    const headers = {
        'Content-Type': 'application/x-www-form-urlencoded'
    };
    try {
        const response = await axios.post(url, payload, { headers: headers });
        console.log(response.data);
    } catch (error) {
        console.error('Error making the POST request:', error.message);
    }
}
// Example call
updatePrescription('your_userkey', '12345', 'Vitamin D 4000 iu daily', 'ABC0001', '20240604', '4000', 'iu', '24');
            Command: listmodels
Method: POST
Description: Returns a list of available models to run.
instrument: Alphanumeric, optionalexamtype: Alphanumeric, optional<?php
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://api.medpro24.com/",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_POSTFIELDS => "userkey=your_userkey&command=listmodels",
        CURLOPT_HTTPHEADER => array(
            "Content-Type: application/x-www-form-urlencoded"
        ),
    ));
    $response = curl_exec($curl);
    $err = curl_error($curl);
    curl_close($curl);
    if ($err) {
        echo "cURL Error #:" . $err;
    } else {
        echo $response;
    }
    ?>
            using System;
    using System.Net.Http;
    using System.Text;
    using System.Threading.Tasks;
    class Program
    {
        static readonly HttpClient client = new HttpClient();
        static async Task Main()
        {
            try
            {
                var url = "https://api.medpro24.com/";
                var content = new StringContent(
                    "userkey=your_userkey&command=listmodels",
                    Encoding.UTF8,
                    "application/x-www-form-urlencoded"
                );
                HttpResponseMessage response = await client.PostAsync(url, content);
                response.EnsureSuccessStatusCode();
                string responseBody = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseBody);
            }
            catch (HttpRequestException e)
            {
                Console.WriteLine($"Request exception: {e.Message}");
            }
        }
    } 
                
            import requests
url = "https://api.medpro24.com/"
payload = {
    "userkey": "your_userkey",
    "command": "listmodels" 
}
headers = {
    "Content-Type": "application/x-www-form-urlencoded"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)
                
             npm install axios
    const axios = require('axios');
    const qs = require('qs');
    async function listmodels() {
        const url = 'https://api.medpro24.com/';
        const data = qs.stringify({
            userkey: 'your_userkey',
            command: 'listmodels' 
        });
        const config = {
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            }
        };
        try {
            const response = await axios.post(url, data, config);
            console.log(response.data);
        } catch (error) {
            console.error('Error making API call:', error);
        }
    }
    listmodels();
                
            Command: runmodel
Method: POST
Description: Submit an image for classification.
modelid: Integer, requiredimage: File, required<php
$curl = curl_init();
// Path to the file you want to test
$filePath = '/path/to/your/file.jpg';
$fileData = new CURLFile($filePath, 'image/jpeg', basename($filePath));
// Payload data including the file
$data = array(
    'userkey' => 'your_userkey',
    'command' => 'runmodel',
    'modelid' => $modelid,
    'image' => $fileData // Adding file to the payload
);
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://api.medpro24.com/",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => $data, 
    CURLOPT_HTTPHEADER => array(
        "Content-Type: multipart/form-data"  
    ),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}
?>
            using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.IO;
class Program
{
    static readonly HttpClient client = new HttpClient();
    static async Task Main()
    {
        try
        {
            var url = "https://api.medpro24.com/";
            var filePath = @"path\to\your\file\0000001.jpg"; // Specify the path for the file you want to test (this can be an image, a PDF or a raw DICOM file)
            using (var content = new MultipartFormDataContent())
            {'    
                content.Add(new StringContent("your_userkey"), "userkey");
                content.Add(new StringContent("runmodel"), "command");
                content.Add(new StringContent("12345"), "modelid"); // the id of the model you want to run 
 
                if (File.Exists(filePath))
                {
                    // Read file into a byte array and add to the multipart form data content
                    var fileContent = new ByteArrayContent(File.ReadAllBytes(filePath));
                    fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/jpeg"); 
                    content.Add(fileContent, "resultsfile", Path.GetFileName(filePath));
                }
                else
                {
                    Console.WriteLine("File not found.");
                    return;
                }
                HttpResponseMessage response = await client.PostAsync(url, content);
                response.EnsureSuccessStatusCode();
                string responseBody = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseBody);
            }
        }
        catch (HttpRequestException e)
        {
            Console.WriteLine($"Request exception: {e.Message}");
        }
    }
}
                
            import requests
url = "https://api.medpro24.com/"
# Path to the file you want to test
file_path = '/path/to/your/file.jpg'
# Open the file in binary mode
with open(file_path, 'rb') as file:
    files = {
        'file': (file_path, file, 'image/jpeg')  # Specify the path for the file you want to test, assuming the file is a JPEG image (this can be an image, a PDF or a raw DICOM file)
    }
    # Data to be sent; files do not need to be included in the payload dictionary
    payload = {
        "userkey": "your_userkey",
        "command": "runmodel",
        "modelid": "12345", 
    }
    # Make the POST request
    response = requests.post(url, data=payload, files=files)
    # Print the response text
    print(response.text)
            
    npm install axios form-data
    const axios = require('axios');
    const qs = require('qs'); 
    const FormData = require('form-data');
    const fs = require('fs');
    async function runmodel() {
        const url = 'https://api.medpro24.com/';
        
        // Create an instance of FormData
        const form = new FormData();
        // Append fields to the form
        form.append('userkey', 'your_userkey');
        form.append('command', 'runmodel');
        form.append('modelid', '12345'); 
        // Path to the file you want to upload
        const filePath = '/path/to/your/file.jpg'; # Specify the path for the file you want to test, assuming the file is a JPEG image (this can be an image, a PDF or a raw DICOM file)
        // Ensure the file exists
        if (fs.existsSync(filePath)) {
            // Append file to form
            form.append('file', fs.createReadStream(filePath), {
                filename: 'file.jpg', // Optional, form-data derives it from the file path 
                contentType: 'image/jpeg', // Optional, form-data can derive it from the file extension
                knownLength: fs.statSync(filePath).size // Optional, improves upload performance
            });
        } else {
            console.log('File not found');
            return;
        }
        // Axios configuration for the request
        const config = {
            headers: {
                ...form.getHeaders(), // Automatically sets the content-type to multipart/form-data with boundary
            }
        };
        try {
            const response = await axios.post(url, form, config);
            console.log(response.data);
        } catch (error) {
            console.error('Error making API call:', error);
        }
    }  
    runmodel();