Custom Fields

API users may find that practices have configured custom patient registration questions that are used to collect specific patient data points. There are two methods in the API to GET these fields:

  • Partners can use the standard GET /patients/{patientid} call where the showcustomfields parameter is set to true
  • Partners can also use the GET /patients/{patientid}/customfields call

Both GET call methods return a JSON object that contains the practice configured information for all of the custom registration questions. This method of using a JSON object is similar to the one used for Health History forms.

To update a patient, use the following call:

 

When updating custom questions via the PUT, Submit “customfields” with an updated JSON representation of the data retrieved from the GET. If a field contains a select list, update the “optionid”; otherwise update “customfieldvalue”.  

It is important to note that there is not a “customfields” call for the POST patients/{patientid}. The workflow for adding custom fields values at the point of patient creation is to use the POST patients/{patientid} call to create the patient record, and then use the PUT /patients/{patientid}/customfields to update the custom fields.

The custom field can also be used to find a patient record. For example, if you used the /customfields to get a list of custom fields and have ID 2 as the practice's MRN, you could lookup a patient with an MRN of 123456 with a GET of /patients/customfields/2/123456. The customfieldvalue is an actual value for non-select fields or an optionid integer for select fields.

As an example, an update of patient 100 for custom field IDs 200 and 300 might look like the following.  (Note: Double quotes may be needed with proper escapting under Windows.)

curl 'https://api.athenahealth.com/v1/1959/patients/100/customfields' -XPUT -ddepartmentid=1 -H"Authorization: Bearer xxxxxx" -dcustomfields='
	[
		{
			"customfieldid" : "100",
			"customfieldvalue" : "999999"
		},
 		{
 			"customfieldid" : "300",
 			"optionid" : "3"
 		}
	]'
  
{"success":"true","updatedcount":2,"disallowedcount":0}

Note: If you use a custom field that can't be updated (or a nonexistent ID), it will count as "disallowed".

Was this information helpful? Yes | No Thank you for your feedback! What went wrong? Incomplete or incorrect information | Irrelevant Content | Others
Submit