Access Token API
Create new Access Token
This API call returns a new access token.
Endpoint
POST https://api1.consumerism.pressganey.com/api/service/v1/token/create
Request Parameters
Parameter | Default | Description | Required/Optional |
---|---|---|---|
appId | String | Application ID of the Application that was created to access the API | Required |
appSecret | String | Application Secret. Keep this info secret because it acts as the password | Required |
Response
The call returns a JSON object which contains an access token and its expiry time. This access token is required to retrieve data using the REST API.
{
"accessToken": "Wz78OmgKtowHppizWjxO7mqms7+8q1QfjaQfb9WUBooVI6IZmp5V/w==",
"status": {
"message": "Success",
"code": 200,
},
"expiresIn": "2014-08-22 09:11:20"
}
Response Parameters
Property | Type | Description |
---|---|---|
status | JSON Object | Indicates the status of the response |
code | Number | Status code for the response. Possible codes are: 200 – Success 400 – Bad Request 500 – Internal Server Error |
message | String | Detailed message from the server about the status |
accessToken | String | Access token for authentication. This access token is valid until the expiry time indicated in the response |
expiresIn | String | Date time when the access token will expire |
Star Ratings API (Comments)
Introduction
The Press Ganey Consumer Solutions API is a set of HTTP based REST services. There is also a JavaScript wrapper that abstracts the low level API calls. The Press Ganey Consumer Solutions API can be used by third party websites to embed data from the Binary Star Ratings platform within a target web page. Testimonials are patient feedback collected through surveys and pass through a series of checks before they are made available through the API. The main checks include:
Profanity and PHI information is flagged by the NLP process to ensure that high-risk content is not available for public consumption
A unique location or physician identifier (NPI) is required during the API call to publish testimonials specific to the location or the physician. The unique identifiers are defined during the client setup process.
o Section 1: Allows for publishing testimonials by NPI
o Section 2: Allows for publishing testimonials by Location
o Section 3: Allows a rollup score to be published for any physician or location. Note: It is recommended to use a 365 day or lesser date range for roll up scores.
The maximum age filter (in days) limits the age of the testimonials published through the API call. By default, each API call generates testimonials that are less than 365 days old.
The minimum number of ratings limit ensures that there are adequate number of ratings used to compute the overall star ratings for the physician or location. The default value is 0 ratings.
An optional maximum count filter to limit the number of testimonials published through the API call per page. By default, each API call generates up to 20 testimonials.
Other optional parameters are included in the various API calls and are detailed below.
API Reference
Before using the API, an Application must be provisioned by Press Ganey Consumer Solutions. Two pieces of information are required to create the application – an easily identifiable name and the domain of the website that hosts the pages invoking the API. The domain name is needed without the http(s) protocol schemes and the slashes - if the URL is http://www.w3schools.com/, the domain name is www.w3schools.com. Press Ganey Consumer Solutions will provision the Application and make it available in the API settings page on the Binary Star Ratings platform. The Application ID and Application Secret create a unique combination that will be used for authorization in all the API calls.
Use the Application ID and Application Secret to receive an Access Token to start making server to server API calls. The access token is valid for a limited period of time. The server-to-server API calls are:
- Create Access Token : Refer to Comments API Guide for more details.
- Comments and Ratings : Refer to Comments API Guide for more details
Comments for a Single Physician
Endpoint
GET https://api1.consumerism.pressganey.com/api/bsr/comments
Header Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
Content-Type | application/json | Content in JSON format | Required |
Access-Token | String | Access token received from the platform | Required |
GET Request Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
personId | String | Unique identifier of a Physician. Can be NPI or a proprietary identifier guaranteed to be unique across all providers | Required |
page | Integer | The page to return containing the requested number of testimonials per page | Default value is 1 |
perPage | Integer | The number of reviews per page | Optional, default is up to 20 |
minThreshold | String | Minimum threshold for the comments Values between 0 and 5 Note: Minimum threshold is compared to the overall rating value associated with the comments | Optional, by default threshold is not considered |
days | Integer | Maximum age of the reviews in days. For example, days=7 means reviews from the past 1 week | Optional, default is 365 days |
minSurveyCount | Integer | Returns responses only when there are at least as many survey responses as specified in minSurveyCount | Optional, default is 0 |
minRatingCount | Integer | Returns responses only when there are at least as many ratings as specified in minRatingCount. | Optional, default is 0 |
minWordCount | Integer | Returns only those reviews, which have minimum number of words in it. | Default is 0, meaning, no restriction on word count. |
showRatings | Boolean | If you don’t need rating, send this parameter as false | Default is true |
showComments | Boolean | If you don’t need comments, send this parameter as false | Default is true |
{
"status":{
"message":"success",
"code":200
},
"data":{
"entities":[
{
"id":"1324567890",
"name":"John Doe, MD",
"totalCommentCount":3,
"totalRatingCount":6,
"totalSurveyCount":6,
"overallRating":{
"name":"Overall Satisfaction",
"value":3.6,
"questionRatings":[
{
"name":"CP instructions for follow-up care",
"value":3.5,
"responseCount":6
},
{
"name":"CP spoke using clear language",
"value":3.3,
"responseCount":6
},
{
"name":"Time CP spent with patient",
"value":3.5,
"responseCount":6
},
{
"name":"Patients' confidence in CP",
"value":4.6,
"responseCount":6
}
]
},
"comments":[
{
"id":6931217,
"source":"Demo survey-PG",
"mentionTime":"2017-01-09T07:12:55Z",
"wordCount":2,
"comment":"Good caring",
"overAllRating":{
"name":"Overall Satisfaction",
"value":4.75
},
"response": {
"responseText": "Sample Annotation Text",
"client": "BF Healthcare",
"respondedBy": "Test User",
"respondedTime": "2017-04-18T14:08:00Z"
}
"ratings":[
{
"name":"Access",
"value":4.38
},
{
"name":"Personal Issues",
"value":4.58
},
{
"name":"Nurse/Assistant",
"value":4.38
},
{
"name":"Overall Assessment",
"value":5
},
{
"name":"Moving through visit",
"value":4.58
}
]
}
],
"totalPages":1,
"ratings":[
{
"name":"Access",
"value":2.8,
"questionRatings":[
{
"name":"Ease of getting clinic on phone",
"value":2.9,
"responseCount":6
}
]
},
{
"name":"Personal Issues",
"value":4,
"questionRatings":[
{
"name":"Convenience of our office hours",
"value":4.6,
"responseCount":6
}
]
},
{
"name":"Nurse/Assistant",
"value":4.2,
"questionRatings":[
{
"name":"Friendliness/courtesy of nurse/asst",
"value":3.8,
"responseCount":6
}
]
},
{
"name":"Overall Assessment",
"value":4.4,
"questionRatings":[
{
"name":"Staff worked together",
"value":4.7,
"responseCount":4
}
]
},
{
"name":"Moving through visit",
"value":4.1,
"questionRatings":[
{
"name":"Courtesy of registration staff",
"value":4.5,
"responseCount":5
}
]
}
]
}
],
"filter":{
"minThreshold":0,
"minRatingCount":0,
"minSurveyCount":0,
"minWordCount":0,
"days":20,
"page":1,
"perPage":20,
"showComments":true,
"showRatings":true,
"configVersion":"v2",
"period":{
"to":"2017-01-10T07:52:08Z",
"from":"2016-12-21T00:00:00Z"
}
}
}
}
JSON Response Parameters
Property | Type | Description |
---|---|---|
filter | Object | The filters applied on the testimonials |
entities | Array | The physician entities for which data is being returned |
entities.id | String | Unique identifier of the entity |
entities.Name | String | The name of the entity |
entities.totalRatingCount | Integer | Total number of survey responses available for primary rating. |
entities.totalCommentCount | Integer | Number of actual comments available for the entity |
entities.totalSurveyCount | Integer | Total number of surveys available for the entity |
overallRating.name | String | Overall Rating name |
overallRating.value | Decimal | Overall rating of the Provider |
overallRating.questionRatings | Array | Individual question level rating which contributed for the overall rating |
overallRating.questionRatings.name | String | Question name contributed for overall rating |
overallRating.questionRatings.value | Decimal | Star rating of the question |
overallRating.questionRatings.responseCount | Integer | No. of responses received for this questiong |
ratings | Array | The ratings for this entity |
ratings.name | String | The name of the rating |
ratings.value | Decimal | The score |
ratings.questionRatings | Array | List of questions used for calculating this rating |
ratings.questionRatings.name | String | Question text |
ratings.questionRatings.value | Decimal | Question rating |
ratings.questionRatings.responseCount | Integer | Total number of responses for this question |
comments | Array | The comments for this entity |
comments.id | Integer | Unique identifier of the Comment |
comments.comment | String | The comment content |
comments.overallRating | Object | Overall rating of the comment |
comments.overallRating.name | String | Overall rating name |
comments.overallRating.value | Decimal | Overall rating of the comment |
comments.ratings | Array | Individual ratings |
comments.ratings.name | String | The name of the rating |
comments.ratings.value | Decimal | Individual question rating |
comments.mentionTime | Datetime (ISO-8601) | The date & time at which this review was mentioned |
Comments for Multiple Physicians
Returns a set of testimonials and ratings based on the parameters passed in, for the given physicians.
Endpoint
POST https://api1.consumerism.pressganey.com/api/bsr/comments
Header Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
Content-Type | application/json | Content in JSON format | Required |
Access-Token | String | Access token received from the platform | Required |
POST Request Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
personId | String | A Unique identifier of a Physician. Can be NPI You can pass multiple person Ids as: &personId=123&personId=234 | Required |
page | Integer | The page to return containing the requested number of testimonials per page | Default value is 1 |
perPage | Integer | The number of reviews per page | Optional, default is up to 20 |
minThreshold | String | Minimum threshold for the comments Values between 0 and 5 Note: Minimum threshold is compared to the overall rating value associated with the comments | Optional, by default threshold is not considered |
days | Integer | Maximum age of the reviews in days. For example, days=7 means reviews from the past 1 week | Optional, default is 365 days |
minSurveyCount | Integer | Returns responses only when there are at least as many ratings as specified in minRatingCount. | Optional, default is 0 |
minRatingCount | Integer | Returns responses only when there are at least as many ratings as specified in minRatingCount. | Optional, default is 0 |
minWordCount | Integer | Returns only those reviews, which have minimum number of words in it. | Default is 0, meaning, no restriction on word count |
showRatings | Boolean | If you don’t need rating, send this parameter as false | Default is true |
showComments | Default | If you don’t need comments, send this parameter as false | Default is true |
JSON Response
A JSON object containing the latest comments for the requested physicians. Each JSON object within entities JSONArray represents a single physician.
{{
"status":{
"message":"success",
"code":200
},
"data":{
"entities":[
{
"id":"147852369",
"name":"John Smith, MD",
"totalCommentCount":3,
"totalRatingCount":6,
"totalSurveyCount":6,
"overallRating":{
"name":"Overall Satisfaction",
"value":3.6,
"questionRatings":[
{
"name":"CP instructions for follow-up care",
"value":3.5,
"responseCount":6
},
{
"name":"CP spoke using clear language",
"value":3.3,
"responseCount":6
},
{
"name":"Time CP spent with patient",
"value":3.5,
"responseCount":6
}
]
},
"comments":[
{
"id":6931217,
"source":"Demo survey-PG",
"mentionTime":"2017-01-09T07:12:55Z",
"wordCount":2,
"comment":"Good caring",
"overAllRating":{
"name":"Overall Satisfaction",
"value":4.75
},
"response": {
"responseText": "Sample Annotation Text",
"client": "BF Healthcare",
"respondedBy": "Test User",
"respondedTime": "2017-04-18T14:08:00Z"
}
"ratings":[
{
"name":"Access",
"value":4.38
},
{
"name":"Personal Issues",
"value":4.58
},]
}
],
"totalPages":1,
"ratings":[
{
"name":"Access",
"value":2.8,
"questionRatings":[
{
"name":"Ease of getting clinic on phone",
"value":2.9,
"responseCount":6
}
]
},
{
"name":"Personal Issues",
"value":4,
"questionRatings":[
{
"name":"Convenience of our office hours",
"value":4.6,
"responseCount":6
}
]
},
{
"name":"Nurse/Assistant",
"value":4.2,
"questionRatings":[
{
"name":"Friendliness/courtesy of nurse/asst",
"value":3.8,
"responseCount":6
}
]
},
{
"name":"Overall Assessment",
"value":4.4,
"questionRatings":[
{
"name":"Staff worked together",
"value":4.7,
"responseCount":4
}
]
},
{
"name":"Moving through visit",
"value":4.1,
"questionRatings":[
{
"name":"Courtesy of registration staff",
"value":4.5,
"responseCount":5
}
]
}
]
},
{
"id":"1234657890",
"name":"John Doe, MD",
"totalCommentCount":3,
"totalRatingCount":6,
"totalSurveyCount":6,
"overallRating":{
"name":"Overall Satisfaction",
"value":3.6,
"questionRatings":[
{
"name":"CP instructions for follow-up care",
"value":3.5,
"responseCount":6
},
{
"name":"CP spoke using clear language",
"value":3.3,
"responseCount":6
},
{
"name":"Time CP spent with patient",
"value":3.5,
"responseCount":6
}
]
},
"comments":[
{
"id":6931217,
"source":"Demo survey-PG",
"mentionTime":"2017-01-09T07:12:55Z",
"wordCount":2,
"comment":"Good caring",
"overAllRating":{
"name":"Overall Satisfaction",
"value":4.75
},
"ratings":[
{
"name":"Access",
"value":4.38
},
{
"name":"Personal Issues",
"value":4.58
}
]
}
],
"totalPages":1,
"ratings":[
{
"name":"Access",
"value":2.8,
"questionRatings":[
{
"name":"Ease of getting clinic on phone",
"value":2.9,
"responseCount":6
}
]
},
{
"name":"Personal Issues",
"value":4,
"questionRatings":[
{
"name":"Convenience of our office hours",
"value":4.6,
"responseCount":6
}
]
},
{
"name":"Nurse/Assistant",
"value":4.2,
"questionRatings":[
{
"name":"Friendliness/courtesy of nurse/asst",
"value":3.8,
"responseCount":6
}
]
},
{
"name":"Overall Assessment",
"value":4.4,
"questionRatings":[
{
"name":"Staff worked together",
"value":4.7,
"responseCount":4
}
]
},
{
"name":"Moving through visit",
"value":4.1,
"questionRatings":[
{
"name":"Courtesy of registration staff",
"value":4.5,
"responseCount":5
}
]
}
]
}
],
"filter":{
"minThreshold":0,
"minRatingCount":0,
"minSurveyCount":0,
"minWordCount":0,
"days":20,
"page":1,
"perPage":20,
"showComments":true,
"showRatings":true,
"configVersion":"v2",
"period":{
"to":"2017-01-10T07:52:08Z",
"from":"2016-12-21T00:00:00Z"
}
}
}
}
JSON Response Parameters
Property | Type | Description |
---|---|---|
filter | Object | The filters applied on the testimonials |
entities | Array | The physician entities for which data is being returned |
entities.id | String | Unique identifier of the entity |
entities.Name | String | The name of the entity |
entities.totalRatingCount | Integer | Total number of survey responses available for primary rating. |
entities.totalCommentCount | Integer | Number of actual comments available for the entity |
entities.totalSurveyCount | Integer | Total number of surveys available for the entity |
overallRating.name | String | Overall Rating name |
overallRating.value | Decimal | Overall rating of the Provider |
overallRating.questionRatings | Array | Individual question level rating which contributed for the overall rating |
overallRating.questionRatings.name | String | Question name contributed for overall rating |
overallRating.questionRatings.value | Decimal | Star rating of the question |
overallRating.questionRatings.responseCount | Integer | No. of responses received for this questiong |
ratings | Array | The ratings for this entity |
ratings.name | String | The name of the rating |
ratings.value | Decimal | The score |
ratings.questionRatings | Array | List of questions used for calculating this rating |
ratings.questionRatings.name | String | Question text |
ratings.questionRatings.value | Decimal | Question rating |
ratings.questionRatings.responseCount | Integer | Total number of responses for this question |
comments | Array | The comments for this entity |
comments.id | Integer | Unique identifier of the Comment |
comments.comment | String | The comment content |
comments.overallRating | Object | Overall rating of the comment |
comments.overallRating.name | String | Overall rating name |
comments.overallRating.value | Decimal | Overall rating of the comment |
comments.ratings | Array | Individual ratings |
comments.ratings.name | String | The name of the rating |
comments.ratings.value | Decimal | Individual question rating |
comments.mentionTime | Datetime (ISO-8601) | The date & time at which this review was mentioned |
Comments for a Single Location
Endpoint
GET https://api1.consumerism.pressganey.com/api/bsr/comments
Header Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
Content-Type | application/json | Content in JSON format | Required |
Access-Token | String | Access token received from the platform | Required |
GET Request Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
locationId | String | Unique identifier of a Location. You can get this unique codes from the Mapping file. | Required |
page | Integer | The page to return containing the requested number of testimonials per page. | Default value is 1 |
perPage | Integer | The number of reviews per page. | Optional, default is up to 20 |
minThreshold | String | Minimum threshold for the comments. Values between 0 to 5. Note: Minimum threshold is compared to the overall rating value associated with the comments. | Optional, by default threshold is not considered. |
days | Integer | Maximum age of the reviews in days. For example, days=7 means reviews from the past 1 week | Optional, default is 365 days |
minSurveyCount | Integer | Returns responses only when there are at least as many survey responses as specified in minSurveyCount | Optional, default is 0 |
minRatingCount | Integer | Returns responses only when there are at least as many ratings as specified in minRatingCount. | Optional, default is 0 |
minWordCount | Integer | Returns only those reviews, which have minimum number of words in it. | Default is 0, meaning, no restriction on word count. |
showRatings | Boolean | If you don’t need rating, send this parameter as false | Default is true |
showComments | Boolean | If you don’t need comments, send this parameter as false | Default is true |
JSON Response
A JSON object containing the latest comments
{
"status":{
"message":"success",
"code":200
},
"data":{
"entities":[
{
"id":"2_17816_1",
"name":"Demo Location 1",
"totalCommentCount":3,
"totalRatingCount":6,
"totalSurveyCount":6,
"overallRating":{
"name":"Overall Satisfaction",
"value":3.6,
"questionRatings":[
{
"name":"CP instructions for follow-up care",
"value":3.5,
"responseCount":6
},
{
"name":"CP spoke using clear language",
"value":3.3,
"responseCount":6
},
{
"name":"Time CP spent with patient",
"value":3.5,
"responseCount":6
},
{
"name":"Patients' confidence in CP",
"value":4.6,
"responseCount":6
}
]
},
"comments":[
{
"id":6931217,
"source":"Demo survey-PG",
"mentionTime":"2017-01-09T07:12:55Z",
"wordCount":2,
"comment":"Good caring",
"overAllRating":{
"name":"Overall Satisfaction",
"value":4.75
},
"response": {
"responseText": "Sample Annotation Text",
"client": "BF Healthcare",
"respondedBy": "Test User",
"respondedTime": "2017-04-18T14:08:00Z"
}
"ratings":[
{
"name":"Access",
"value":4.38
},
{
"name":"Personal Issues",
"value":4.58
},
{
"name":"Nurse/Assistant",
"value":4.38
},
{
"name":"Overall Assessment",
"value":5
},
{
"name":"Moving through visit",
"value":4.58
}
]
}
],
"totalPages":1,
"ratings":[
{
"name":"Access",
"value":2.8,
"questionRatings":[
{
"name":"Ease of getting clinic on phone",
"value":2.9,
"responseCount":6
}
]
},
{
"name":"Personal Issues",
"value":4,
"questionRatings":[
{
"name":"Convenience of our office hours",
"value":4.6,
"responseCount":6
}
]
},
{
"name":"Nurse/Assistant",
"value":4.2,
"questionRatings":[
{
"name":"Friendliness/courtesy of nurse/asst",
"value":3.8,
"responseCount":6
}
]
},
{
"name":"Overall Assessment",
"value":4.4,
"questionRatings":[
{
"name":"Staff worked together",
"value":4.7,
"responseCount":4
}
]
},
{
"name":"Moving through visit",
"value":4.1,
"questionRatings":[
{
"name":"Courtesy of registration staff",
"value":4.5,
"responseCount":5
}
]
}
]
}
],
"filter":{
"minThreshold":0,
"minRatingCount":0,
"minSurveyCount":0,
"minWordCount":0,
"days":20,
"page":1,
"perPage":20,
"showComments":true,
"showRatings":true,
"configVersion":"v2",
"period":{
"to":"2017-01-10T07:52:08Z",
"from":"2016-12-21T00:00:00Z"
}
}
}
}
JSON Response Parameters
Property | Type | Description |
---|---|---|
filter | Object | The filters applied on the testimonials |
entities | Array | The physician entities for which data is being returned |
entities.id | String | Unique identifier of the entity |
entities.Name | String | The name of the entity |
entities.totalRatingCount | Integer | Total number of survey responses available for primary rating. |
entities.totalCommentCount | Integer | Number of actual comments available for the entity |
entities.totalSurveyCount | Integer | Total number of surveys available for the entity |
overallRating.name | String | Overall Rating name |
overallRating.value | Decimal | Overall rating of the Provider |
overallRating.questionRatings | Array | Individual question level rating which contributed for the overall rating |
overallRating.questionRatings.name | String | Question name contributed for overall rating |
overallRating.questionRatings.value | Decimal | Star rating of the question |
overallRating.questionRatings.responseCount | Integer | No. of responses received for this questiong |
ratings | Array | The ratings for this entity |
ratings.name | String | The name of the rating |
ratings.value | Decimal | The score |
ratings.questionRatings | Array | List of questions used for calculating this rating |
ratings.questionRatings.name | String | Question text |
ratings.questionRatings.value | Decimal | Question rating |
ratings.questionRatings.responseCount | Integer | Total number of responses for this question |
comments | Array | The comments for this entity |
comments.id | Integer | Unique identifier of the Comment |
comments.comment | String | The comment content |
comments.overallRating | Object | Overall rating of the comment |
comments.overallRating.name | String | Overall rating name |
comments.overallRating.value | Decimal | Overall rating of the comment |
comments.ratings | Array | Individual ratings |
comments.ratings.name | String | The name of the rating |
comments.ratings.value | Decimal | Individual question rating |
comments.mentionTime | Datetime (ISO-8601) | The date & time at which this review was mentioned |
Comments for Multiple Locations
Endpoint
POST https://api1.consumerism.pressganey.com/api/bsr/comments
Header Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
Content-Type | application/json | Content in JSON format | Required |
Access-Token | String | Access token received from the platform | Required |
POST Request Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
locationId | String | Unique identifier of a Location. You can get this unique codes from the Mapping file. You can pass multiple location ID as &locationID=123&locationId=234 | Required |
page | Integer | The page to return containing the requested number of testimonials per page. | Default value is 1 |
perPage | Integer | The number of reviews per page. | Optional, default is up to 20 |
minThreshold | String | Minimum threshold for the comments. Values between 0 to 5. Note: Minimum threshold is compared to the overall rating value associated with the comments. | Optional, by default threshold is not considered. |
days | Integer | Maximum age of the reviews in days. For example, days=7 means reviews from the past 1 week | Optional, default is 365 days |
minSurveyCount | Integer | Returns responses only when there are at least as many survey responses as specified in minSurveyCount | Optional, default is 0 |
minRatingCount | Integer | Returns responses only when there are at least as many ratings as specified in minRatingCount. | Optional, default is 0 |
minWordCount | Integer | Returns only those reviews, which have minimum number of words in it. | Default is 0, meaning, no restriction on word count. |
showRatings | Boolean | If you don’t need rating, send this parameter as false | Default is true |
showComments | Boolean | If you don’t need comments, send this parameter as false | Default is true |
JSON Response
A JSON object containing the latest comments for the requested locations. Each JSON object within entities JSONArray represents a single location.
{
"status":{
"message":"success",
"code":200
},
"data":{
"entities":[
{
"id":"2_123_1",
"name":"Demo Location 1",
"totalCommentCount":3,
"totalRatingCount":6,
"totalSurveyCount":6,
"overallRating":{
"name":"Overall Satisfaction",
"value":3.6,
"questionRatings":[
{
"name":"CP instructions for follow-up care",
"value":3.5,
"responseCount":6
},
{
"name":"CP spoke using clear language",
"value":3.3,
"responseCount":6
},
{
"name":"Time CP spent with patient",
"value":3.5,
"responseCount":6
}
]
},
"comments":[
{
"id":6931217,
"source":"Demo survey-PG",
"mentionTime":"2017-01-09T07:12:55Z",
"wordCount":2,
"comment":"Good caring",
"overAllRating":{
"name":"Overall Satisfaction",
"value":4.75
},
"response": {
"responseText": "Sample Annotation Text",
"client": "BF Healthcare",
"respondedBy": "Test User",
"respondedTime": "2017-04-18T14:08:00Z"
}
"ratings":[
{
"name":"Access",
"value":4.38
},
{
"name":"Personal Issues",
"value":4.58
}
]
}
],
"totalPages":1,
"ratings":[
{
"name":"Access",
"value":2.8,
"questionRatings":[
{
"name":"Ease of getting clinic on phone",
"value":2.9,
"responseCount":6
}
]
},
{
"name":"Personal Issues",
"value":4,
"questionRatings":[
{
"name":"Convenience of our office hours",
"value":4.6,
"responseCount":6
}
]
},
{
"name":"Nurse/Assistant",
"value":4.2,
"questionRatings":[
{
"name":"Friendliness/courtesy of nurse/asst",
"value":3.8,
"responseCount":6
}
]
},
{
"name":"Overall Assessment",
"value":4.4,
"questionRatings":[
{
"name":"Staff worked together",
"value":4.7,
"responseCount":4
}
]
},
{
"name":"Moving through visit",
"value":4.1,
"questionRatings":[
{
"name":"Courtesy of registration staff",
"value":4.5,
"responseCount":5
}
]
}
]
},
{
"id":"_2_1212_12",
"name":"Demo Location 2",
"totalCommentCount":3,
"totalRatingCount":6,
"totalSurveyCount":6,
"overallRating":{
"name":"Overall Satisfaction",
"value":3.6,
"questionRatings":[
{
"name":"CP instructions for follow-up care",
"value":3.5,
"responseCount":6
},
{
"name":"CP spoke using clear language",
"value":3.3,
"responseCount":6
},
{
"name":"Time CP spent with patient",
"value":3.5,
"responseCount":6
}
]
},
"comments":[
{
"id":6931217,
"source":"Demo survey-PG",
"mentionTime":"2017-01-09T07:12:55Z",
"wordCount":2,
"comment":"Good caring",
"overAllRating":{
"name":"Overall Satisfaction",
"value":4.75
},
"ratings":[
{
"name":"Access",
"value":4.38
},
{
"name":"Personal Issues",
"value":4.58
}
]
}
],
"totalPages":1,
"ratings":[
{
"name":"Access",
"value":2.8,
"questionRatings":[
{
"name":"Ease of getting clinic on phone",
"value":2.9,
"responseCount":6
}
]
},
{
"name":"Personal Issues",
"value":4,
"questionRatings":[
{
"name":"Convenience of our office hours",
"value":4.6,
"responseCount":6
}
]
},
{
"name":"Nurse/Assistant",
"value":4.2,
"questionRatings":[
{
"name":"Friendliness/courtesy of nurse/asst",
"value":3.8,
"responseCount":6
}
]
},
{
"name":"Overall Assessment",
"value":4.4,
"questionRatings":[
{
"name":"Staff worked together",
"value":4.7,
"responseCount":4
}
]
},
{
"name":"Moving through visit",
"value":4.1,
"questionRatings":[
{
"name":"Courtesy of registration staff",
"value":4.5,
"responseCount":5
}
]
}
]
}
],
"filter":{
"minThreshold":0,
"minRatingCount":0,
"minSurveyCount":0,
"minWordCount":0,
"days":20,
"page":1,
"perPage":20,
"showComments":true,
"showRatings":true,
"configVersion":"v2",
"period":{
"to":"2017-01-10T07:52:08Z",
"from":"2016-12-21T00:00:00Z"
}
}
}
}
}
JSON Response Parameters
Property | Type | Description |
---|---|---|
filter | Object | The filters applied on the testimonials |
entities | Array | The physician entities for which data is being returned |
entities.id | String | Unique identifier of the entity |
entities.Name | String | The name of the entity |
entities.totalRatingCount | Integer | Total number of survey responses available for primary rating. |
entities.totalCommentCount | Integer | Number of actual comments available for the entity |
entities.totalSurveyCount | Integer | Total number of surveys available for the entity |
overallRating.name | String | Overall Rating name |
overallRating.value | Decimal | Overall rating of the Provider |
overallRating.questionRatings | Array | Individual question level rating which contributed for the overall rating |
overallRating.questionRatings.name | String | Question name contributed for overall rating |
overallRating.questionRatings.value | Decimal | Star rating of the question |
overallRating.questionRatings.responseCount | Integer | No. of responses received for this questiong |
ratings | Array | The ratings for this entity |
ratings.name | String | The name of the rating |
ratings.value | Decimal | The score |
ratings.questionRatings | Array | List of questions used for calculating this rating |
ratings.questionRatings.name | String | Question text |
ratings.questionRatings.value | Decimal | Question rating |
ratings.questionRatings.responseCount | Integer | Total number of responses for this question |
comments | Array | The comments for this entity |
comments.id | Integer | Unique identifier of the Comment |
comments.comment | String | The comment content |
comments.overallRating | Object | Overall rating of the comment |
comments.overallRating.name | String | Overall rating name |
comments.overallRating.value | Decimal | Overall rating of the comment |
comments.ratings | Array | Individual ratings |
comments.ratings.name | String | The name of the rating |
comments.ratings.value | Decimal | Individual question rating |
comments.mentionTime | Datetime (ISO-8601) | The date & time at which this review was mentioned |
Comments for Roll Up Scores for a Physician or Location
Endpoint
GET https://api1.consumerism.pressganey.com/api/bsr/comments
Header Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
Content-Type | application/json | Content in JSON format | Required |
Access-Token | String | Access token received from the platform | Required |
GET Request Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
entityId | String | Unique identifier of a Physician/Location. You can get the ID from the mapping file or from Transparency application | Required |
page | Integer | The page to return containing the requested number of testimonials per page. | Default value is 1 |
perPage | Integer | The number of reviews per page. | Optional, default is up to 20 |
days | Integer | Maximum age of the reviews in days. For example, days=7 means reviews from the past 1 week | Optional, default is 365 days |
minSurveyCount | Integer | Returns responses only when there are at least as many survey responses as specified in minSurveyCount | Optional, default is 0 |
minRatingCount | Integer | Returns responses only when there are at least as many ratings as specified in minRatingCount. | Optional, default is 0 |
minWordCount | Integer | Returns only those reviews, which have minimum number of words in it. | Default is 0, meaning, no restriction on word count. |
showRatings | Boolean | If you don’t need rating, send this parameter as false | Default is true |
showComments | Boolean | If you don’t need comments, send this parameter as false | Default is true |
JSON Response
A JSON object containing the latest comments.
{
"status":{
"message":"success",
"code":200
},
"data":{
"entities":[
{
"id":"2_17816_1",
"name":"Demo Location 1",
"totalCommentCount":3,
"totalRatingCount":6,
"totalSurveyCount":6,
"overallRating":{
"name":"Overall Satisfaction",
"value":3.6,
"questionRatings":[
{
"name":"CP instructions for follow-up care",
"value":3.5,
"responseCount":6
},
{
"name":"CP spoke using clear language",
"value":3.3,
"responseCount":6
},
{
"name":"Time CP spent with patient",
"value":3.5,
"responseCount":6
},
{
"name":"Patients' confidence in CP",
"value":4.6,
"responseCount":6
}
]
},
"comments":[
{
"id":6931217,
"source":"Demo survey-PG",
"mentionTime":"2017-01-09T07:12:55Z",
"wordCount":2,
"comment":"Good caring",
"overAllRating":{
"name":"Overall Satisfaction",
"value":4.75
},
"response": {
"responseText": "Sample Annotation Text",
"client": "BF Healthcare",
"respondedBy": "Test User",
"respondedTime": "2017-04-18T14:08:00Z"
}
"ratings":[
{
"name":"Access",
"value":4.38
},
{
"name":"Personal Issues",
"value":4.58
},
{
"name":"Nurse/Assistant",
"value":4.38
},
{
"name":"Overall Assessment",
"value":5
},
{
"name":"Moving through visit",
"value":4.58
}
]
}
],
"totalPages":1,
"ratings":[
{
"name":"Access",
"value":2.8,
"questionRatings":[
{
"name":"Ease of getting clinic on phone",
"value":2.9,
"responseCount":6
}
]
},
{
"name":"Personal Issues",
"value":4,
"questionRatings":[
{
"name":"Convenience of our office hours",
"value":4.6,
"responseCount":6
}
]
},
{
"name":"Nurse/Assistant",
"value":4.2,
"questionRatings":[
{
"name":"Friendliness/courtesy of nurse/asst",
"value":3.8,
"responseCount":6
}
]
},
{
"name":"Overall Assessment",
"value":4.4,
"questionRatings":[
{
"name":"Staff worked together",
"value":4.7,
"responseCount":4
}
]
},
{
"name":"Moving through visit",
"value":4.1,
"questionRatings":[
{
"name":"Courtesy of registration staff",
"value":4.5,
"responseCount":5
}
]
}
]
}
],
"filter":{
"minThreshold":0,
"minRatingCount":0,
"minSurveyCount":0,
"minWordCount":0,
"days":20,
"page":1,
"perPage":20,
"showComments":true,
"showRatings":true,
"configVersion":"v2",
"period":{
"to":"2017-01-10T07:52:08Z",
"from":"2016-12-21T00:00:00Z"
}
}
}
}
JSON Response Parameters
Property | Type | Description |
---|---|---|
filter | Object | The filters applied on the testimonials |
entities | Array | The physician entities for which data is being returned |
entities.id | String | Unique identifier of the entity |
entities.Name | String | The name of the entity |
entities.totalRatingCount | Integer | Total number of survey responses available for primary rating. |
entities.totalCommentCount | Integer | Number of actual comments available for the entity |
entities.totalSurveyCount | Integer | Total number of surveys available for the entity |
overallRating.name | String | Overall Rating name |
overallRating.value | Decimal | Overall rating of the Provider |
overallRating.questionRatings | Array | Individual question level rating which contributed for the overall rating |
overallRating.questionRatings.name | String | Question name contributed for overall rating |
overallRating.questionRatings.value | Decimal | Star rating of the question |
overallRating.questionRatings.responseCount | Integer | No. of responses received for this questiong |
ratings | Array | The ratings for this entity |
ratings.name | String | The name of the rating |
ratings.value | Decimal | The score |
ratings.questionRatings | Array | List of questions used for calculating this rating |
ratings.questionRatings.name | String | Question text |
ratings.questionRatings.value | Decimal | Question rating |
ratings.questionRatings.responseCount | Integer | Total number of responses for this question |
comments | Array | The comments for this entity |
comments.id | Integer | Unique identifier of the Comment |
comments.comment | String | The comment content |
comments.overallRating | Object | Overall rating of the comment |
comments.overallRating.name | String | Overall rating name |
comments.overallRating.value | Decimal | Overall rating of the comment |
comments.ratings | Array | Individual ratings |
comments.ratings.name | String | The name of the rating |
comments.ratings.value | Decimal | Individual question rating |
comments.mentionTime | Datetime (ISO-8601) | The date & time at which this review was mentioned |
Comments for Roll Up Scores for Multiple Physicians or Locations
If multiple physician and/or locations are sent in an API call, the output will be one rollup score per physician/location.
Endpoint
POST https://api1.consumerism.pressganey.com/api/bsr/comments
Header Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
Content-Type | application/json | Content in JSON format | Required |
Access-Token | String | Access token received from the platform | Required |
POST Request Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
entityId | String | Unique identifier of a Location. You can get this unique codes from the Mapping file. You can pass multiple location ID as &locationID=123&locationId=234 | Required |
page | Integer | The page to return containing the requested number of testimonials per page | Default value is 1 |
perPage | Integer | The number of reviews per page | Optional, default is up to 20 |
days | Integer | Maximum age of the reviews in days. For example, days=7 means reviews from the past 1 week | Optional, default is 365 days |
minSurveyCount | Integer | Returns responses only when there are at least as many ratings as specified in minRatingCount. | Optional, default is 0 |
minRatingCount | Integer | Returns responses only when there are at least as many ratings as specified in minRatingCount. | Optional, default is 30 |
minWordCount | Integer | Returns only those reviews, which have minimum number of words in it. | Default is 0, meaning, no restriction on word count |
showRatings | Boolean | If you don’t need rating, send this parameter as false | Default is true |
showComments | Default | If you don’t need comments, send this parameter as false | Default is true |
JSON Response
A JSON object containing the latest comments for the requested locations. Each JSON object within entities JSONArray represents a single location.
{
"status": {
"message": "success",
"code": 200
},
"data": {
"client": "Test Client",
"entities": [
{
"id": "123456",
"name": "Surgical Services",
"totalCommentCount": 11,
"totalRatingCount": 14,
"totalSurveyCount": 48,
"overallRating": {
"name": "Overall Satisfaction",
"value": 3.5,
"questionRatings": [
{
"name": "Please rate your overall satisfaction:",
"value": 3.5,
"responseCount": 33
}
]
},
"comments": [
{
"id": 23654444,
"source": "Test Survey",
"mentionTime": "2017-05-28T07:05:03Z",
"wordCount": 3,
"comment": "Test Survey feedback",
"ratings": [],
"response": {
"responseText": "thank you for your feedback",
"respondedBy": "bf Administrator",
"respondedTime": "2017-05-28T07:06:19Z"
}
},
{
"id": 23653088,
"source": "Patient Experience Survey",
"mentionTime": "2017-05-28T05:44:23Z",
"wordCount": 2,
"comment": "only comment",
"ratings": []
},
{
"id": 23653055,
"source": "Patient Experience Survey",
"mentionTime": "2017-06-28T04:44:28Z",
"wordCount": 5,
"comment": "Great comment with annotation",
"ratings": [
{
"name": "Ease of Scheduling",
"value": 3.75
}
],
"response": {
"responseText": "Final annotation edited by Avatar",
"respondedBy": "bf Administrator",
"respondedTime": "2017-05-28T05:30:37Z"
},
"overallRating": {
"name": "Overall Satisfaction",
"value": 2.5
}
},
{
"id": 23653033,
"source": "Patient Experience Survey",
"mentionTime": "2017-06-27T16:59:39Z",
"wordCount": 4,
"comment": "Excellent Comment by dolphin",
"ratings": [
{
"name": "Ease of Scheduling",
"value": 3.75
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 3.75
}
},
{
"id": 23652626,
"source": "Patient Experience Survey",
"mentionTime": "2017-05-19T10:11:55Z",
"wordCount": 2,
"comment": "Excellent service!",
"ratings": [
{
"name": "Ease of Scheduling",
"value": 2.5
}
],
"response": {
"responseText": "Thanks for your feedback",
"respondedBy": "Chase Ausley",
"respondedTime": "2017-06-28T14:39:32Z"
},
"overallRating": {
"name": "Overall Satisfaction",
"value": 2.5
}
},
{
"id": 23652572,
"source": "Patient Experience Survey",
"mentionTime": "2017-06-19T09:56:00Z",
"wordCount": 3,
"comment": "good Secure survey",
"ratings": [
{
"name": "Ease of Scheduling",
"value": 3.13
}
],
"response": {
"responseText": "test 123 edited",
"respondedBy": "bf Administrator",
"respondedTime": "2017-06-22T09:28:42Z"
},
"overallRating": {
"name": "Overall Satisfaction",
"value": 1.25
}
},
{
"id": 23652477,
"source": "Patient Experience Survey",
"mentionTime": "2017-06-16T11:51:10Z",
"wordCount": 5,
"comment": "Excellent comment by tpk tester",
"ratings": [
{
"name": "Ease of Scheduling",
"value": 3.13
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 5
}
},
{
"id": 23652460,
"source": "Patient Experience Survey",
"mentionTime": "2017-06-16T11:40:03Z",
"wordCount": 4,
"comment": "excellent with overall rating",
"ratings": [
{
"name": "Ease of Scheduling",
"value": 2.5
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 2.5
}
},
{
"id": 23652445,
"source": "Patient Experience Survey",
"mentionTime": "2017-06-16T10:39:08Z",
"wordCount": 5,
"comment": "services are really good",
"ratings": [
{
"name": "Ease of Scheduling",
"value": 1.25
}
]
},
{
"id": 23652398,
"source": "Patient Experience Survey",
"mentionTime": "2017-05-16T05:10:34Z",
"wordCount": 6,
"comment": "very good care provider - dolphin",
"ratings": [
{
"name": "Ease of Scheduling",
"value": 3.8
}
],
"response": {
"responseText": "test response",
"respondedBy": "bf Administrator",
"respondedTime": "2017-06-16T07:00:55Z"
}
},
{
"id": 23653147,
"source": "Patient Experience Survey",
"mentionTime": "2017-05-20T07:20:48Z",
"wordCount": 2,
"comment": "good one",
"ratings": []
}
],
"totalPages": 1,
"ratings": [
{
"name": "Ease of Scheduling",
"value": 4.1,
"questionRatings": [
{
"name": "Please rate the ease of scheduling the appointment:",
"value": 4.1,
"responseCount": 44
},
{
"name": "Please rate the courtesy and helpfulness of the office staff:",
"value": 4.2,
"responseCount": 40
}
]
}
]
}
],
"filter": {
"minThreshold": 0,
"minRatingCount": 0,
"minSurveyCount": 0,
"minWordCount": 0,
"days": 365,
"page": 1,
"perPage": 20,
"showComments": true,
"showRatings": true,
"configVersion": "v2",
"period": {
"to": "2017-06-28T14:41:56Z",
"from": "2016-05-28T00:00:00Z"
}
}
}
}
JSON Response Parameters
Property | Type | Description |
---|---|---|
filter | Object | The filters applied on the testimonials |
entities | Array | The physician entities for which data is being returned |
entities.id | String | Unique identifier of the entity |
entities.Name | String | The name of the entity |
entities.totalRatingCount | Integer | Total number of survey responses available for primary rating. |
entities.totalCommentCount | Integer | Number of actual comments available for the entity |
entities.totalSurveyCount | Integer | Total number of surveys available for the entity |
overallRating.name | String | Overall Rating name |
overallRating.value | Decimal | Overall rating of the Provider |
overallRating.questionRatings | Array | Individual question level rating which contributed for the overall rating |
overallRating.questionRatings.name | String | Question name contributed for overall rating |
overallRating.questionRatings.value | Decimal | Star rating of the question |
overallRating.questionRatings.responseCount | Integer | No. of responses received for this questiong |
ratings | Array | The ratings for this entity |
ratings.name | String | The name of the rating |
ratings.value | Decimal | The score |
ratings.questionRatings | Array | List of questions used for calculating this rating |
ratings.questionRatings.name | String | Question text |
ratings.questionRatings.value | Decimal | Question rating |
ratings.questionRatings.responseCount | Integer | Total number of responses for this question |
comments | Array | The comments for this entity |
comments.id | Integer | Unique identifier of the Comment |
comments.comment | String | The comment content |
comments.overallRating | Object | Overall rating of the comment |
comments.overallRating.name | String | Overall rating name |
comments.overallRating.value | Decimal | Overall rating of the comment |
comments.ratings | Array | Individual ratings |
comments.ratings.name | String | The name of the rating |
comments.ratings.value | Decimal | Individual question rating |
comments.mentionTime | Datetime (ISO-8601) | The date & time at which this review was mentioned |
Star Ratings API (Reviews)
Introduction
The review API is an enhancement to the existing comment API, this API will consider all the rating only documents also, means it will provide ratings for the reviews in which the comments are not approved and published.
Use the Application ID and Application Secret to receive an Access Token to start making server to server API calls. The access token is valid for a limited period of time.
Reviews
Returns a set reviews based on the parameters passed in, for the given physician(s) or location(s).
Reviews for a Single Physician
Endpoint
POST https://api1.consumerism.pressganey.com/api/external/bsr/v2/reviews
Header Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
Content-Type | application/json | Content in JSON format | Required |
Access-Token | String | Access token received from the platform | Required |
POST Request Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
personId | String | Unique identifier of a Physician. Can be NPI or a proprietary identifier guaranteed to be unique across all providers | Required |
perPage | Integer | The number of reviews per page | Optional, default is up to 20 |
minThreshold | String | Minimum threshold for the comments Values between 0 and 5 Note: Minimum threshold is compared to the overall rating value associated with the comments | Optional, by default threshold is not considered |
days | Integer | Maximum age of the reviews in days. For example, days=7 means reviews from the past 1 week | Optional, default is 365 days |
minSurveyCount | Integer | Returns responses only when there are at least as many survey responses as specified in minSurveyCount | Optional, default is 0 |
minRatingCount | Integer | Returns responses only when there are at least as many ratings as specified in minRatingCount. | Optional, default is 0 |
minWordCount | Integer | Returns only those reviews, which have minimum number of words in it. | Default is 0, meaning, no restriction on word count |
showRatings | Boolean | If you don’t need rating, send this parameter as false | Default is true |
showReviews | Boolean | If you don’t need comments, send this parameter as false | Default is true |
scrollKey | String | The encrypted key to scroll to the next page, call the API with scroll key to get next page | Default is empty |
JSON Response
A JSON object containing the latest comments.
{
"status": {
"message": "SUCCESS",
"code": 200
},
"data": {
"client": "Demo",
"entities": [
{
"id": "Demo Provider",
"name": "Demo Provider Name",
"totalCommentCount": 5,
"totalRatingCount": 11,
"totalSurveyCount": 11,
"overallRating": {
"name": "Overall Satisfaction",
"value": 4.7,
"categoryResponseCount": 4,
"questionRatings": [
{
"name": "The doctor's interest in, and attention to, my problem?",
"value": 4.4,
"responseCount": 4
},
{
"name": "The thoroughness of the doctor's examination?",
"value": 4.6,
"responseCount": 3
},
{
"name": "Overall satisfaction with my doctor this visit?",
"value": 5.0,
"responseCount": 3
},
{
"name": "The doctor's explanation of my problems(s) and the need for additional tests and treatment?",
"value": 5.0,
"responseCount": 3
}
]
},
"reviews": [
{
"documentId": 3840508,
"surveyKey": "42c59691-adfd-44f2-aeff-e91fcb3d040c",
"source": "Demo Source",
"mentionTime": "2020-11-29T06:13:01Z",
"comment": {
"commentId": 12552895,
"wordCount": 4,
"comment": "Great doctor and staff"
},
"ratings": [
{
"name": "Scheduling",
"value": 3.75
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 3.75
}
},
{
"documentId": 3840516,
"surveyKey": "04b47591-db9a-4349-8070-3aa2d0e01a7e",
"source": "Demo Source",
"mentionTime": "2020-11-18T12:20:08Z",
"comment": {
"commentId": 12552985,
"wordCount": 1,
"comment": "excellent"
},
"ratings": [
{
"name": "Scheduling",
"value": 3.75
},
{
"name": "staff",
"value": 3.75
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 4.38
}
},
{
"documentId": 3840514,
"surveyKey": "3d4c3921-4bb6-4fca-829d-7f9b77082f0d",
"source": "Demo Source",
"mentionTime": "2020-11-10T12:20:08Z",
"comment": {
"commentId": 12552921,
"wordCount": 1,
"comment": "great"
},
"ratings": [
{
"name": "Scheduling",
"value": 5.0
},
{
"name": "staff",
"value": 5.0
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 5.0
}
},
{
"documentId": 3807834,
"surveyKey": "7c1eceed-398a-4d9f-8455-0e3da1cba124",
"source": "Demo Source",
"mentionTime": "2020-09-24T13:11:12Z",
"comment": {
"commentId": 12552785,
"wordCount": 7,
"comment": "Test web survey on 24th Sep 2020"
},
"ratings": [
{
"name": "Scheduling",
"value": 5.0
},
{
"name": "staff",
"value": 5.0
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 5.0
}
},
{
"documentId": 3807834,
"surveyKey": "7c1eceed-398a-4d9f-8455-0e3da1cba124",
"source": "Demo Source",
"mentionTime": "2020-09-24T13:11:12Z",
"comment": {
"commentId": 12552786,
"wordCount": 7,
"comment": "Test Web Survey on 24th 09 2020"
},
"ratings": [
{
"name": "Scheduling",
"value": 5.0
},
{
"name": "staff",
"value": 5.0
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 5.0
}
}
],
"ratings": [
{
"name": "Scheduling",
"value": 4.4,
"categoryResponseCount": 4,
"questionRatings": [
{
"name": "The doctor's interest in, and attention to, my problem?",
"value": 4.4,
"responseCount": 4
}
]
},
{
"name": "staff",
"value": 4.6,
"categoryResponseCount": 3,
"questionRatings": [
{
"name": "The thoroughness of the doctor's examination?",
"value": 4.6,
"responseCount": 3
}
]
},
{
"name": "Clean",
"value": 5.0,
"categoryResponseCount": 3,
"questionRatings": [
{
"name": "The doctor's explanation of my problems(s) and the need for additional tests and treatment?",
"value": 5.0,
"responseCount": 3
}
]
}
]
}
],
"filter": {
"clientId": "Demo",
"entityId": 580714,
"scrollKey": "6bd9041e37b675273ff3da2de6cb2c10c4e7703a30f084b78d07d9bc0b6720a0",
"person": true,
"reqFromDate": null,
"reqToDate": null,
"days": 365,
"minThreshold": 0.0,
"minRatingCount": 0,
"minSurveyCount": 0,
"minWordCount": 0,
"showComments": true,
"showRatings": true,
"showToneCategory": false,
"showVarName": false,
"pgVendor": false,
"page": 0,
"perPage": 20,
"startPageIndex": -1,
"configVersion": "v2",
"sourceProductId": 1
}
}
}
JSON Response Tags
Property | Type | Description |
---|---|---|
filter | Object | The filters applied on the testimonials |
entities | Array | The physician entities for which data is being returned |
entities.id | String | Unique identifier of the entity |
entities.Name | String | The name of the entity |
entities.totalRatingCount | Integer | Total number of survey responses available for primary rating. |
entities.totalCommentCount | Integer | Number of actual comments available for the entity |
entities.totalSurveyCount | Integer | Total number of surveys available for the entity |
overallRating.name | String | Overall Rating name |
overallRating.value | Decimal | Overall rating of the Provider |
overallRating.questionRatings | Array | Individual question level rating which contributed for the overall rating |
overallRating.questionRatings.name | String | Question name contributed for overall rating |
overallRating.questionRatings.value | Decimal | Star rating of the question |
overallRating.questionRatings.responseCount | Integer | No. of responses received for this questiong |
ratings | Array | The ratings for this entity |
ratings.name | String | The name of the rating |
ratings.value | Decimal | The score |
ratings.questionRatings | Array | List of questions used for calculating this rating |
ratings.questionRatings.name | String | Question text |
ratings.questionRatings.value | Decimal | Question rating |
ratings.questionRatings.responseCount | Integer | Total number of responses for this question |
reviews | Array | The reviews for this entity |
reviews.documentId | Integer | Unique identifier of the review |
reviews.surveyKey | String | The sessionkey for the review |
reviews.source | String | The source for the review |
reviews.mentionTime | Datetime (ISO-8601) | The date & time at which this review was mentioned |
reviews.overallRating | Object | Overall rating of the comment |
reviews.overallRating.name | String | Overall rating name |
reviews.overallRating.value | Decimal | Overall rating of the comment |
reviews.ratings | Array | Individual ratings |
reviews.ratings.name | String | The name of the rating |
reviews.ratings.value | Decimal | Individual question rating |
reviews.comment | Object | Comment of the review |
reviews.comment.commentId | Integer | Unique identified for the comment |
reviews.comment.wordCount | Integer | Number of words in the comment |
reviews.comment.comment | String | The comment content |
Reviews for a Single Location
POST https://api1.consumerism.pressganey.com/api/external/bsr/v2/reviews
Header Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
Content-Type | application/json | Content in JSON format | Required |
Access-Token | String | Access token received from the platform | Required |
POST Request Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
locationId | String | Unique identifier of a Location. You can get this identifier in mapping file | Required |
perPage | Integer | The number of reviews per page | Optional, default is up to 20 |
minThreshold | String | Minimum threshold for the comments Values between 0 and 5 Note: Minimum threshold is compared to the overall rating value associated with the comments | Optional, by default threshold is not considered |
days | Integer | Maximum age of the reviews in days. For example, days=7 means reviews from the past 1 week | Optional, default is 365 days |
minSurveyCount | Integer | Returns responses only when there are at least as many survey responses as specified in minSurveyCount | Optional, default is 0 |
minRatingCount | Integer | Returns responses only when there are at least as many ratings as specified in minRatingCount. | Optional, default is 0 |
minWordCount | Integer | Returns only those reviews, which have minimum number of words in it. | Default is 0, meaning, no restriction on word count |
showRatings | Boolean | If you don’t need rating, send this parameter as false | Default is true |
showReviews | Boolean | If you don’t need comments, send this parameter as false | Default is true |
scrollKey | String | The encrypted key to scroll to the next page, call the API with scroll key to get next page | Default is empty |
JSON Response
A JSON object containing the latest comments.
{
"status": {
"message": "SUCCESS",
"code": 200
},
"data": {
"client": "Demo",
"entities": [
{
"id": "Demo Location",
"name": "Demo Location Name",
"totalCommentCount": 5,
"totalRatingCount": 11,
"totalSurveyCount": 11,
"overallRating": {
"name": "Overall Satisfaction",
"value": 4.7,
"categoryResponseCount": 4,
"questionRatings": [
{
"name": "The doctor's interest in, and attention to, my problem?",
"value": 4.4,
"responseCount": 4
},
{
"name": "The thoroughness of the doctor's examination?",
"value": 4.6,
"responseCount": 3
},
{
"name": "Overall satisfaction with my doctor this visit?",
"value": 5.0,
"responseCount": 3
},
{
"name": "The doctor's explanation of my problems(s) and the need for additional tests and treatment?",
"value": 5.0,
"responseCount": 3
}
]
},
"reviews": [
{
"documentId": 3840508,
"surveyKey": "42c59691-adfd-44f2-aeff-e91fcb3d040c",
"source": "Demo Source",
"mentionTime": "2020-11-29T06:13:01Z",
"comment": {
"commentId": 12552895,
"wordCount": 4,
"comment": "Great doctor and staff"
},
"ratings": [
{
"name": "Scheduling",
"value": 3.75
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 3.75
}
},
{
"documentId": 3840516,
"surveyKey": "04b47591-db9a-4349-8070-3aa2d0e01a7e",
"source": "Demo Source",
"mentionTime": "2020-11-18T12:20:08Z",
"comment": {
"commentId": 12552985,
"wordCount": 1,
"comment": "excellent"
},
"ratings": [
{
"name": "Scheduling",
"value": 3.75
},
{
"name": "staff",
"value": 3.75
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 4.38
}
},
{
"documentId": 3840514,
"surveyKey": "3d4c3921-4bb6-4fca-829d-7f9b77082f0d",
"source": "Demo Source",
"mentionTime": "2020-11-10T12:20:08Z",
"comment": {
"commentId": 12552921,
"wordCount": 1,
"comment": "great"
},
"ratings": [
{
"name": "Scheduling",
"value": 5.0
},
{
"name": "staff",
"value": 5.0
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 5.0
}
},
{
"documentId": 3807834,
"surveyKey": "7c1eceed-398a-4d9f-8455-0e3da1cba124",
"source": "Demo Source",
"mentionTime": "2020-09-24T13:11:12Z",
"comment": {
"commentId": 12552785,
"wordCount": 7,
"comment": "Test web survey on 24th Sep 2020"
},
"ratings": [
{
"name": "Scheduling",
"value": 5.0
},
{
"name": "staff",
"value": 5.0
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 5.0
}
},
{
"documentId": 3807834,
"surveyKey": "7c1eceed-398a-4d9f-8455-0e3da1cba124",
"source": "Demo Source",
"mentionTime": "2020-09-24T13:11:12Z",
"comment": {
"commentId": 12552786,
"wordCount": 7,
"comment": "Test Web Survey on 24th 09 2020"
},
"ratings": [
{
"name": "Scheduling",
"value": 5.0
},
{
"name": "staff",
"value": 5.0
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 5.0
}
}
],
"ratings": [
{
"name": "Scheduling",
"value": 4.4,
"categoryResponseCount": 4,
"questionRatings": [
{
"name": "The doctor's interest in, and attention to, my problem?",
"value": 4.4,
"responseCount": 4
}
]
},
{
"name": "staff",
"value": 4.6,
"categoryResponseCount": 3,
"questionRatings": [
{
"name": "The thoroughness of the doctor's examination?",
"value": 4.6,
"responseCount": 3
}
]
},
{
"name": "Clean",
"value": 5.0,
"categoryResponseCount": 3,
"questionRatings": [
{
"name": "The doctor's explanation of my problems(s) and the need for additional tests and treatment?",
"value": 5.0,
"responseCount": 3
}
]
}
]
}
],
"filter": {
"clientId": "Demo",
"entityId": 580714,
"scrollKey": "6bd9041e37b675273ff3da2de6cb2c10c4e7703a30f084b78d07d9bc0b6720a0",
"person": true,
"reqFromDate": null,
"reqToDate": null,
"days": 365,
"minThreshold": 0.0,
"minRatingCount": 0,
"minSurveyCount": 0,
"minWordCount": 0,
"showComments": true,
"showRatings": true,
"showToneCategory": false,
"showVarName": false,
"pgVendor": false,
"page": 0,
"perPage": 20,
"startPageIndex": -1,
"configVersion": "v2",
"sourceProductId": 1
}
}
}
JSON Response Tags
Property | Type | Description |
---|---|---|
filter | Object | The filters applied on the testimonials |
entities | Array | The physician entities for which data is being returned |
entities.id | String | Unique identifier of the entity |
entities.Name | String | The name of the entity |
entities.totalRatingCount | Integer | Total number of survey responses available for primary rating. |
entities.totalCommentCount | Integer | Number of actual comments available for the entity |
entities.totalSurveyCount | Integer | Total number of surveys available for the entity |
overallRating.name | String | Overall Rating name |
overallRating.value | Decimal | Overall rating of the Provider |
overallRating.questionRatings | Array | Individual question level rating which contributed for the overall rating |
overallRating.questionRatings.name | String | Question name contributed for overall rating |
overallRating.questionRatings.value | Decimal | Star rating of the question |
overallRating.questionRatings.responseCount | Integer | No. of responses received for this questiong |
ratings | Array | The ratings for this entity |
ratings.name | String | The name of the rating |
ratings.value | Decimal | The score |
ratings.questionRatings | Array | List of questions used for calculating this rating |
ratings.questionRatings.name | String | Question text |
ratings.questionRatings.value | Decimal | Question rating |
ratings.questionRatings.responseCount | Integer | Total number of responses for this question |
reviews | Array | The reviews for this entity |
reviews.documentId | Integer | Unique identifier of the review |
reviews.surveyKey | String | The sessionkey for the review |
reviews.source | String | The source for the review |
reviews.mentionTime | Datetime (ISO-8601) | The date & time at which this review was mentioned |
reviews.overallRating | Object | Overall rating of the comment |
reviews.overallRating.name | String | Overall rating name |
reviews.overallRating.value | Decimal | Overall rating of the comment |
reviews.ratings | Array | Individual ratings |
reviews.ratings.name | String | The name of the rating |
reviews.ratings.value | Decimal | Individual question rating |
reviews.comment | Object | Comment of the review |
reviews.comment.commentId | Integer | Unique identified for the comment |
reviews.comment.wordCount | Integer | Number of words in the comment |
reviews.comment.comment | String | The comment content |
Reviews for Roll Up Scores for a Physician or Location
Endpoint
POST https://api1.consumerism.pressganey.com/api/external/bsr/v2/reviews
Header Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
Content-Type | application/json | Content in JSON format | Required |
Access-Token | String | Access token received from the platform | Required |
POST Request Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
entityId | String | Unique identifier for Physician / Location. You can get this identifier in mapping file or Transparency application | Required |
perPage | Integer | The number of reviews per page | Optional, default is up to 20 |
minThreshold | String | Minimum threshold for the comments Values between 0 and 5 Note: Minimum threshold is compared to the overall rating value associated with the comments | Optional, by default threshold is not considered |
days | Integer | Maximum age of the reviews in days. For example, days=7 means reviews from the past 1 week | Optional, default is 365 days |
minSurveyCount | Integer | Returns responses only when there are at least as many survey responses as specified in minSurveyCount | Optional, default is 0 |
minRatingCount | Integer | Returns responses only when there are at least as many ratings as specified in minRatingCount. | Optional, default is 0 |
minWordCount | Integer | Returns only those reviews, which have minimum number of words in it. | Default is 0, meaning, no restriction on word count |
showRatings | Boolean | If you don’t need rating, send this parameter as false | Default is true |
showReviews | Boolean | If you don’t need comments, send this parameter as false | Default is true |
scrollKey | String | The encrypted key to scroll to the next page, call the API with scroll key to get next page | Default is empty |
JSON Response
A JSON object containing the latest comments.
{
"status": {
"message": "SUCCESS",
"code": 200
},
"data": {
"client": "Demo",
"entities": [
{
"id": "Demo Location",
"name": "Demo Location Name",
"totalCommentCount": 5,
"totalRatingCount": 11,
"totalSurveyCount": 11,
"overallRating": {
"name": "Overall Satisfaction",
"value": 4.7,
"categoryResponseCount": 4,
"questionRatings": [
{
"name": "The doctor's interest in, and attention to, my problem?",
"value": 4.4,
"responseCount": 4
},
{
"name": "The thoroughness of the doctor's examination?",
"value": 4.6,
"responseCount": 3
},
{
"name": "Overall satisfaction with my doctor this visit?",
"value": 5.0,
"responseCount": 3
},
{
"name": "The doctor's explanation of my problems(s) and the need for additional tests and treatment?",
"value": 5.0,
"responseCount": 3
}
]
},
"reviews": [
{
"documentId": 3840508,
"surveyKey": "42c59691-adfd-44f2-aeff-e91fcb3d040c",
"source": "Demo Source",
"mentionTime": "2020-11-29T06:13:01Z",
"comment": {
"commentId": 12552895,
"wordCount": 4,
"comment": "Great doctor and staff"
},
"ratings": [
{
"name": "Scheduling",
"value": 3.75
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 3.75
}
},
{
"documentId": 3840516,
"surveyKey": "04b47591-db9a-4349-8070-3aa2d0e01a7e",
"source": "Demo Source",
"mentionTime": "2020-11-18T12:20:08Z",
"comment": {
"commentId": 12552985,
"wordCount": 1,
"comment": "excellent"
},
"ratings": [
{
"name": "Scheduling",
"value": 3.75
},
{
"name": "staff",
"value": 3.75
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 4.38
}
},
{
"documentId": 3840514,
"surveyKey": "3d4c3921-4bb6-4fca-829d-7f9b77082f0d",
"source": "Demo Source",
"mentionTime": "2020-11-10T12:20:08Z",
"comment": {
"commentId": 12552921,
"wordCount": 1,
"comment": "great"
},
"ratings": [
{
"name": "Scheduling",
"value": 5.0
},
{
"name": "staff",
"value": 5.0
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 5.0
}
},
{
"documentId": 3807834,
"surveyKey": "7c1eceed-398a-4d9f-8455-0e3da1cba124",
"source": "Demo Source",
"mentionTime": "2020-09-24T13:11:12Z",
"comment": {
"commentId": 12552785,
"wordCount": 7,
"comment": "Test web survey on 24th Sep 2020"
},
"ratings": [
{
"name": "Scheduling",
"value": 5.0
},
{
"name": "staff",
"value": 5.0
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 5.0
}
},
{
"documentId": 3807834,
"surveyKey": "7c1eceed-398a-4d9f-8455-0e3da1cba124",
"source": "Demo Source",
"mentionTime": "2020-09-24T13:11:12Z",
"comment": {
"commentId": 12552786,
"wordCount": 7,
"comment": "Test Web Survey on 24th 09 2020"
},
"ratings": [
{
"name": "Scheduling",
"value": 5.0
},
{
"name": "staff",
"value": 5.0
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 5.0
}
}
],
"ratings": [
{
"name": "Scheduling",
"value": 4.4,
"categoryResponseCount": 4,
"questionRatings": [
{
"name": "The doctor's interest in, and attention to, my problem?",
"value": 4.4,
"responseCount": 4
}
]
},
{
"name": "staff",
"value": 4.6,
"categoryResponseCount": 3,
"questionRatings": [
{
"name": "The thoroughness of the doctor's examination?",
"value": 4.6,
"responseCount": 3
}
]
},
{
"name": "Clean",
"value": 5.0,
"categoryResponseCount": 3,
"questionRatings": [
{
"name": "The doctor's explanation of my problems(s) and the need for additional tests and treatment?",
"value": 5.0,
"responseCount": 3
}
]
}
]
}
],
"filter": {
"clientId": "Demo",
"entityId": 580714,
"scrollKey": "6bd9041e37b675273ff3da2de6cb2c10c4e7703a30f084b78d07d9bc0b6720a0",
"person": true,
"reqFromDate": null,
"reqToDate": null,
"days": 365,
"minThreshold": 0.0,
"minRatingCount": 0,
"minSurveyCount": 0,
"minWordCount": 0,
"showComments": true,
"showRatings": true,
"showToneCategory": false,
"showVarName": false,
"pgVendor": false,
"page": 0,
"perPage": 20,
"startPageIndex": -1,
"configVersion": "v2",
"sourceProductId": 1
}
}
}
JSON Response Tags
Property | Type | Description |
---|---|---|
filter | Object | The filters applied on the testimonials |
entities | Array | The physician entities for which data is being returned |
entities.id | String | Unique identifier of the entity |
entities.Name | String | The name of the entity |
entities.totalRatingCount | Integer | Total number of survey responses available for primary rating. |
entities.totalCommentCount | Integer | Number of actual comments available for the entity |
entities.totalSurveyCount | Integer | Total number of surveys available for the entity |
overallRating.name | String | Overall Rating name |
overallRating.value | Decimal | Overall rating of the Provider |
overallRating.questionRatings | Array | Individual question level rating which contributed for the overall rating |
overallRating.questionRatings.name | String | Question name contributed for overall rating |
overallRating.questionRatings.value | Decimal | Star rating of the question |
overallRating.questionRatings.responseCount | Integer | No. of responses received for this questiong |
ratings | Array | The ratings for this entity |
ratings.name | String | The name of the rating |
ratings.value | Decimal | The score |
ratings.questionRatings | Array | List of questions used for calculating this rating |
ratings.questionRatings.name | String | Question text |
ratings.questionRatings.value | Decimal | Question rating |
ratings.questionRatings.responseCount | Integer | Total number of responses for this question |
reviews | Array | The reviews for this entity |
reviews.documentId | Integer | Unique identifier of the review |
reviews.surveyKey | String | The sessionkey for the review |
reviews.source | String | The source for the review |
reviews.mentionTime | Datetime (ISO-8601) | The date & time at which this review was mentioned |
reviews.overallRating | Object | Overall rating of the comment |
reviews.overallRating.name | String | Overall rating name |
reviews.overallRating.value | Decimal | Overall rating of the comment |
reviews.ratings | Array | Individual ratings |
reviews.ratings.name | String | The name of the rating |
reviews.ratings.value | Decimal | Individual question rating |
reviews.comment | Object | Comment of the review |
reviews.comment.commentId | Integer | Unique identified for the comment |
reviews.comment.wordCount | Integer | Number of words in the comment |
reviews.comment.comment | String | The comment content |
Reviews for Roll Up Scores for a Physician or Location
Endpoint
POST https://api1.consumerism.pressganey.com/api/external/bsr/v2/reviews
Header Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
Content-Type | application/json | Content in JSON format | Required |
Access-Token | String | Access token received from the platform | Required |
POST Request Parameters
Property | Type | Description | Required/Optional |
---|---|---|---|
entityId | String | Unique identifier for Physician / Location. You can get this identifier in mapping file or Transparency application | Required |
perPage | Integer | The number of reviews per page | Optional, default is up to 20 |
minThreshold | String | Minimum threshold for the comments Values between 0 and 5 Note: Minimum threshold is compared to the overall rating value associated with the comments | Optional, by default threshold is not considered |
days | Integer | Maximum age of the reviews in days. For example, days=7 means reviews from the past 1 week | Optional, default is 365 days |
minSurveyCount | Integer | Returns responses only when there are at least as many survey responses as specified in minSurveyCount | Optional, default is 0 |
minRatingCount | Integer | Returns responses only when there are at least as many ratings as specified in minRatingCount. | Optional, default is 0 |
minWordCount | Integer | Returns only those reviews, which have minimum number of words in it. | Default is 0, meaning, no restriction on word count |
showRatings | Boolean | If you don’t need rating, send this parameter as false | Default is true |
showReviews | Boolean | If you don’t need comments, send this parameter as false | Default is true |
scrollKey | String | The encrypted key to scroll to the next page, call the API with scroll key to get next page | Default is empty |
JSON Response
A JSON object containing the latest comments.
{
"status": {
"message": "SUCCESS",
"code": 200
},
"data": {
"client": "Demo",
"entities": [
{
"id": "Demo Location",
"name": "Demo Location Name",
"totalCommentCount": 5,
"totalRatingCount": 11,
"totalSurveyCount": 11,
"overallRating": {
"name": "Overall Satisfaction",
"value": 4.7,
"categoryResponseCount": 4,
"questionRatings": [
{
"name": "The doctor's interest in, and attention to, my problem?",
"value": 4.4,
"responseCount": 4
},
{
"name": "The thoroughness of the doctor's examination?",
"value": 4.6,
"responseCount": 3
},
{
"name": "Overall satisfaction with my doctor this visit?",
"value": 5.0,
"responseCount": 3
},
{
"name": "The doctor's explanation of my problems(s) and the need for additional tests and treatment?",
"value": 5.0,
"responseCount": 3
}
]
},
"reviews": [
{
"documentId": 3840508,
"surveyKey": "42c59691-adfd-44f2-aeff-e91fcb3d040c",
"source": "Demo Source",
"mentionTime": "2020-11-29T06:13:01Z",
"comment": {
"commentId": 12552895,
"wordCount": 4,
"comment": "Great doctor and staff"
},
"ratings": [
{
"name": "Scheduling",
"value": 3.75
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 3.75
}
},
{
"documentId": 3840516,
"surveyKey": "04b47591-db9a-4349-8070-3aa2d0e01a7e",
"source": "Demo Source",
"mentionTime": "2020-11-18T12:20:08Z",
"comment": {
"commentId": 12552985,
"wordCount": 1,
"comment": "excellent"
},
"ratings": [
{
"name": "Scheduling",
"value": 3.75
},
{
"name": "staff",
"value": 3.75
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 4.38
}
},
{
"documentId": 3840514,
"surveyKey": "3d4c3921-4bb6-4fca-829d-7f9b77082f0d",
"source": "Demo Source",
"mentionTime": "2020-11-10T12:20:08Z",
"comment": {
"commentId": 12552921,
"wordCount": 1,
"comment": "great"
},
"ratings": [
{
"name": "Scheduling",
"value": 5.0
},
{
"name": "staff",
"value": 5.0
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 5.0
}
},
{
"documentId": 3807834,
"surveyKey": "7c1eceed-398a-4d9f-8455-0e3da1cba124",
"source": "Demo Source",
"mentionTime": "2020-09-24T13:11:12Z",
"comment": {
"commentId": 12552785,
"wordCount": 7,
"comment": "Test web survey on 24th Sep 2020"
},
"ratings": [
{
"name": "Scheduling",
"value": 5.0
},
{
"name": "staff",
"value": 5.0
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 5.0
}
},
{
"documentId": 3807834,
"surveyKey": "7c1eceed-398a-4d9f-8455-0e3da1cba124",
"source": "Demo Source",
"mentionTime": "2020-09-24T13:11:12Z",
"comment": {
"commentId": 12552786,
"wordCount": 7,
"comment": "Test Web Survey on 24th 09 2020"
},
"ratings": [
{
"name": "Scheduling",
"value": 5.0
},
{
"name": "staff",
"value": 5.0
},
{
"name": "Clean",
"value": 5.0
}
],
"overallRating": {
"name": "Overall Satisfaction",
"value": 5.0
}
}
],
"ratings": [
{
"name": "Scheduling",
"value": 4.4,
"categoryResponseCount": 4,
"questionRatings": [
{
"name": "The doctor's interest in, and attention to, my problem?",
"value": 4.4,
"responseCount": 4
}
]
},
{
"name": "staff",
"value": 4.6,
"categoryResponseCount": 3,
"questionRatings": [
{
"name": "The thoroughness of the doctor's examination?",
"value": 4.6,
"responseCount": 3
}
]
},
{
"name": "Clean",
"value": 5.0,
"categoryResponseCount": 3,
"questionRatings": [
{
"name": "The doctor's explanation of my problems(s) and the need for additional tests and treatment?",
"value": 5.0,
"responseCount": 3
}
]
}
]
}
],
"filter": {
"clientId": "Demo",
"entityId": 580714,
"scrollKey": "6bd9041e37b675273ff3da2de6cb2c10c4e7703a30f084b78d07d9bc0b6720a0",
"person": true,
"reqFromDate": null,
"reqToDate": null,
"days": 365,
"minThreshold": 0.0,
"minRatingCount": 0,
"minSurveyCount": 0,
"minWordCount": 0,
"showComments": true,
"showRatings": true,
"showToneCategory": false,
"showVarName": false,
"pgVendor": false,
"page": 0,
"perPage": 20,
"startPageIndex": -1,
"configVersion": "v2",
"sourceProductId": 1
}
}
}
JSON Response Tags
Property | Type | Description |
---|---|---|
filter | Object | The filters applied on the testimonials |
entities | Array | The physician entities for which data is being returned |
entities.id | String | Unique identifier of the entity |
entities.Name | String | The name of the entity |
entities.totalRatingCount | Integer | Total number of survey responses available for primary rating. |
entities.totalCommentCount | Integer | Number of actual comments available for the entity |
entities.totalSurveyCount | Integer | Total number of surveys available for the entity |
overallRating.name | String | Overall Rating name |
overallRating.value | Decimal | Overall rating of the Provider |
overallRating.questionRatings | Array | Individual question level rating which contributed for the overall rating |
overallRating.questionRatings.name | String | Question name contributed for overall rating |
overallRating.questionRatings.value | Decimal | Star rating of the question |
overallRating.questionRatings.responseCount | Integer | No. of responses received for this questiong |
ratings | Array | The ratings for this entity |
ratings.name | String | The name of the rating |
ratings.value | Decimal | The score |
ratings.questionRatings | Array | List of questions used for calculating this rating |
ratings.questionRatings.name | String | Question text |
ratings.questionRatings.value | Decimal | Question rating |
ratings.questionRatings.responseCount | Integer | Total number of responses for this question |
reviews | Array | The reviews for this entity |
reviews.documentId | Integer | Unique identifier of the review |
reviews.surveyKey | String | The sessionkey for the review |
reviews.source | String | The source for the review |
reviews.mentionTime | Datetime (ISO-8601) | The date & time at which this review was mentioned |
reviews.overallRating | Object | Overall rating of the comment |
reviews.overallRating.name | String | Overall rating name |
reviews.overallRating.value | Decimal | Overall rating of the comment |
reviews.ratings | Array | Individual ratings |
reviews.ratings.name | String | The name of the rating |
reviews.ratings.value | Decimal | Individual question rating |
reviews.comment | Object | Comment of the review |
reviews.comment.commentId | Integer | Unique identified for the comment |
reviews.comment.wordCount | Integer | Number of words in the comment |
reviews.comment.comment | String | The comment content |
Error Response
Code | Error Message | Description |
---|---|---|
401 - Unauthorized | Access Token is either Invalid or Expired! | If the provided Access-Token is not a valid or expired |
400 - Bad Request | Invalid client from token | If the client from provided Access-Token is not a valid one |
400 - Bad Request | location/provider/entity expected | If not provided the personId,locationId or entityId. |
400 - Bad Request | fromDate and toDate are not parsable | If the provided fromDate and toDate is not in yyyy-MM-dd’T'HH:mm:ss'Z’ format |
400 - Bad Request | fromDate is not parsable | If the provided fromDate not in yyyy-MM-dd’T'HH:mm:ss'Z’ format |
400 - Bad Request | toDate is not parsable | If the provided toDate not in yyyy-MM-dd’T'HH:mm:ss'Z’ format |
JS widgets
Introduction
We are supporting JS widgets of two different types named Inbound widget and outbound widget. Inbound widget is mainly to define the Survey clients wants to display in their websites. Once the person clicks on Save Draft/Save button from the screen, we need to create survey and its questions/update questions. Outbound widget is generally used to display the reviews that belongs to particular provider/locations. These widgets are created when you have an Inbound widget tied upto the same application. Here, you will have the option to select any questions we have created in the Inbound survey configuration.
JS code Snippet
Inbound
Make sure to add the below html code snippet in to your webpage.
<link href="https://cdn.binaryfountain.com/js-widgets/js-widgets.css" rel="stylesheet"/>
<script type="module" src="https://cdn.binaryfountain.com/js-widgets/js-widgets.esm.js"></script>
<script nomodule src="https://cdn.binaryfountain.com/js-widgets/js-widgets.js"></script>
<script>
(function (e, a, p, l, t) {
var container = document.querySelector(e);
if (!container) throw 'The element could not be found.';
var widgets = document.createElement('bf-widgets');
widgets.setAttribute('app-id', a);
widgets.setAttribute('person-id', p);
widgets.setAttribute('location-id', l);
widgets.setAttribute('type', t);
container.appendChild(widgets);
})('.container','000000000011111',PERSON_CODE,LOCATION_CODE,'inbound');
</script>
Make sure to add the below html code, it uses as the container
<div class="container"></div>
Inbound (Generic)
Inbound (Individual)
Outbound
Make sure to add the below html code snippet in to your webpage.
<link href="https://cdn.binaryfountain.com/js-widgets/js-widgets.css" rel="stylesheet"/>
<script type="module" src="https://cdn.binaryfountain.com/js-widgets/js-widgets.esm.js"></script>
<script nomodule src="https://cdn.binaryfountain.com/js-widgets/js-widgets.js"></script>
<script>
(function (e, a, p, l, t) {
var container = document.querySelector(e);
if (!container) throw 'The element could not be found.';
var widgets = document.createElement('bf-widgets');
widgets.setAttribute('app-id', a);
widgets.setAttribute('person-id', p);
widgets.setAttribute('location-id', l);
widgets.setAttribute('type', t);
container.appendChild(widgets);
})('.container','000000000011111',PERSON_CODE,LOCATION_CODE,'outbound');
</script>
Make sure to add the below html code, it uses as the container
<div class="container"></div>
Outbound (Generic)
Outbound (Individual)
Both
Make sure to add the below html code snippet in to your webpage.
<link href="https://cdn.binaryfountain.com/js-widgets/js-widgets.css" rel="stylesheet"/>
<script type="module" src="https://cdn.binaryfountain.com/js-widgets/js-widgets.esm.js"></script>
<script nomodule src="https://cdn.binaryfountain.com/js-widgets/js-widgets.js"></script>
<script>
(function (e, a, p, l, t) {
var container = document.querySelector(e);
if (!container) throw 'The element could not be found.';
var widgets = document.createElement('bf-widgets');
widgets.setAttribute('app-id', a);
widgets.setAttribute('person-id', p);
widgets.setAttribute('location-id', l);
widgets.setAttribute('type', t);
container.appendChild(widgets);
})('.container','000000000011111',PERSON_CODE,LOCATION_CODE,'both');
</script>
Make sure to add the below html code, it uses as the container
<div class="container"></div>
Both (Generic)
Both (Individual)
Events
We can use the following code to catch the events in success/failure cases. bfReviewSubmitSuccess used in the case of survey submission passed and bfReviewSubmitFailure used when survey submission is failed.
<script>
document.addEventListener('DOMContentLoaded', function (event) {
var widgets = document.querySelector('bf-widgets');
widgets.addEventListener('bfReviewSubmitSuccess', function (event) {
//
});
widgets.addEventListener('bfReviewSubmitFailure', function (event) {
//
});
});
</script>
React
Installation
- Create a
.npmrc
file where yourpackage.json
lives (normally at the root of the repository) - Add the following line to the .npmrc file
- Install the package
For more info, please refer the following URL,
https://docs.github.com/en/free-pro-team@latest/packages/publishing-and-managing-packages/installing-a-package
Usage
Import and use the base BfWidgets
component
import React from 'react';
import { BfWidgets } from '@binaryfountain/js-widgets-react'; // Widgets base component
function MyComponent(props) {
return (
<div class="container">
<BfWidgets
type="both"
appId="APP_ID"
personId="PERSON_ID"
locationId="LOCATION_ID"
/>
</div>
);
}
Props
Property | Type | Default | Required |
---|---|---|---|
type | “both” or “inbound” or “outbound” | “both” | true |
appId | String | – | true |
locationId | string or null | null | false * |
personId | string or null | null | false * |
*At least one needs to be provided
Make sure to add the stylesheet as well
// ...
import { BfWidgets } from '@binaryfountain/js-widgets-react';
import '@binaryfountain/js-widgets/dist/js-widgets/js-widgets.css'; // Widgets styles
// ...
Or in your index.html
<head>
<!-- ... -->
<link
rel="stylesheet"
href="https://cdn.binaryfountain.com/js-widgets/js-widgets.css"
/>
<!-- ... -->
</head>
Angular
Installation
- Create a
.npmrc
file where yourpackage.json
lives (normally at the root of the repository) - Add the following line to the .npmrc file
- Install the package
Usage
Import the library module
// app.module.ts
import { ComponentLibraryModule } from '@binaryfountain/js-widgets-angular';
@NgModule({
// ...
imports: [ComponentLibraryModule],
// ...
})
export class AppModule {}
use the base of bf-widgets
component
<!-- app.component.html -->
<div class="container">
<bf-widgets
type="both"
app-id="APP_ID"
location-id="LOCATION_ID"
person-id="PERSON_ID"
></bf-widgets>
</div>
Props
Property | Type | Default | Required |
---|---|---|---|
type | “both” or “inbound” or “outbound” | “both” | true |
appId | String | – | true |
location-id | string or null | null | false * |
person-id | string or null | null | false * |
*At least one needs to be provided
Make sure to add the stylesheet as well, for example in angular.json
{
"styles": [
"src/styles.css",
"node_modules/@binaryfountain/js-widgets/dist/js-widgets/js-widgets.css"
]
}
Or in your index.html
<head>
<!-- ... -->
<link
rel="stylesheet"
href="https://cdn.binaryfountain.com/js-widgets/js-widgets.css"
/>
<!-- ... -->
</head>
Vue
Installation
- Create a
.npmrc
file where yourpackage.json
lives (normally at the root of the repository) - Add the following line to the .npmrc file
- Install the package
Usage
Add the following code to your entry file (commonly src/main.js
)
// main.js
import Vue from 'vue';
import App from './App.vue';
// ...
import {
applyPolyfills,
defineCustomElements,
} from '@binaryfountain/js-widgets/loader';
// ...
// Tell Vue to ignore all components defined in the @binaryfountain/js-widgets
// package. They're all prefixed with bf-*
Vue.config.ignoredElements = [/bf-\w*/];
// Bind the custom elements to the window object
applyPolyfills().then(() => {
defineCustomElements();
});
// ...
new Vue({
render: (h) => h(App),
}).$mount('#app');
use the base of bf-widgets
component
<!-- App.vue -->
<template>
<div class="container">
<bf-widgets
type="both"
app-id="APP_ID"
location-id="LOCATION_ID"
person-id="PERSON_ID"
></bf-widgets>
</div>
</template>
Props
Property | Type | Default | Required |
---|---|---|---|
type | “both” or “inbound” or “outbound” | “both” | true |
appId | String | – | true |
location-id | string or null | null | false * |
person-id | string or null | null | false * |
*At least one needs to be provided
Make sure to add the stylesheet as well, for example in main.js
import Vue from 'vue';
import App from './App.vue';
import {
applyPolyfills,
defineCustomElements,
} from '@binaryfountain/js-widgets/loader';
import '@binaryfountain/js-widgets/dist/js-widgets/js-widgets.css';
// ...
Or in your index.html
<head>
<!-- ... -->
<link
rel="stylesheet"
href="https://cdn.binaryfountain.com/js-widgets/js-widgets.css"
/>
<!-- ... -->
</head>
FAQ
1) Can we have a single widget for Both Collection Review and Display Reviews?
A) Yes, we can use the “both” option as a param for INDIVIDUAL LEVEL and GENERIC LEVEL widgets in a single web page.
2) Can we have a Collection Review and Display Reviews in two seperate web pages?
A) Yes, we can host it in different web pages by creating the Display Review and Collection Reviews specific to that website URL, so that we are checking whether the HOST url is whitelisted or not
3) Can we customize the look and feel of widgets?
A) Yes, we can set the Color and Font styles as well.
CSS Overrides
Since we are using Shadow DOM, CSS overrides are very restricted and can only be customized for the fields we support.
We have to use CSS Shadow ::part for customizing here Format Click here
Fields we support overriding
- bf-review-form-number
- bf-review-form-label
- bf-field-text
- bf-field-textarea
- bf-field-scale
- bf-field-star-ratings
- bf-field-select
- bf-field-text-input
- bf-field-textarea-input
- bf-field-select-input
- bf-modal-content
- bf-modal-background
- bf-modal-close
- bf-modal-body
- bf-review-form-field
- bf-review-form-submit
- bf-review-form-submit-button
- bf-inbound-review-button
- bf-inbound-add-wrapper
Dynamic Parts
These parts are dynamically created using the question ids. This will give you great control over each questions if needed.
- field-{QUESTION_ID}-label
- field-{QUESTION_ID}-input
- form-field-{QUESTION_ID}
bf-widgets::part(bf-review-form-number) {
display: none !important;
height: 150px;
}
bf-widgets::part(bf-review-form-label) {
color: red !important;
}
bf-widgets::part(bf-field-text-input) {
color: red;
}
bf-widgets::part(bf-modal-close) {
background-color: red;
}
bf-widgets::part(field-1000037078-label) {
display: none;
}
bf-widgets::part(field-1000037078-input) {
border-color: red;
}
bf-widgets::part(form-field-1000037085)
{
border-bottom: 1px solid #bab7b7;
padding-bottom: 15px;
margin-bottom: 15px;
}