POS Universal API
The following API documentation is meant for third party Point Of Sale (POS) applications to interact with the PioneerRx Pharmacy System. It is split into 2 main functions: RxQuery and RxComplete.
RxQuery allows the third party to query for Rx information about a patient and/or linked patients.
RxComplete is called by the third party to indicate when an Rx is actually sold to a patient along with various pieces of data used to update the PioneerRx Pharmacy System.
Change Log
Version | Date | Change | Comments |
---|---|---|---|
1 | 08/17/2016 | Initial Version | |
1 | 08/31/2016 | XML Formatting Changes | There were issues with using attributes during xml serialization. Now using elements |
1 | 09/07/2016 | RxQuery Rx Data Fields Removed | Removed totalAmountPaid, totalTaxPaid |
1 | 09/07/2016 | Field Added to RxQuery Rx Data | Added totalThirdPartyAmountPaid |
1 | 09/14/2016 | Changed Known Error “No Results for Method” status code to 500 | |
1 | 10/07/2016 | Changed goingGreenFlag to electronicPatientEducation | |
1 | 10/07/2016 | Removed forGoingGreen field from RxComplete Signature Data | |
1 | 11/04/2016 | Removed Status from Rx under RxComplete | The Status is on the RxComplete Root Data and was mistakenly included on the Rx as well. If sent on Rx it will be ignored, client should always set on RxComplete Root Data. |
1 | 12/09/2016 | Updated Transmission Security Section | Added note about option to add hosts file entry for certificate verification |
1 | 08/23/2017 | Updated Required Information for RxComplete Data Elements | Updated Patient Data and PickedUpBy Data sections for RxComplete - set Required to Conditional for several fields |
1 | 01/22/2020 | Removed patients from RxComplete | Removed patients from RxCompleteRequest object and removed Patient Data section from RxComplete - this data is not needed as updates to patient records will not be done through this api. |
1 | 09/23/2021 | Updated RxComplete json example | Updated signature data. Removed xml encoding from example |
Communication
The API will use HTTPS Web Services to communicate between the 2 systems.
Insecure http traffic will not be allowed.
The communication will occur locally at the pharmacy between the POS systems and PioneerRx’s Server. The IP Address and/or DNS names can vary per store. The POS system should be configurable to allow for modifications of the IP address and/or DNS Name.
Transmission Details
Web Services will be provided for this API. Standard POST HTTP method will be used, and are documented with each call below.
Data will be transmitted using JSON or XML.
Security
Transmission Security
Transmission Security will use SSL (TLS) protocols.
Authentication
For Authentication, 2 pieces of data will be used:
- VendorKey - a string value unique to each POS Vendor
- DataExchangeID - a GUID unique to each pharmacy location. For Chain Environments, a DataExchangeID can be provided for the entire company of pharmacy locations.
These will be passed in each request. There are 2 options for passing this in:
- Direct Headers (preferred) - They can be sent through standard http headers. The header names should be VendorKey and DataExchangeID
- Basic Auth Header - Alternatively, you can send a Basic Auth Header where the VendorKey is the username and the DataExchangeID is the password value.
Examples:
Direct Headers
The following would go in your HTTP Headers:
Vendor-Key: <VendorKeyValue>
Data-Exchange-ID: <DataExchangeIDValue>
Example HTTP Headers:
POST /api/POS/RxQuery HTTP/1.1
Host: 127.0.0.1
Vendor-Key: EE211B5F-E9EC-4169-8864-3528330530BC
Data-Exchange-ID: 6528776A-34BD-4B7B-A290-92125F4FBD2A
Basic Auth Headers
To Support Basic Auth Headers, you will use the VendorKey as the username and the DataExchangeID as the password.
You would create the value for the header by appending these together with a colon (:)
<VendorKeyValue>:<DataExchangeIDValue>
Then you would need to Base 64 encode this string and put it in the Authorization header, marking it as Basic
Example HTTP Headers:
POST /api/POS/RxQuery HTTP/1.1
Host: 127.0.0.1
Authorization: Basic
RUUyMTFCNUYtRTlFQy00MTY5LTg4NjQtMzUyODMzMDUzMEJDOjY1Mj
g3NzZBLTM0QkQtNEI3Qi1BMjkwLTkyMTI1RjRGQkQyQQ==
Error Handling
Error Response Example 1
{
"message": "Authorization has been denied for this request."
}
<?xml version="1.0" encoding="utf-8"?>
<error xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<message>Authorization has been denied for this request.</message>
</error>
Error Response Example 2
{
"message": "No HTTP resource was found that matches the request URI 'http://localhost:27923/api/Value'.",
"messageDetail": "No type was found that matches the controller named 'Value'."
}
<?xml version="1.0" encoding="utf-8"?>
<error xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<message>No HTTP resource was found that matches the request URI 'http://localhost:27923/api/Value'.</message>
<messageDetail>No type was found that matches the controller named 'Value'.</messageDetail>
</error>
We will use HTTP Status Codes to indicate success or error.
Success: 200 will be returned.
Error: Any value other than 200, for example 204 (No Content) or codes in the 400 or 500 range of status codes.
Known errors will include an error message back from the service as JSON or XML (based on the Content-Type header you requested).
Refer to code examples (Error Response Example 1 and Error Response Example 2) for RAW Response Bodies
General Known Errors
Each method will have a set of known errors (see each method’s Known Errors section for details), however general known errors are also possible. They are listed below:
Message | HTTP Status Code | Description |
---|---|---|
Authorization has been denied for this request. | 401 | The VendorKey and/or DataExchangeID are invalid or unauthorized |
Vendor Application Not Enabled | 503 | The Vendor’s POS Application has not been enabled for this location, please have the pharmacy contact support if this is in error. |
No HTTP resource was found that matches the request URI ‘XXX’ | 404 | The resource you attempted to reach is invalid. Double check your Method Name is correctly |
No Results for Method | 500 | The request returned no results and was expected to return something |
Invalid data provided for field : <Field> | 500 | The data provided is invalid (incorrect type, invalid format, or logically invalid) |
Data Types
The following describes the syntax used to express the data types in the documentation:
Data Type Format | Description | Examples |
---|---|---|
String(X) | A text string containing any UTF-8 valid character. |
String - “Hello” |
Int | Integer Value - 4 bytes (-2,147,483,648 to 2,147,483,647) | 1 |
Guid | A unique identifier, commonly referred to as GUID or UUID depending on the platform | 4418B788-D634-49BE-B598-75E80643A654 |
Deicmal(P,S) | A decimal number. P stands for the fixed precision, S stands for the fixed scale. Values are padded to the right only. Left 0’s will not be used. Standard Rounding is used if needed. | Examples for value: 12.345 |
Money | A value representing money amounts. This is an 8 byte SQL Server Money value, it will be output much like a Decimal, but has the following limits: -922,337,203,685,477.5808 to 922,337,203,685,477.5807 | 10.00 |
Date | A Date value. This does not include any time information. Format: yyyy-mm-dd | 2016-07-29 |
DateTime | A Date and Time value. Format: yyyy-mm-ddThh:mi:ss.mmmZ (ISO 8601 standard with TimeZone) | 2016-07-29T14:31:45.667Z |
Data Naming Conventions
Data Naming Example
{"lookupType":...}
<lookupType>...</lookupType>
Data will follow the names in the specs below. Note that camelCase format is used throughout.
For example on RxQuery’s Request, LookupType is the field. We will represent it as “lookupType”
Refer to code example (Data Naming Example)
RxQuery
Endpoint
The endpoint for RxQuery is:
/api/POS/RxQuery
For example the full URL would be something like the following (where example is the domain or IP address of the Pharmacy’s server):
https://example/api/POS/RxQuery
Request
RxQueryRequest Root Data
Field | DataType | Required | Values/Description | Examples |
---|---|---|---|---|
lookupType | INT | No, will default to 0 if not provided | 0 - Rx Number with 2 Digit Refill Number (0 padded) or PioneerRx Barcode on Label |
0 |
lookupValue | VARIABLE based on LookupType: |
YES | Based on Lookup Type: |
Based on Lookup Type: |
returnType | INT | No, will default to 0 if not provided | 0 - this Rx Only |
0 |
version | INT | No, will default to most recent version | Used to specify a specific version of the expected response format. The current version is listed at the top of this documentation. | 1 |
includeRelationshipTypes | INT | No, will default to 0 (false) | 0 = No/false - do not include |
1 |
includeIDTypes | INT | No, will default to 0 (false) | 0 = No/false - do not include |
1 |
includePassportOrigins | INT | No, will default to 0 (false) | 0 = No/false - do not include |
1 |
Response
The Response is a Hierarchy of data. Complex data will be detailed in tables below the main Response.
The Diagram below show the Hierarchical relationship of the objects. They will be implemented in the appropriate XML or JSON syntax depending on your Content-Type.
RxQueryResponse Root Data
Field | DataType | Always Present | Values/Description | Examples |
---|---|---|---|---|
version | INT | YES | The API Version of the data | 1 |
patients | Patient List | YES | This should always be present. If there are none found, you will receive an error (See General Errors and RxQuery Errors) | See Patient Data Section |
patientIDSearched | Guid | YES | The ID of the Patient that was originally searched for. This can be used to help filter the main Patient from the Linked Patients if using one of the Linked Patient Options | 1 |
relationshipTypes | RelationshipType List | NO | If IncludeRelationshipTypes flag equals 1, then we will include the types | See RelationshipType Data Section |
idTypes | IDType List | NO | If IncludeIDTypes flag equals 1, then we will include the types | See IDType Data Section |
passportOrigins | PassportOrigin List | NO | If IncludePassportOrigins flag equals 1, then we will include the types | See PassportOrigins Data Section |
Patient Data
Field | DataType | Always Present | Values/Description | Examples |
---|---|---|---|---|
patientID | Guid | YES | A unique PatientID for the Patient in the PioneerRx Pharmacy System for the pharmacy they are a part of | 4418B788-D634-49BE-B598-75E80643A654 |
centralKey | Int | NO | A key used in PioneerRx Central Chain Environments, this is not applicable to all pharmacies | 12345 |
identityLocal | Int | NO | A unique integer value for a patient within the local PioneerRx Pharmacy Database for the pharmacy they are a part of | 47848 |
salutation | String(10) | NO | The Salutation portion of the patient’s name | Mr. |
firstName | String(50) | NO | The First portion of the patient’s name | John |
middleName | String(30) | NO | The full Middle portion of the patient’s name | David |
lastName | String(50) | NO | The Last portion of the patient’s name | Doe |
suffix | String(10) | NO | The Suffix portion of the patient’s name if applicable | Jr. |
primaryAddress | Address | NO | The Primary Address on file for the Patient | See Address Data Section |
deliveryAddress | Address | NO | The Delivery Address on file for the Patient | See Address Data Section |
mailingAddress | Address | NO | The Mailing Address on file for the Patient | See Address Data Section |
rxs | Rx List | YES | A list (Array) of Rx Data for the Patient, based on the request settings passed in | See RxQuery Rx Data Section |
hipaaSignatureRequired | Int | YES | 0 = Not Required |
1 |
easyOpen | Int | YES | 0 = Patient does NOT wish to have Easy Open Caps |
1 |
dateOfBirth | Date | NO | The Date of Birth for the Patient | 2001-02-03 (February 3, 2001) |
electronicPatientEducation | Int | YES | 0 = Not Enrolled |
1 |
primaryPhone | Phone | NO | The primary phone number on file for the patient | See Phone Data Section |
smsPhone | Phone | NO | The SMS (Text) phone number on file for the patient | See Phone Data Section |
smsCarrierDomain | String(75) | NO | The SMS (Text) gateway for the patient | txt.att.net |
emailAddress | String(255) | NO | The email address for the patient | johndoe@test.com |
Address Data
Field | DataType | Always Present | Values/Description | Examples |
---|---|---|---|---|
street | String(200) | NO | The Street Address for the address. Each line of the patient’s address will have a newline separating them | 123 Main Street |
city | String(40) | NO | The City for the address. | Smalltown |
state | String(2) | NO | The State for the address. | LA |
zipCode | String(9) | NO | The ZipCode for the address, the full zipcode will be provided to the best level available. It will be either 5 or 9 characters long where 9 represents a full zip like 12345-6789 | 12345 |
Phone Data
Field | DataType | Always Present | Values/Description | Examples |
---|---|---|---|---|
phone | String(10) | YES | The unformatted phone number. It will be the 10 digit american phone number. | For phone (123) 456-7890: |
extension | String(8) | NO | The extension for the phone number if applicable. | 123 |
Rx Data
Field | DataType | Always Present | Values/Description | Examples |
---|---|---|---|---|
rxID | Guid | YES | A unique identifier for the Rx from the PioneerRx system. This relates to the prescribed Rx (not the individual fill) | 24D1D07A-B2EC-4ACD-8941-BBA4DC1E7798 |
rxTransactionID | Guid | YES | A unique identifier for the Rx Transaction from the PioneerRx system. An Rx Transaction refers to the individual fill for a prescription. | 951121B1-691A-4805-B4D4-CFDC8D27601B |
rxNumber | Int | YES | The RxNumber that is shown to the patient and end users | 12345 |
fillNumber | Int | YES | The fill number. First initial fill will be 0, the next refill 1, 2, etc. | 0 |
readyToBeSold | Int | YES | 0 = Not ready to be sold, should prompt the user with an alert |
1 |
readyToBeSoldAlertText | String | NO | Present when ReadyToBeSold is 0. The text should be shown to the end user. It will contain a message as to why it is not ready. | Script Not Checked |
statusTypeID | Int | YES | The following are the workflow status of the prescription. These can be used to determine the additional status level of items. These and other factors are used to determine if it is ready to be sold. This list may grow over time, use the StatusTypeText to refer to the type of new statuses. The numbers below are not necessarily in order of workflow. |
5 |
statusTypeText | String(50) | YES | The text description of the StatusTypeID | To Be Put in Bin |
refillsRemaining | Int | YES | Number of Refills Remaining based on Quantity Prescribed versus Total Quantity Dispensed to date | 3 |
prescribedDrugName | String(100) | YES | The Drug Name of the Prescribed Item | Paxil 10 Mg Tablet |
prescribedNDC | String(20) | NO | The NDC for the Item. Some Items may not have an NDC, for example some compounds. This will be the unformatted NDC. | 68382009705 |
prescribedQuantity | Decimal(15,5) | NO | The Quantity of the original prescription | 30.00000 |
dispensedDrugName | String(100) | YES | The Drug Name of the Dispensed Item for this fill | Paroxetine Hcl 10 Mg Tablet |
dispensedNDC | String(20) | NO | The NDC for the Item. Some Items may not have an NDC, for example some compounds. This will be the unformatted NDC. | 68382009705 |
dispensedQuantity | Decimal(15,5) | YES | The Quantity that was dispensed | 30.00000 |
dateFilled | Date | YES | The Date of the Fill (normally in the past, unless the pharmacy has deliberately chosen a future date) | 2016-08-03 (August 3, 2016) |
patientAmountOwed | MONEY | YES | The total amount owed by the Patient for this fill, not including any tax amounts | 123.4567 |
taxAmountOwedByPatient | MONEY | YES | The total tax amounts for this fill | 0.0000 |
totalThirdPartyAmountPaid | MONEY | YES | Total Amount Paid from all third parties, including tax | 567.8921 |
promptForCounseling | Int | YES | 0 = Counseling Not Required |
1 |
easyOpenSignatureRequired | Int | YES | Easy Open refers to caps and devices that are easy to open (not child proof) for certain patients |
1 |
isControlled | Int | YES | Based on the settings in PioneerRx for their jurisdiction, is this drug considered a Controlled Drug to be reported to PMP | 1 |
drugSchedule | Int | NO | The DEA Schedule of the Drug | 2 |
isDrugOfConcern | Int | YES | Based on the settings in PioneerRx by the pharmacy: |
1 |
patientIDRequired | Int | YES | This is for the Patient for the Rx in question: |
1 |
patientAddressRequired | Int | YES | This is for the Patient for the Rx in question: |
1 |
patientPhoneRequired | Int | YES | This is for the Patient for the Rx in question: |
1 |
pickupIDRequired | Int | YES | This is related to the person pickup up the script, this may or may not be the patient, but certain PMP rules may require Picked Up By Information: |
1 |
pickupNameRequired | Int | YES | This is related to the person pickup up the script, this may or may not be the patient, but certain PMP rules may require Picked Up By Information: |
1 |
pickupRelationshipTypeRequired | Int | YES | This is related to the person pickup up the script, this may or may not be the patient, but certain PMP rules may require Picked Up By Information: |
1 |
RelationshipType Data
The list (array) of relationship types send a lookup list of the relationship types that are supported for this pharmacy on PioneerRx. This is a fairly static list, but can change over time, so we are providing it in the data so that you will always have the lookup for the types that are valid.
Field | DataType | Always Present | Values/Description | Examples |
---|---|---|---|---|
id | Int | YES | The ID of the type, you will use this when sending the type back in the RxComplete messages. Current values (but can change over time) are: |
1 |
name | String(100) | YES | The Text Name of the type | Child |
IDType Data
The list (array) of ID types send a lookup list of the ID types that are supported for this pharmacy on PioneerRx. This is a fairly static list, but can change over time, so we are providing it in the data so that you will always have the lookup for the types that are valid.
Field | DataType | Always Present | Values/Description | Examples |
---|---|---|---|---|
id | Int | YES | The ID of the type, you will use this when sending the type back in the RxComplete messages. Current values (but can change over time) are: |
11 |
name | String(50) | YES | The Text Name of the type | Driver’s License |
PassportOrigin Data
The list (array) of passport origin types send a lookup list of the passport origin types that are supported for this pharmacy on PioneerRx. This is a fairly static list, but can change over time, so we are providing it in the data so that you will always have the lookup for the types that are valid.
Field | DataType | Always Present | Values/Description | Examples |
---|---|---|---|---|
id | Int | YES | The ID of the type, you will use this when sending the type back in the RxComplete messages. Current values (but can change over time) are: |
0 |
name | String(255) | YES | The Text Name of the type | USA |
Examples
Request
{
"lookupType": "0",
"lookupValue": "12345000",
"returnType": 5,
"version": 1,
"includeRelationshipTypes": 1,
"includeIDTypes": 1,
"includePassportOrigins": 1
}
<?xml version="1.0" encoding="UTF-8"?>
<rxQueryRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<lookupType>0</lookupType>
<lookupValue>1234500</lookupValue>
<returnType>5</returnType>
<version>1</version>
<includeRelationshipTypes>1</includeRelationshipTypes>
<includeIDTypes>1</includeIDTypes>
<includePassportOrigins>1</includePassportOrigins>
</rxQueryRequest>
Response
{
"version":1,
"patients":[
{
"patientID":"4418B788-D634-49BE-B598-75E80643A654",
"centralKey":12345,
"identityLocal":47848,
"salutation":"Mr.",
"firstName":"John",
"middleName":"David",
"lastName":"Doe",
"suffix":"Jr.",
"primaryAddress":{
"street":"123 Main Street",
"city":"SmallTown",
"state":"LA",
"zipCode":"12345"
},
"deliveryAddress":{
"street":"123 Main Street",
"city":"SmallTown",
"state":"LA",
"zipCode":"12345"
},
"mailingAddress":{
"street":"123 Main Street",
"city":"SmallTown",
"state":"LA",
"zipCode":"12345"
},
"Rxs":[
{
"rxID":"24D1D07A-B2EC-4ACD-8941-BBA4DC1E7798",
"rxTransactionID":"951121B1-691A-4805-B4D4-CFDC8D27601B",
"rxNumber":12345,
"fillNumber":0,
"readyToBeSold":0,
"readyToBeSoldAlertText":"Script Not Checked",
"statusTypeID":4,
"statusTypeText":"Waiting for Check",
"refillsRemaining":3,
"prescribedDrugName":"Paxil 10 Mg Tablet",
"prescribedNDC":"68382009705",
"prescribedQuantity":30.00000,
"dispensedDrugName":"Paroxetine Hcl 10 Mg Tablet",
"dispensedDrugNDC":"68382009705",
"dispensedQuantity":30.00000,
"dateFilled":"2016-08-03",
"patientAmountOwed":123.4567,
"taxAmountOwedByPatient":0.0000,
"totalThirdPartyAmountPaid":567.8921,
"promptForCounseling":1,
"easyOpenSignatureRequired":1,
"isControlled":1,
"drugSchedule":2,
"isDrugOfConcern":1,
"patientIDRequired":1,
"patientAddressRequired":1,
"patientPhoneRequired":1,
"pickupIDRequired":1,
"pickupNameRequired":1,
"pickupRelationshipTypeRequired":1
}
],
"hipaaSignatureRequired":1,
"easyOpen":1,
"dateOfBirth":"2001-02-03",
"electronicPatientEducation":1,
"primaryPhone":{
"phone":"1234567890",
"extension":"123"
},
"smsPhone":{
"phone":"1234567890",
"extension":"123"
},
"smsCarrierDomain":"txt.att.net",
"emailAddress":"johndoe@test.com"
}
],
"patientIDSearched":"4418B788-D634-49BE-B598-75E80643A654",
"relationshipTypes":[
{
"id":1,
"Name":"Patient"
},
{
"id":2,
"Name":"Parent/Legal Guardian"
},
{
"id":3,
"Name":"Spouse"
},
{
"id":4,
"Name":"Caregiver"
},
{
"id":5,
"Name":"Other"
}
],
"idTypes":[
{
"id":0,
"Name":"Other"
},
{
"id":1,
"Name":"Military ID"
},
{
"id":2,
"Name":"Other State Issued ID"
},
{
"id":3,
"Name":"Passport"
},
{
"id":4,
"Name":"Permanent Resident ID"
},
{
"id":10,
"Name":"SSN"
},
{
"id":11,
"Name":"Driver's License"
}
],
"passportOrigins":[
{
"id":0,
"Name":"USA"
},
{
"id":1,
"Name":"Other"
}
]
}
<?xml version="1.0" encoding="utf-8"?>
<rxQueryResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<version>1</version>
<patientIDSearched>6b60892a-e86b-4e36-8a1e-3dd67132adb8</patientIDSearched>
<patients>
<patient>
<patientID>4418B788-D634-49BE-B598-75E80643A654</patientID>
<centralKey>12345</centralKey>
<identityLocal>47848</identityLocal>
<salutation>Mr.</salutation>
<firstName>John</firstName>
<middleName>David</middleName>
<lastName>Doe</lastName>
<suffix i:nil="true"/>
<hipaaSignatureRequired>1</hipaaSignatureRequired>
<easyOpen>1</easyOpen>
<dateOfBirth>2001-02-03</dateOfBirth>
<electronicPatientEducation>1</electronicPatientEducation>
<smsCarrierDomain>txt.att.net</smsCarrierDomain>
<emailAddress>johndoe@test.com</emailAddress>
<primaryAddress>
<street>123 Main Street</street>
<city>SmallTown</city>
<state>LA</state>
<zipCode>12345</zipCode>
</primaryAddress>
<deliveryAddress>
<street>123 Main Street</street>
<city>SmallTown</city>
<state>LA</state>
<zipCode>12345</zipCode>
</deliveryAddress>
<mailingAddress>
<street>123 Main Street</street>
<city>SmallTown</city>
<state>LA</state>
<zipCode>12345</zipCode>
</mailingAddress>
<rxs>
<rx>
<rxID>24D1D07A-B2EC-4ACD-8941-BBA4DC1E7798</rxID>
<rxTransactionID>951121B1-691A-4805-B4D4-CFDC8D27601B</rxTransactionID>
<rxNumber>12345</rxNumber>
<fillNumber>0</fillNumber>
<readyToBeSold>1</readyToBeSold>
<readyToBeSoldAlertText>Script Not Checked</readyToBeSoldAlertText>
<statusTypeID>4</statusTypeID>
<statusTypeText>Waiting for Check</statusTypeText>
<refillsRemaining>3</refillsRemaining>
<prescribedDrugName>Paxil 10 Mg Tablet</prescribedDrugName>
<prescribedNDC>68382009705</prescribedNDC>
<prescribedQuantity>30.00000</prescribedQuantity>
<dispensedDrugName>Paroxetine Hcl 10 Mg Tablet</dispensedDrugName>
<dispensedNDC>68382009705</dispensedNDC>
<dispensedQuantity>30.0000</dispensedQuantity>
<dateFilled>2016-08-03</dateFilled>
<patientAmountOwed>123.4567</patientAmountOwed>
<taxAmountOwedByPatient>0.0000</taxAmountOwedByPatient>
<totalThirdPartyAmountPaid>567.8921</totalThirdPartyAmountPaid>
<promptForCounseling>1</promptForCounseling>
<easyOpenSignatureRequired>1</easyOpenSignatureRequired>
<isControlled>1</isControlled>
<drugSchedule>2</drugSchedule>
<isDrugOfConcern>1</isDrugOfConcern>
<patientIDRequired>1</patientIDRequired>
<patientAddressRequired>1</patientAddressRequired>
<patientPhoneRequired>1</patientPhoneRequired>
<pickupIDRequired>1</pickupIDRequired>
<pickupNameRequired>1</pickupNameRequired>
<pickupRelationshipTypeRequired>1</pickupRelationshipTypeRequired>
</rx>
</rxs>
<primaryPhone>
<phone>1234567890</phone>
<extension>123</extension>
</primaryPhone>
<smsPhone>
<phone>1234567890</phone>
<extension i:nil="true"/>
</smsPhone>
</patient>
</patients>
<relationshipTypes>
<relationshipType>
<id>1</id>
<name>Patient</name>
</relationshipType>
<relationshipType>
<id>2</id>
<name>Parent/Legal Guardian</name>
</relationshipType>
<relationshipType>
<id>3</id>
<name>Spouse</name>
</relationshipType>
<relationshipType>
<id>4</id>
<name>Caregiver</name>
</relationshipType>
<relationshipType>
<id>5</id>
<name>Other</name>
</relationshipType>
</relationshipTypes>
<idTypes>
<idType>
<id>1</id>
<name>Military ID</name>
</idType>
<idType>
<id>2</id>
<name>Other State Issued ID</name>
</idType>
<idType>
<id>3</id>
<name>Passport</name>
</idType>
<idType>
<id>4</id>
<name>Permanent Resident ID</name>
</idType>
<idType>
<id>10</id>
<name>SSN</name>
</idType>
<idType>
<id>11</id>
<name>Driver's License</name>
</idType>
</idTypes>
<passportOrigins>
<passportOrigin>
<id>0</id>
<name>USA</name>
</passportOrigin>
<passportOrigin>
<id>1</id>
<name>Other</name>
</passportOrigin>
</passportOrigins>
</rxQueryResponse>
Note: the new line and space formatting that is provided in the examples may not appear in the raw data
Known Error Responses
No additional Known Errors for RxQuery at this time
RxComplete
Endpoint
The endpoint for RxComplete is:
/api/POS/RxComplete
For example the full URL would be something like the following (where example is the domain or IP address of the Pharmacy’s server):
https://example/api/POS/RxComplete
Request
The Request is a Hierarchy of data. Complete data will be detailed in tables below the main Request
The diagram below shows the Hierarchical relationship of the objects. They will be implemented in the appropriate XML or JSON syntax depending on your Content-Type.
RxCompleteRequest Root Data
Field | DataType | Required | Values/Description | Examples |
---|---|---|---|---|
version | INT | YES | The API Version for the data | 1 |
externalPOSSaleID | String(100) | YES | The external POS’s unique ID for this sale. The format will be based on the third party POS’s data model. | 12345 |
rxs | Rx List | YES | This should always be present. If there are none found, you will receive an error (See General Errors and RxComplete Errors) | See RxComplete Rx Data Section |
saleType | Int | YES | 1 = Sale |
1 |
processedOn | DateTime | NO | The Date and Time the external system sold/returned the sale. Time Zone information is required. If in UTC, use the standard Z style format | 2016-07-29T14:31:45.667+06:00 |
pickedUpBy | PickedUpBy | NO | If collecting Picked Up By Data, this should be sent | See PickedUpBy Data |
signatures | Signature List | NO | The signatures for this sale | See Signature Data |
counselingStatus | Int | YES | 0 = Was not asked |
1 |
Rx Data
Field | DataType | Required | Values/Description | Examples |
---|---|---|---|---|
rxNumber | INT | YES | The RxNumber (not including fill number) that was acted on | 12345 |
fillNumber | INT | YES | The Fill Number that was acted on | 0 |
price | MONEY | NO | If the external POS overrided the Price, you should include the Price without the Tax here. If left blank or null, it will use the original price | 12.3456 |
tax | MONEY | NO | If the external POS overrided the Price, you should include the Tax here. If left blank or null, it will use the original tax | 0.1000 |
PickedUpBy Data
Field | DataType | Required | Values/Description | Examples |
---|---|---|---|---|
relationshipTypeID | Int | YES | The Relationship Type for the Picked Up By | 1 |
salutation | String(10) | NO | The Salutation portion of the patient’s name | Mr. |
firstName | String(50) | YES | The First portion of the patient’s name | John |
middleName | String(30) | YES | The full Middle portion of the patient’s name | David |
lastName | String(50) | YES | The Last portion of the patient’s name | Doe |
suffix | String(10) | NO | The Suffix portion of the patient’s name if applicable | Jr. |
idTypeID | Int | YES | The IDType for the ID | 11 |
idValue | String(128) | YES | The value for the ID | 1234567890 |
idIssuingState | String(2) | Conditional | The State Code for the Issuing State. Required to be 2 characters and a valid state code. Required if the IDTypeID is Driver’s License or Other State Issued ID | LA |
passportOriginID | Int | Conditional | The PassportOriginID for the passport. Required if IDTypeID is for a passport | 0 |
Signature Data
Field | DataType | Required | Values/Description | Examples |
---|---|---|---|---|
signatureType | Int | YES | The Type of Signature |
1 |
data | String(max) | YES | The data for the signature |
See Signature Information for example of the different formats |
width | Int | Conditional | Required for OPOS signature. SVG signatures should put this field in the data element itself. | 500 |
height | Int | Conditional | Required for OPOS signature. SVG signatures should put this field in the data element itself. | 300 |
strokeWidth | Int | Conditional | Required for OPOS signature. SVG signatures should put this field in the data element itself. |
3 |
forSale | Int | YES | Indicates signing for the sale | 1 |
forNOPP | Int | YES | Indicates signing for receipt of NOPP | 1 |
forEasyOpen | Int | YES | Indicates signing for acceptance of Easy Open | 1 |
oposHeaderBytes | Int | Conditional | Required if OPOS signature. It is the number of bytes in the header of the OPOS data. (Commonly 1 byte) | 1 |
Response
Response Root Data
Field | DataType | Always Present | Values/Description | Examples |
---|---|---|---|---|
version | INT | YES | The API Version of the data | 1 |
saleTransactionID | Guid | YES | The internal ID for the Sale in PioneerRx | 569FCD7B-BBAD-4905-A2D9-26274E2D9F50 |
saleReceiptNumber | INT | YES | The Receipt Number for the Sale | 12345 |
Examples
Request
{
"version": 1,
"externalPOSSaleID": "12345",
"rxs": [{
"rxNumber": 1234,
"fillNumber": 0,
"price": 12.3456,
"tax": 0.10000
}],
"saleType": 1,
"processedOn": "2016-07-29T14:31:45.667+06:00",
"pickedUpBy": {
"relationshipTypeID": 1,
"salutation": "Mr.",
"firstName": "John",
"middleName": "David",
"lastName": "Doe",
"suffix": "Jr.",
"idTypeID": 11,
"idValue": "1234567890",
"idIssuingState": "LA",
"passportOriginID": 0
},
"signatures": [{
"signatureType": 1,
"data": "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"680\" height=\"200\" version=\"1.1\"><polyline points=\"148,140 147,140 146,139 143,135 140,131 138,125 136,117 134,106 132,99 132,91 132,86 132,81 132,79 132,76 132,72 132,68 134,65 137,61 140,58 143,57 146,56 148,56 151,56 155,59 158,65 160,71 164,80 165,84 167,90 168,98 169,103 169,110 169,114 169,117 169,120 169,121 169,122 169,123 169,124 169,125 169,127 169,129 168,131 167,134 166,136 165,138 163,140 162,141 160,143 158,145 156,147 154,148 152,150 151,152 148,153 147,155 146,156 144,157 143,158 143,159 142,159 142,158 142,153 143,145 148,137 153,129 159,122 163,117 167,112 170,109 175,107 178,105 181,104 183,103 186,103 188,103 190,103 192,103 194,103 195,104 196,106 197,108 198,109 198,111 200,113 200,115 200,117 200,119 200,120 200,121 200,122 200,123 198,124 197,125 196,125 195,126 194,126 193,127 192,127 189,127 187,127 185,127 183,127 181,126 180,125 178,124 177,122 177,121 176,119 176,115 176,113 176,112 176,111 176,110 177,110 179,110 180,110 182,110 184,110 185,110 187,110 188,110 189,110 190,110 190,110\" fill=\"none\" stroke=\"#000000\" stroke-width=\"3\"/><polyline points=\"199,81 199,82 199,88 199,97 199,105 199,113 199,119 199,123 199,127 199,129 199,130 199,131 199,131\" fill=\"none\" stroke=\"#000000\" stroke-width=\"3\"/><polyline points=\"199,107 200,107 202,107 204,107 207,107 209,107 211,107 214,107 215,107 218,110 219,113 220,116 221,119 222,124 222,130 222,135 222,139 222,142 222,143 222,144 222,145 222,145\" fill=\"none\" stroke=\"#000000\" stroke-width=\"3\"/><polyline points=\"228,123 228,122 228,120 228,117 228,114 228,112 228,111 229,111 231,111 232,112 234,115 235,117 237,120 238,124 239,129 240,133 240,137 241,141 242,143 242,145 244,146 244,149 244,151 244,152 244,153 244,153\" fill=\"none\" stroke=\"#000000\" stroke-width=\"3\"/><polyline points=\"274,93 274,94 274,98 274,103 274,109 274,113 274,117 274,119 274,121 274,121\" fill=\"none\" stroke=\"#000000\" stroke-width=\"3\"/><polyline points=\"274,93 274,91 274,90 277,86 280,83 284,80 288,77 294,74 298,72 302,72 306,72 310,72 312,74 315,76 318,79 319,85 320,93 320,102 320,109 320,116 320,121 318,129 314,135 311,139 306,142 302,144 299,145 296,145 290,145 287,145 284,143 282,141 280,139 279,137 278,135 277,132 277,130 277,129 277,128 277,127 277,127\" fill=\"none\" stroke=\"#000000\" stroke-width=\"3\"/><polyline points=\"330,125 331,125 330,125 328,126 327,127 325,128 324,129 322,131 318,135 316,138 315,142 315,145 315,147 315,149 315,150 315,151 316,152 318,152 320,152 322,152 325,152 327,150 331,148 333,146 336,143 337,141 339,140 340,137 340,136 341,135 341,134 341,133 340,129 338,126 336,125 334,124 333,124 332,124 331,124 330,124 330,124\" fill=\"none\" stroke=\"#000000\" stroke-width=\"3\"/><polyline points=\"354,132 355,132 357,132 359,132 360,132 361,132 362,130 362,129 362,128 362,127 362,125 362,124 360,123 354,122 352,122 350,122 349,122 348,122 348,123 347,125 347,127 346,129 346,131 346,132 346,133 347,133 349,134 350,134 352,134 356,134 359,134 362,134 366,133 369,132 373,131 376,130 378,129 380,128 381,127 382,126 383,126 383,126\" fill=\"none\" stroke=\"#000000\" stroke-width=\"3\"/></svg>",
"width": "500",
"height": "300",
"strokeWidth": "3",
"forSale": 1,
"forNOPP": 1,
"forEasyOpen": 1,
"oposHeaderBytes": 1
}],
"counselingStatus": 1
}
<?xml version="1.0" encoding="UTF-8"?>
<rxCompleteRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<version>1</version>
<externalPOSSaleID>12345</externalPOSSaleID>
<saleType>1</saleType>
<processedOn>2016-07-29T14:31:45.667+06:00</processedOn>
<counselingStatus>1</counselingStatus>
<rxs>
<rx>
<rxNumber>1234</rxNumber>
<fillNumber>0</fillNumber>
<price>12.3456</price>
<tax>0.1000</tax>
</rx>
</rxs>
<pickedUpBy>
<relationshipTypeID>1</relationshipTypeID>
<salutation>Mr.</salutation>
<firstName>John</firstName>
<middleName>David</middleName>
<lastName>Doe</lastName>
<suffix>Jr.</suffix>
<idTypeID>11</idTypeID>
<idValue>1234567890</idValue>
<idIssuingState>LA</idIssuingState>
<passportOriginID>0</passportOriginID>
</pickedUpBy>
<signatures>
<signature>
<signatureType>1</signatureType>
<data><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="680" height="200" version="1.1">
<polyline points="148,140 147,140 146,139 143,135 140,131 138,125 136,117 134,106 132,99 132,91 132,86 132,81 132,79 132,76 132,72 132,68 134,65 137,61 140,58 143,57 146,56 148,56 151,56 155,59 158,65 160,71 164,80 165,84 167,90 168,98 169,103 169,110 169,114 169,117 169,120 169,121 169,122 169,123 169,124 169,125 169,127 169,129 168,131 167,134 166,136 165,138 163,140 162,141 160,143 158,145 156,147 154,148 152,150 151,152 148,153 147,155 146,156 144,157 143,158 143,159 142,159 142,158 142,153 143,145 148,137 153,129 159,122 163,117 167,112 170,109 175,107 178,105 181,104 183,103 186,103 188,103 190,103 192,103 194,103 195,104 196,106 197,108 198,109 198,111 200,113 200,115 200,117 200,119 200,120 200,121 200,122 200,123 198,124 197,125 196,125 195,126 194,126 193,127 192,127 189,127 187,127 185,127 183,127 181,126 180,125 178,124 177,122 177,121 176,119 176,115 176,113 176,112 176,111 176,110 177,110 179,110 180,110 182,110 184,110 185,110 187,110 188,110 189,110 190,110 190,110" fill="none" stroke="#000000" stroke-width="3"/>
<polyline points="199,81 199,82 199,88 199,97 199,105 199,113 199,119 199,123 199,127 199,129 199,130 199,131 199,131" fill="none" stroke="#000000" stroke-width="3"/>
<polyline points="199,107 200,107 202,107 204,107 207,107 209,107 211,107 214,107 215,107 218,110 219,113 220,116 221,119 222,124 222,130 222,135 222,139 222,142 222,143 222,144 222,145 222,145" fill="none" stroke="#000000" stroke-width="3"/>
<polyline points="228,123 228,122 228,120 228,117 228,114 228,112 228,111 229,111 231,111 232,112 234,115 235,117 237,120 238,124 239,129 240,133 240,137 241,141 242,143 242,145 244,146 244,149 244,151 244,152 244,153 244,153" fill="none" stroke="#000000" stroke-width="3"/>
<polyline points="274,93 274,94 274,98 274,103 274,109 274,113 274,117 274,119 274,121 274,121" fill="none" stroke="#000000" stroke-width="3"/>
<polyline points="274,93 274,91 274,90 277,86 280,83 284,80 288,77 294,74 298,72 302,72 306,72 310,72 312,74 315,76 318,79 319,85 320,93 320,102 320,109 320,116 320,121 318,129 314,135 311,139 306,142 302,144 299,145 296,145 290,145 287,145 284,143 282,141 280,139 279,137 278,135 277,132 277,130 277,129 277,128 277,127 277,127" fill="none" stroke="#000000" stroke-width="3"/>
<polyline points="330,125 331,125 330,125 328,126 327,127 325,128 324,129 322,131 318,135 316,138 315,142 315,145 315,147 315,149 315,150 315,151 316,152 318,152 320,152 322,152 325,152 327,150 331,148 333,146 336,143 337,141 339,140 340,137 340,136 341,135 341,134 341,133 340,129 338,126 336,125 334,124 333,124 332,124 331,124 330,124 330,124" fill="none" stroke="#000000" stroke-width="3"/>
<polyline points="354,132 355,132 357,132 359,132 360,132 361,132 362,130 362,129 362,128 362,127 362,125 362,124 360,123 354,122 352,122 350,122 349,122 348,122 348,123 347,125 347,127 346,129 346,131 346,132 346,133 347,133 349,134 350,134 352,134 356,134 359,134 362,134 366,133 369,132 373,131 376,130 378,129 380,128 381,127 382,126 383,126 383,126" fill="none" stroke="#000000" stroke-width="3"/>
</svg></data>
<width>500</width>
<height>300</height>
<strokeWidth>3</strokeWidth>
<forSale>1</forSale>
<forNOPP>1</forNOPP>
<forEasyOpen>1</forEasyOpen>
<oposHeaderBytes>1</oposHeaderBytes>
</signature>
</signatures>
</rxCompleteRequest>
Response
{
"version":1,
"saleTransactionID":"569FCD7B-BBAD-4905-A2D9-26274E2D9F50",
"saleReceiptNumber":12345
}
<?xml version="1.0" encoding="utf-8"?>
<rxCompleteResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<version>1</version>
<saleTransactionID>569FCD7B-BBAD-4905-A2D9-26274E2D9F50</saleTransactionID>
<saleReceiptNumber>12345</saleReceiptNumber>
</rxCompleteResponse>
Note: the new line and space formatting that is provided in the examples may not appear in the raw data
Known Error Responses
In addition to the General Known Error Responses, the following are known possible errors for RxComplete:
Message | HTTP Status Code | Description |
---|---|---|
Default Service User is not set in Location Options | 500 | The Default Service User must be set in the PioneerRx Location Options for the pharmacy. |
Unable to locate Rx <RxNumber> to sell | 500 | The Rx Number was not found |
Rx <RxNumber> cannot be sold | 500 | The Rx cannot be sold, refer to the status message for that Rx for its status |
Rx <RxNumber> cannot be returned, it has not been sold | 500 | The Rx was to be returned, but cannot as it has not yet been sold |
Signature Information
This section describes the raw data of a signature. See the Signature Type above for meta data fields related to the signature.
Signatures can be in 2 formats:
- SVG
- OPOS
Both have specific implementations that PioneerRx understands, as described below:
SVG
PioneerRx support a subset of SVG for signatures.
This is the preferred format, as it is optimized and will perform faster on RxComplete.
The SVG is formatted with SVG 1.1.
In the root svg element, width and height attributes are required to be set.
The only content in the root will be a series of polyline elements.
Each polyline will contain a points attribute. Inside the points attribute each point will be shown by coordinates using x,y format. A single space will separate each point.
Each polyline will also have the following attributes: fill, stroke, stroke-width.
fill: should be “none”.
stroke: should be black (#000000).
stroke-width: should be a width that works best for your type of signature pad. We’ve seen most average around 3, but you should test out your SVG to see what works best.
Each line (aka pen up and then later pen down) will be separated by a new polyline element. The order of the polyline elements will be the order the user drew the lines.
To test your SVG, you can create the SVG data and save it as a file with the .svg extension. Several Internet Browsers and Photo Viewers can open this file to preview the SVG. For example on WIndows, most Internet Explorer versions can display SVG.
Example
SVG Signature Example
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="680" height="200" version="1.1">
<polyline points="148,140 147,140 146,139 143,135 140,131 138,125 136,117 134,106 132,99 132,91 132,86 132,81 132,79 132,76 132,72 132,68 134,65 137,61 140,58 143,57 146,56 148,56 151,56 155,59 158,65 160,71 164,80 165,84 167,90 168,98 169,103 169,110 169,114 169,117 169,120 169,121 169,122 169,123 169,124 169,125 169,127 169,129 168,131 167,134 166,136 165,138 163,140 162,141 160,143 158,145 156,147 154,148 152,150 151,152 148,153 147,155 146,156 144,157 143,158 143,159 142,159 142,158 142,153 143,145 148,137 153,129 159,122 163,117 167,112 170,109 175,107 178,105 181,104 183,103 186,103 188,103 190,103 192,103 194,103 195,104 196,106 197,108 198,109 198,111 200,113 200,115 200,117 200,119 200,120 200,121 200,122 200,123 198,124 197,125 196,125 195,126 194,126 193,127 192,127 189,127 187,127 185,127 183,127 181,126 180,125 178,124 177,122 177,121 176,119 176,115 176,113 176,112 176,111 176,110 177,110 179,110 180,110 182,110 184,110 185,110 187,110 188,110 189,110 190,110 190,110" fill="none" stroke="#000000" stroke-width="3"/>
<polyline points="199,81 199,82 199,88 199,97 199,105 199,113 199,119 199,123 199,127 199,129 199,130 199,131 199,131" fill="none" stroke="#000000" stroke-width="3"/>
<polyline points="199,107 200,107 202,107 204,107 207,107 209,107 211,107 214,107 215,107 218,110 219,113 220,116 221,119 222,124 222,130 222,135 222,139 222,142 222,143 222,144 222,145 222,145" fill="none" stroke="#000000" stroke-width="3"/>
<polyline points="228,123 228,122 228,120 228,117 228,114 228,112 228,111 229,111 231,111 232,112 234,115 235,117 237,120 238,124 239,129 240,133 240,137 241,141 242,143 242,145 244,146 244,149 244,151 244,152 244,153 244,153" fill="none" stroke="#000000" stroke-width="3"/>
<polyline points="274,93 274,94 274,98 274,103 274,109 274,113 274,117 274,119 274,121 274,121" fill="none" stroke="#000000" stroke-width="3"/>
<polyline points="274,93 274,91 274,90 277,86 280,83 284,80 288,77 294,74 298,72 302,72 306,72 310,72 312,74 315,76 318,79 319,85 320,93 320,102 320,109 320,116 320,121 318,129 314,135 311,139 306,142 302,144 299,145 296,145 290,145 287,145 284,143 282,141 280,139 279,137 278,135 277,132 277,130 277,129 277,128 277,127 277,127" fill="none" stroke="#000000" stroke-width="3"/>
<polyline points="330,125 331,125 330,125 328,126 327,127 325,128 324,129 322,131 318,135 316,138 315,142 315,145 315,147 315,149 315,150 315,151 316,152 318,152 320,152 322,152 325,152 327,150 331,148 333,146 336,143 337,141 339,140 340,137 340,136 341,135 341,134 341,133 340,129 338,126 336,125 334,124 333,124 332,124 331,124 330,124 330,124" fill="none" stroke="#000000" stroke-width="3"/>
<polyline points="354,132 355,132 357,132 359,132 360,132 361,132 362,130 362,129 362,128 362,127 362,125 362,124 360,123 354,122 352,122 350,122 349,122 348,122 348,123 347,125 347,127 346,129 346,131 346,132 346,133 347,133 349,134 350,134 352,134 356,134 359,134 362,134 366,133 369,132 373,131 376,130 378,129 380,128 381,127 382,126 383,126 383,126" fill="none" stroke="#000000" stroke-width="3"/>
</svg>
Refer to SVR Signature Example
When rendered it shows the following:
OPOS
The OPOS signature is a BASE 64 encoded array of bytes that contains coordinates
The data from OPOS hardware sometimes has header bytes of data (we commonly see 1 byte). It is important that you set the oposHeaderBytes property on the Signature to the number of header bytes for your system.
Each coordinate of a point of the signature data occupies 4 bytes.
The four byte coordinate is organized as x (low bits), x (high bits), y (low bits), and y (high bits).
There is a reserved coordinate value of 0xFFFF, 0xFFFF that indicates a pen lift.
Example
OPOS Base64 Signature (1 Byte Header) Example
T/ACGwOyAlcDlQE5A3cBWALvAQ0CZwIcAkkCSAPvAXMF4AFzBdEBGQXRAUcElALPAwwDVwMbAyoD7gKEAxsD3gN1A7EDhAMqA
4QDGwNIAxsDKgMqA7EDSAODBN8CoQSUAqEEOgKSBBwCZQQrAvwDowL8AzkDGgTtAxoE/AMaBKIDOAQ5A2UEGwODBJMDoQSxAx
kFZgNGBSoDZAWiA2QF7QORBSoDoAUqA6AFdQOgBbEDoAWiA80FkwP/////aQjRAVIIswGPB5UBNQfgAXEHWAIlCNACNAhmA7w
H/ANiBxoEJgeTA60HKgMWCCoDQwixA44ISAPKCO4Cygj9AsoIogPoCCoD9wgbA/cIZgMVCRsDJAkbA0IJOQNRCYQDYAlIA6sJ
7gLJCd8CyQlXA9gJwAMjCnUDjAqUApsKKwKbCg0CjAobA4wKVwPmCjkDuAuyAscL/gGpC5UBIgvCASIL7gJAC88DqQvfAj8Ml
AL/////HgyyAiEMZgNODKIDmQyEA5kMZgOKDGYD//////AJhQJBCpQC9QqUAhMLlAKqCpQC/////8MJ0QH/////
Refer to OPOS Base64 Signature (1 Byte Header) Example
When rendered this OPOS signature shows the following:
Barcode Example
PioneerRx Contact Information
For all technical and business questions, concerns, or issues, please email PioneerRxDataPrograms@PioneerRx.com.
This email is monitored by our data integration team and someone will be in contact once reviewed. If a call is needed, please email us your topics and questions and we will setup a call with the appropriate individuals.
This is not meant to be given to users (ie, pharmacies). The most appropriate solution for them, if to use the PioneerRx Support Request features we have to ask for assistance.
If not contacted in the appropriate ways, persons may have to wait longer than necessary as requests then have to be internally re-routed at PioneerRx.