Stateless Administration: Assessment Center API can be used to administer CATs in a stateless fashion by calling the StatelessParticipants endpoint.  Because this is stateless administration, there is no need to register an assessment before administration.  The StatelessParticipants endpoint returns the next item, based on all information POSTed to it.  The StatelessParticipants endpoint uses the CAT algorithm to select the next item, therefore it is only applicable for measures that use the CAT algorithm.  The StatelessParticipants uses the CAT stopping rules, so once the algorithm determines enough information has been collected.  It will return the Theta and StandardError values for the assessment and not a trace of the items.  It is assumed that the calling system is managing this since it will need to post all previous responses with each request.

 

In the example below, we will use the PROMIS Bank v1.1 - Pain Interference,

where the FormOID = 154D0273-C3F6-4BCE-8885-3194D4CC4596

 

The following request will return the first item of the assessment.

 

../2014-01/StatelessParticipants/154D0273-C3F6-4BCE-8885-3194D4CC4596.json

 

For the above request item PAININ9 is returned.  You will render this item in your application and the participant will respond.  Assuming the participants endorses PAININ9 with the response option text  Somewhat”.  You will post this key-value pair to the StatelessParticipants endpoint.  NOTE:  Both key-value pairs are case-sensitive. The algorithm will not process invalid key-value pairs and the same item will be returned. (e.g.  POSTing "PAININ9" = "somewhat", would result in item PAININ9 being displayed again.).

 

Response pattern syntax

Responses can be posted either as x-www-form-urlencoded parameters or as raw json in the body of the request. If the response pattern of the first two items are:

 

PAININ9 = Somewhat

PAININ31=Somewhat

 

Then the x-www-form-urlencoded rquested parameters would be:

 

Content-Type: application/x-www-form-urlencoded

PAININ9=Somewhat&Painin31=Somewhat

 

For requests using raw json, you need to add the querystring BodyParam=true to your request.

 

 ../2014-01/StatelessParticipants/154D0273-…-8885-3194D4CC4596.json?BodyParam=true

 

 

 

The format for the body of the request is:

 [

{"ItemID":"PAININ9","ItemResponseOID":"Somewhat","Order":1},

{"ItemID":"PAININ31","ItemResponseOID":"Somewhat","Order":2}

]

 

The above requests return item PAININ36.

 

Finishing an Assessment

Once the assessment is finished, you will receive a response with the final Theta and StdError attributes and an empty Items collection.

 

If you answered every item with “Somewhat”, the assessment will finish and return

 

Request:

../2014-01/StatelessParticipants/154D0273-C3F6-4BCE-8885-3194D4CC4596.json

POST

PAININ9 = Somewhat

PAININ31 = Somewhat

PAININ36 = Somewhat

PAININ22 = Somewhat

 

Response:

{

    "EngineAssembly": "CORE.Engines",

    "EngineType": "CORE.Engines.CATEngineGRM_Configurable",

    "Theta": "1.15470654687947",

    "StdError": "0.154971995251829",

    "Items": []

}

 

 

How to skip an item

If you use a GUID.Empty string “00000000-0000-0000-0000-000000000000" as a response option text, then the item will be maked as skipped and will not be used to determine the next item or the theta and std error calcuations.

 

Request:

../2014-01/StatelessParticipants/154D0273-C3F6-4BCE-8885-3194D4CC4596.json

POST

PAININ9 = Somewhat

PAININ31 = Somewhat

PAININ36 = Somewhat

PAININ22 = 00000000-0000-0000-0000-000000000000

PAININ12 = Somewhat

 

In the example above, item PAININ22 is marked as skipped.