NAV
json xml

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.

Workflow Diagram

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:

These will be passed in each request. There are 2 options for passing this in:

  1. Direct Headers (preferred) - They can be sent through standard http headers. The header names should be VendorKey and DataExchangeID
  2. 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.
X represents the max length, if applicable. The
length is variable however, so it may contain less
than the max length as appropriate

String - “Hello”
String(2) - “He”
String(15) - “Hello”

Int Integer Value - 4 bytes (-2,147,483,648 to 2,147,483,647)

1
-1
0
1234567

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

Decimal(10,3):
12.345

Decimal(12,2):
12.35

Decimal(10,1):
12.3

Decimal(10,4):
12.3450

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
12.3456

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

2016-07-29T14:31:45.667+06:00

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
1 - Rx Number with 3 Digit Refill Number (0 padded)
2 - Rx Number (without Refill Number
3 - Patient ID
4 - Patient Central Key
5 - Patient Identity Local

0
lookupValue

VARIABLE based on LookupType:
0 - String
1 - String
2 - String
3 - GUID
4 - INT
5 - INT

YES

Based on Lookup Type:
0 - the Rx Number or the PioneerRx Rx Barcode String (Raw barcode - See Example). The last 2 characters must be the zero-padded Refill Number.123
1 - the Rx Number. The last 3 characters must be the zero-padded Refill number.123
2 - the Rx Number. The Refill Number will not be included and the lastest Refill will be used.13
3 - the PatientID GUID from PioneerRx
4 - the Patient Central Key (INT) from PioneerRx
5 - the Patient Identity Local (INT) from PioneerRx

1Any non-numeric characters will be dropped for example C1234 = 1234.

2Original FIlls will have a Refill Number of 0 (00 or 000 based on padding). The first refill (the second fill) will be 1 (01 or 001), and so on.

3Leading 0’s and leading and trailing spaces are ignored

Based on Lookup Type:
0 - “1234500”
1 - “12345000”
2 - “12345”
3 - “4418B788-D634-49BE-B598-75E80643A654”
4 - “5678”
5 - “4848”

returnType INT No, will default to 0 if not provided

0 - this Rx Only
1 - this Rx and Bag (if applicable)
2 - All Ready To Be Sold Rxs for this Patient
3 - All Ready To Be Sold or Pending Rxs for this Patient
4 - All Ready To Be Sold (only) for this Patient and/or Linked Patients
5 - All Ready To Be Sold or Pending Rxs for this Patient and/or Linked Patients

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 = Yes/true - include the list of lookups

1
includeIDTypes INT No, will default to 0 (false)

0 = No/false - do not include
1 = Yes/true - include the list of lookups

1
includePassportOrigins INT No, will default to 0 (false)

0 = No/false - do not include
1 = Yes/true - include the list of lookups

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 Diagram

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 = Required

1
easyOpen Int YES

0 = Patient does NOT wish to have Easy Open Caps

1 = Patient DOES 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 = 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
123456789

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:
1234567890

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 = Ready to be sold - the script is ready and POS can move forward with the sale

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.

1 = Waiting for Data Entry
2 = Waiting for Pre-check
3 = Waiting for Fill
4 = Waiting for Check
5 = To Be Put in Bin
6 = Waiting for Pick up
7 = Waiting for Delivery
8 = Waiting to Transmit
9 = Reject Third Party
10 = Completed
11 = Out for Delivery
12 = Reversed
13 = Reject Secondary Third Party
14 = Reject Profit
15 = Reversed Secondary
16 = Cancelled
17 = Waiting for Print

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 = Prompt to have the user counseled

1
easyOpenSignatureRequired Int YES

Easy Open refers to caps and devices that are easy to open (not child proof) for certain patients

0 = Not Required
1 = Required

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:

0 = Not a drug of concern
1 = A Drug of Concern

1
patientIDRequired Int YES

This is for the Patient for the Rx in question:

0 = No Identification is required for PMP Reporting
1 = Identification is required (See IDType for list of ID Types)

1
patientAddressRequired Int YES

This is for the Patient for the Rx in question:

0 = Address is not required for PMP Reporting
1 = Address is required for PMP Reporting and should be validated and/or updated

1
patientPhoneRequired Int YES

This is for the Patient for the Rx in question:

0 = Phone Number is not required for PMP Reporting
1 = Phone Number is required for PMP Reporting and should be validated and/or updated

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:


0 = No Identification is required for PMP Reporting
1 = Identification is required (See IDType for list of ID Types)

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:


0 = Name is not required
1 = Name is required and should be collected

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:


0 = RelationshipType is not required
1 = RelationshipType is required (See RelationshipType data for details on the types)

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 = Patient
2 = Parent/Legal Guardian
3 = Spouse
4 = Caregiver
5 = Other

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:

0 = Other
1 = Military ID
2 = Other State Issued ID
3 = Passport
4 = Permanent Resident ID
10 = SSN
11 = Driver’s License

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 = USA
1 = Other

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 Diagram

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
2 = Return

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 = Patient Requested Counseling
2 = Patient Declined Counseling

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 = SVG (preferred)
2 = OPOS base 64

1
data String(max) YES

The data for the signature
XML Note: this is expected as the content of the Signature Element

Note: This will need to be encoded properly to allow for either JSON or XML

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.

The stroke width of the signature. You should work with PioneerRx to determine the best strokeWidth for your signature pad’s resolution

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>&lt;!DOCTYPE svg PUBLIC &quot;-//W3C//DTD SVG 1.1//EN&quot; &quot;http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd&quot;&gt;
&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;680&quot; height=&quot;200&quot; version=&quot;1.1&quot;&gt;
    &lt;polyline points=&quot;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&quot; fill=&quot;none&quot; stroke=&quot;#000000&quot; stroke-width=&quot;3&quot;/&gt;
    &lt;polyline points=&quot;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&quot; fill=&quot;none&quot; stroke=&quot;#000000&quot; stroke-width=&quot;3&quot;/&gt;
    &lt;polyline points=&quot;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&quot; fill=&quot;none&quot; stroke=&quot;#000000&quot; stroke-width=&quot;3&quot;/&gt;
    &lt;polyline points=&quot;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&quot; fill=&quot;none&quot; stroke=&quot;#000000&quot; stroke-width=&quot;3&quot;/&gt;
    &lt;polyline points=&quot;274,93 274,94 274,98 274,103 274,109 274,113 274,117 274,119 274,121 274,121&quot; fill=&quot;none&quot; stroke=&quot;#000000&quot; stroke-width=&quot;3&quot;/&gt;
    &lt;polyline points=&quot;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&quot; fill=&quot;none&quot; stroke=&quot;#000000&quot; stroke-width=&quot;3&quot;/&gt;
    &lt;polyline points=&quot;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&quot; fill=&quot;none&quot; stroke=&quot;#000000&quot; stroke-width=&quot;3&quot;/&gt;
    &lt;polyline points=&quot;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&quot; fill=&quot;none&quot; stroke=&quot;#000000&quot; stroke-width=&quot;3&quot;/&gt;
&lt;/svg&gt;</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:

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:

SVG Signature

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:

OPOS Signature

Barcode Example

Barcode

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.