{"resourceType":"Bundle","type":"searchset","total":1,"entry":[{"fullUrl":"https://api.opendental.com/fhir/v2/capabilitystatement/open-dental-capability-statement","resource":{"resourceType":"CapabilityStatement","id":"open-dental-capability-statement","url":"https://api.opendental.com/fhir/v2/CapabilityStatement/open-dental-capability-statement","version":"1.0.1","status":"active","experimental":false,"publisher":"Open Dental Software, Inc.","contact":[{"name":"Brian Miller","telecom":[{"system":"phone","value":"5033635432","use":"work","rank":1},{"system":"email","value":"brian@opendental.com","use":"work","rank":2}]},{"name":"Chris McGehee","telecom":[{"system":"phone","value":"5033635432","use":"work","rank":2},{"system":"email","value":"chris@opendental.com","use":"work","rank":1}]}],"date":"2018-11-28T00:00:00","description":"This capability statement describes the RESTful API that accesses the Open Dental database.","requirements":"Published to give operational support to third-party vendors wishing to interface with the Open Dental database.","kind":"instance","software":{"name":"Open Dental","version":"25.4.11.0","releaseDate":"2019-12-17T00:00:00"},"implementation":{"description":"FHIR server for a dental office running Open Dental","url":"https://api.opendental.com/fhir/v2"},"fhirVersion":"4.0.0","acceptUnknown":"both","format":["application/json"],"rest":[{"mode":"server","documentation":"This FHIR server can be used to look up patient demographics and appointments and to find openings where appointments can be scheduled. A client system can keep itself in sync with this server through Subscriptions.","security":{"cors":false,"description":"This FHIR server uses API keys to enforce security. Each API key has a set of permissions that allow access to certain resources. These keys can be generated and managed within the Open Dental program (Setup -> Advanced Setup -> FHIR). These API keys are only valid for the dental office that generated the API key. Once a client has an API key, it can include it in the header with the format 'Authorization: FHIRAPIKey apikey=mysupersecretapikey'."},"resource":[{"type":"AllergyIntolerance","interaction":[{"code":"read"},{"code":"search-type"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"category","type":"token","documentation":"The category of this allergy. Either food, medication, or environment. Determined based on the allergy def allergy type (allergydef.SnomedType)."},{"name":"clinical-status","type":"token","documentation":"Whether the allergy is active or not. Possible values are active or inactive."},{"name":"code","type":"token","documentation":"Code that identifies the allergy or intolerance. Corresponds to the name of the allergy or the name of the medication or the RxCui of the mediciation (allergydef.Description, medication.MedName, or medication.RxCui)."},{"name":"date","type":"date","documentation":"Date record was believed accurate. Corresponds to the last time this row was updated (allergy.DateTStamp)."},{"name":"identifier","type":"string","documentation":"The logical Id of the AllergyIntolerance. This is the same value as allergy.AllergyNum."},{"name":"last-date","type":"date","documentation":"The date a reaction was recorded. Corresponds to allergy.DateAdverseReaction."},{"name":"patient","type":"reference","documentation":"Who the sensitivity is for (allergy.PatNum).","target":["Patient"]},{"name":"type","type":"token","documentation":"The underlying mechanism (allergy or intolerance). Determined based on the allergy def allergy type (allergydef.SnomedType)."}]},{"type":"Appointment","interaction":[{"code":"read"},{"code":"search-type"},{"code":"create"},{"code":"update"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"patient","type":"reference","documentation":"The patient on the appointment. Corresponds to appointment.PatNum.","target":["Patient"]},{"name":"location","type":"reference","documentation":"The operatory in which the appointment is scheduled. Corresponds to appointment.Op.","target":["Location"]},{"name":"identifier","type":"string","documentation":"The logical Id of the appointment. This is the same value as appointment.AptNum."},{"name":"practitioner","type":"reference","documentation":"The provider or hygienist on the appointment. Corresponds to appointment.ProvNum or appointment.ProvHyg.","target":["Practitioner"]},{"name":"status","type":"token","documentation":"The status of the appointment. A status of 'booked' corresponds to an appointment.AptStatus of Scheduled or ASAP. A status of 'cancelled' corresponds to an appointment that has been deleted. A status of 'noshow' corresponds to an appointment.AptStatus of Broken'. A status of 'proposed' corresponds to an appointment.AptStatus of Planned. A status of 'pending' corresponds to a an appointment.AptStatus of UnschedList. A status of 'fulfilled' corresponds to an appointment.AptStatus of 'complete'."},{"name":"date","type":"date","documentation":"The start time of the appointment. This corresponds to appointment.AptDateTime."},{"name":"_lastUpdated","type":"date","documentation":"The last time any of the fields in the appointment were modified (this includes fields that are stored in the database and not transferred through FHIR). This corresponds to appointment.DateTStamp."}]},{"type":"Communication","interaction":[{"code":"read"},{"code":"search-type"},{"code":"create"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"sender","type":"reference","documentation":"Message sender.","target":["Patient"]},{"name":"recipient","type":"reference","documentation":"Message recipient.","target":["Patient"]},{"name":"sent","type":"date","documentation":"Message sender."},{"name":"received","type":"date","documentation":"Message sender."},{"name":"identifier","type":"string","documentation":"The logical id of the resource."}]},{"type":"Condition","interaction":[{"code":"read"},{"code":"search-type"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"abatement-date","type":"date","documentation":"Date-related abatements as a dateTime. Equivalent to disease.DateStop."},{"name":"clinical-status","type":"token","documentation":"The clinical status of the condition. Based on disease.ProbStatus."},{"name":"code","type":"token","documentation":"Code for the condition. Uses either diseasedef.SnomedCode, diseasedef.Icd10Code, diseasedef.ICD9Code, or diseasedef.DiseaseName."},{"name":"identifier","type":"string","documentation":"The logical Id of the Condition. Equivalent to disease.DiseaseNum."},{"name":"onset-date","type":"date","documentation":"Date related onsets as a dateTime. Equivalent to disease.DateStart."},{"name":"patient","type":"reference","documentation":"Who has the condition? Equivalent to disease.PatNum."},{"name":"subject","type":"reference","documentation":"Who has the condition? Equivalent to disease.PatNum."}]},{"type":"Location","interaction":[{"code":"read"},{"code":"search-type"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"address","type":"string","documentation":"The physical address of the clinic to which the operatory is assigned. Corresponds to any value in clinic.Address, clinic.Address2, clinic.City, clinic.State, clinic.Zip."},{"name":"address-city","type":"string","documentation":"The city of the clinic to which the operatory is assigned. Corresponds to clinic.City."},{"name":"address-postalcode","type":"string","documentation":"The zip code of the clinic to which the operatory is assigned. Corresponds to clinic.Zip."},{"name":"address-state","type":"string","documentation":"The state of the clinic to which the operatory is assigned. Corresponds to clinic.State."},{"name":"identifier","type":"string","documentation":"The logical Id of the location. This is the same value as operatory.OperatoryNum."},{"name":"name","type":"string","documentation":"The name or abbreviation of the operatory. Corresponds to operatory.OpName or operatory.Abbrev."},{"name":"organization","type":"reference","documentation":"The clinic to which the operatory is assigned. Corresponds to operatory.ClinicNum.","target":["Organization"]},{"name":"status","type":"token","documentation":"The status 'active' corresponds to an operatory that is not hidden. The status 'inactive' corresponds to an operatory that is hidden."}]},{"type":"Media","interaction":[{"code":"read"},{"code":"search-type"},{"code":"create"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"_id","type":"string","documentation":"The name of the document. Corresponds to document.Description."},{"name":"identifier","type":"number","documentation":"The document number. Corresponds to document.DocNum."},{"name":"patient","type":"number","documentation":"The patient to whom the document belongs. Corresponds to document.PatNum."},{"name":"created","type":"date","documentation":"The date the media was created. Corresponds to document.DateCreated."}]},{"type":"Medication","interaction":[{"code":"read"},{"code":"search-type"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"code","type":"token","documentation":"Codes that identify this medication. Corresponds to the name of the medication or the RxCui of the mediciation (medication.MedName or medication.RxCui)."},{"name":"identifier","type":"string","documentation":"The logical Id of the Medication. This is the same value as medication.MedicationNum."}]},{"type":"MedicationStatement","interaction":[{"code":"read"},{"code":"search-type"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"code","type":"token","documentation":"Return statements of this medication code. Equivalent to medicationpat.MedName."},{"name":"effective","type":"date","documentation":"Date when patient was taking (or not taking) the medication. Based on medication.DateStart and medication.DateStop."},{"name":"identifier","type":"string","documentation":"The logical Id of the Medication. This is the same value as medicationpat.MedicationPatNum."},{"name":"medication","type":"reference","documentation":"Return statements of this medication reference. Equivalent to medicationpat.MedicationNum."},{"name":"patient","type":"reference","documentation":"Returns statements for a specific patient. Equivalent to medicationpat.PatNum."},{"name":"status","type":"token","documentation":"Return statements that match the given status. Only 'active' and 'completed' are supported."},{"name":"subject","type":"reference","documentation":"Returns statements for a specific patient. Equivalent to medicationpat.PatNum."}]},{"type":"Organization","interaction":[{"code":"read"},{"code":"search-type"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"address","type":"string","documentation":"The physical or billing address of the clinic or practice. Corresponds to any value in clinic.Address, clinic.Address2, clinic.City, clinic.State, clinic.Zip, clinic.BillingAddress, clinic.BillingAddress2, clinic.BillingCity, clinic.BillingState, clinic.BillingZip."},{"name":"address-city","type":"string","documentation":"The city of the clinic or practice. Corresponds to clinic.City or clinic.BillingCity."},{"name":"address-postalcode","type":"string","documentation":"The zip code of the clinic or practice. Corresponds to clinic.Zip or clinic.BillingZip."},{"name":"address-use","type":"string","documentation":"All addresses are considered 'work' so that is the only value that will return results."},{"name":"identifier","type":"string","documentation":"The logical Id of the clinic or practice. This is the same value as clinic.ClinicNum, however the dental practice can be represented as a Clinic resource with a logical Id of 0."},{"name":"name","type":"string","documentation":"The name of the clinic or practice. Corresponds to clinic.Abbr."},{"name":"partof","type":"reference","documentation":"In this implementation, all clinics are a partof the practice.","target":["Organization"],"chain":["name"]}]},{"type":"Patient","interaction":[{"code":"read"},{"code":"search-type"},{"code":"create"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"active","type":"token","documentation":"Whether a patient is active or not. A value of 'true' corresponds to a patient.PatStatus of Patient. A value of 'false' corresponds to a patient.PatStatus of anything other than Patient."},{"name":"address","type":"string","documentation":"The address of the patient. Corresponds to any value in patient.Address, patient.Address2, patient.City, patient.State, patient.Zip, or patient.Country."},{"name":"address-city","type":"string","documentation":"The patient's city. Corresponds to patient.City."},{"name":"address-postalcode","type":"string","documentation":"The patient's zip code. Corresponds to patient.Zip."},{"name":"address-state","type":"string","documentation":"The patient's state. Corresponds to patient.State."},{"name":"address-country","type":"string","documentation":"The patient's country. Corresponds to patient.Country."},{"name":"birthdatedate","type":"date","documentation":"The patient's birthdate. This corresponds to patient.Birthdate."},{"name":"careProvider","type":"reference","documentation":"The patient's primary provider. Corresponds to patient.PriProv.","target":["Practitioner"]},{"name":"deathdate","type":"date","documentation":"The date time the patient passed away. This corresponds to patient.DateTimeDeceased."},{"name":"deceased","type":"token","documentation":"Whether a patient deceased or not. A value of 'true' corresponds to a patient.PatStatus of Deceased or a value is entered in patient.DateTimeDeceased. A value of 'false' corresponds to a patient.PatStatus of anything other than Deceased and no value is entered in papatient.DateTimeDeceased."},{"name":"email","type":"string","documentation":"The patient's email. Corresponds to patient.Email."},{"name":"family","type":"string","documentation":"The patient's family (last) name. Corresponds to patient.LName."},{"name":"gender","type":"token","documentation":"The patient's gender. Corresponds to patient.Gender. The genders 'other' and 'unknown' correponds to Unknown in Open Dental."},{"name":"given","type":"string","documentation":"The patient's given (first or middle) name. Corresponds to patient.FName or patient.MiddleI."},{"name":"identifier","type":"token","documentation":"This can match either the business id of the patient or the patient's Social Security Number. This corresponds to patient.PatNum or patient.SSN. If intending to search for the SSN, the token's system should be 'http://hl7.org/fhir/sid/us-ssn'."},{"name":"language","type":"string","documentation":"The patient's primary language. A two- or three-letter ISO langauge tag is accepted. Because Open Dental only stores a patient's langauge and not their language region, searches for en-US, en-UK, or en-CA will match all patients whose language is English."},{"name":"name","type":"string","documentation":"The patient's name. Corresponds to a portion of patient.FName, patient.MiddleI, or patient.LName."},{"name":"organization","type":"reference","documentation":"The clinic to which the patient is assigned. Corresponds to patient.ClinicNum.","target":["Organization"]},{"name":"phone","type":"string","documentation":"A patient's phone number. Corresponds to patient.HmPhone, patient.WkPhone, or patient.WirelessPhone."},{"name":"telecom","type":"string","documentation":"A patient's phone number or email. Corresponds to patient.HmPhone, patient.WkPhone, patient.WirelessPhone, or patient.Email."},{"name":"_lastUpdated","type":"date","documentation":"The last time any of the fields in for the patient were modified (this includes fields that are stored in the database and not transferred through FHIR). This corresponds to patient.DateTStamp."},{"name":"includePhoto","type":"token","documentation":"Custom search parameter. To reduce bandwidth, the Patient.photo element is excluded by default. To have the photo included, this parameter must be included with a value of 'true'."},{"name":"phoneNumberMatch","type":"string","documentation":"Custom search parameter. This parameter can be used to search for patients whose phone number is a partial match. Any non-digit characters are ignored both in the parameter value and in the database value."}]},{"type":"Practitioner","interaction":[{"code":"read"},{"code":"search-type"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"family","type":"string","documentation":"The practitioner's family (last) name. Corresponds to provider.LName."},{"name":"given","type":"string","documentation":"The practitioner's given (first or middle) name. Corresponds to provider.FName or provider.MI."},{"name":"identifier","type":"string","documentation":"The logical id of the practitioner. This is the same value as provider.ProvNum."},{"name":"name","type":"string","documentation":"The practitioner's name. Corresponds to a portion of provider.FName, provider.MI, or patient.provider."},{"name":"role","type":"token","documentation":"The provider's role in the practice. The parameter values supported are 'provider' and hygienist'. The former corresponds to provider.IsSecondary=0 and the latter corresponds to provider.IsSecondary=1."},{"name":"specialty","type":"string","documentation":"The provider's specialty. These parameter values are the values set up within Open Dental as provider specialties."}]},{"type":"Procedure","interaction":[{"code":"read"},{"code":"search-type"},{"code":"create"},{"code":"update"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"code","type":"token","documentation":"The code of the procedure. Corresponds to procedurecode.ProcCode."},{"name":"patient","type":"reference","documentation":"The patient's reference. Corresponds to procedurelog.PatNum."},{"name":"date","type":"date","documentation":"The date this procedure occurred. Corresponds to procedurelog.ProcDate."},{"name":"identifier","type":"number","documentation":"The id of the procedure. Corresponds to procedurelog.ProcNum."},{"name":"performer","type":"reference","documentation":"The performer for the procedure. Must be a practitioner. Corresponds to procedurelog.ProvNum."},{"name":"location","type":"reference","documentation":"The location for the procedure. Corresponds to procedurelog.ClinicNum."}]},{"type":"ServiceRequest","interaction":[{"code":"read"},{"code":"search-type"},{"code":"create"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"code","type":"token","documentation":"The code of the service request. Corresponds to procedurecode.ProcCode."},{"name":"patient","type":"reference","documentation":"The patient's reference. Corresponds to procedurelog.PatNum."},{"name":"occurrence","type":"date","documentation":"The date this service request will occur. Corresponds to procedurelog.ProcDate."},{"name":"identifier","type":"number","documentation":"The id of the service request. Corresponds to procedurelog.ProcNum."},{"name":"performer","type":"reference","documentation":"The performer for the service request. Must be a practitioner. Corresponds to procedurelog.ProvNum."}]},{"type":"Schedule","interaction":[{"code":"read"},{"code":"search-type"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"actor","type":"reference","documentation":"The actor on the Schedule.","target":["Location","Practitioner"]},{"name":"date","type":"date","documentation":"The date of the schedule. Unless an identifier parameter is included, the dates being searched must be a finite date range."},{"name":"identifier","type":"string","documentation":"The logical id of the practitioner."}]},{"type":"Slot","interaction":[{"code":"read"},{"code":"search-type"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"status","type":"token","documentation":"The free/busy status of the appointment. The code system must be http://hl7.org/fhir/slotstatus."},{"name":"identifier","type":"string","documentation":"A Slot Identifier. The logical id of the Slot. A parameter of either 'identifier' or 'schedule' must be included."},{"name":"schedule","type":"reference","documentation":"The Schedule Resource that we are seeking a slot within. A parameter of either 'identifier' or 'schedule' must be included.","target":["Schedule"]},{"name":"start","type":"date","documentation":"The start time of the slot."}]},{"type":"Subscription","interaction":[{"code":"read"},{"code":"create"},{"code":"update"},{"code":"delete"},{"code":"search-type"}],"versioning":"no-version","readHistory":false,"updateCreate":false,"conditionalCreate":false,"conditionalUpdate":false,"conditionalDelete":"not-supported","searchParam":[{"name":"contact","type":"string","documentation":"The value for a contact field for the Subscription."},{"name":"criteria","type":"string","documentation":"Rule for server push criteria."},{"name":"payload","type":"string","documentation":"\tMimetype to send, or blank for no payload."},{"name":"status","type":"token","documentation":"The status of the Subscription. System must be http://hl7.org/fhir/ValueSet/subscription-status"},{"name":"type","type":"token","documentation":"The type of the Subscription channel. System must be http://hl7.org/fhir/ValueSet/subscription-channel-type"},{"name":"url","type":"uri","documentation":"The endpoint of the Subscription channel."},{"name":"identifier","type":"string","documentation":"The logical id of the practitioner."}]}],"interaction":[{"code":"search-system"}],"searchParam":[{"name":"_id","type":"string","documentation":"The logical id of the resource."}]}]},"search":{"mode":"match","score":1.0}}]}