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.