<!--
{
  "availability" : [
    "watchOS: 5.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreMotion",
  "identifier" : "/documentation/CoreMotion/CMMovementDisorderManager",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Core Motion"
    ],
    "preciseIdentifier" : "c:objc(cs)CMMovementDisorderManager"
  },
  "title" : "CMMovementDisorderManager"
}
-->

# CMMovementDisorderManager

A manager for recording and querying movement disorder data.

```
class CMMovementDisorderManager
```

## Overview> Important:
> Only collect data from patients clinically diagnosed with a movement disorder. This API is not designed to collect data from users who have not been diagnosed with a movement disorder. All medical decisions should be made through the guidance of a licensed clinician. For more information, see <doc://com.apple.coremotion/documentation/CoreMotion/adhering-to-the-movement-disorder-data-collection-requirements>.

Use `CMMovementDisorderManager` to measure a resting Parkinsonian tremor in the 3-7 Hz range and choreiform dyskinetic symptoms. When collecting data, the user should wear Apple Watch on their most affected arm.

`CMMovementDisorderManager` requires an entitlement from Apple. To apply for the entitlement, see [Movement Disorder Entitlement Request](https://developer.apple.com/contact/request/movement-disorder-api-entitlement/).

> Important:
> To use this API, you must include the <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSMotionUsageDescription> key in your app’s `Info.plist` file and provide a usage description string for this key. The usage description appears in the prompt that the user must accept the first time the system asks the user to access motion data for your app. If you don’t include a usage description string, your app crashes when you call this API.

## Topics

### Checking Availablility

[`class func isAvailable() -> Bool`](/documentation/CoreMotion/CMMovementDisorderManager/isAvailable())

A Boolean value indicating whether the current device supports the movement disorder manager.

[`class func authorizationStatus() -> CMAuthorizationStatus`](/documentation/CoreMotion/CMMovementDisorderManager/authorizationStatus())

A value indicating whether the user has authorized the app to monitor and query for movement disorder data.

[`class func version() -> String?`](/documentation/CoreMotion/CMMovementDisorderManager/version())

Returns a string that describes the movement disorder algorithm’s current version.

### Recording Movement Disorders

[`func monitorKinesias(forDuration: TimeInterval)`](/documentation/CoreMotion/CMMovementDisorderManager/monitorKinesias(forDuration:))

Calculate and store tremor and dyskinetic symptom results for the duration of the specified time interval.

[`func monitorKinesiasExpirationDate() -> Date?`](/documentation/CoreMotion/CMMovementDisorderManager/monitorKinesiasExpirationDate())

Returns the expiration date for the most recent monitoring period.

### Querying for Movement Disorders

[`func queryTremor(from: Date, to: Date, withHandler: CMTremorResultHandler)`](/documentation/CoreMotion/CMMovementDisorderManager/queryTremor(from:to:withHandler:))

Query for tremor results from the provided time interval.

[`typealias CMTremorResultHandler`](/documentation/CoreMotion/CMTremorResultHandler)

A completion handler for accessing and processing tremor results.

[`func queryDyskineticSymptom(from: Date, to: Date, withHandler: CMDyskineticSymptomResultHandler)`](/documentation/CoreMotion/CMMovementDisorderManager/queryDyskineticSymptom(from:to:withHandler:))

Query for dyskinetic symptoms from the provided time interval.

[`typealias CMDyskineticSymptomResultHandler`](/documentation/CoreMotion/CMDyskineticSymptomResultHandler)

A completion handler for processing dyskinetic symptom results.

[`func lastProcessedDate() -> Date?`](/documentation/CoreMotion/CMMovementDisorderManager/lastProcessedDate())

Returns the date of the most recently calculated results.

## Relationships

### Conforms To

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`Equatable`](/documentation/Swift/Equatable)

[`Hashable`](/documentation/Swift/Hashable)

[`CVarArg`](/documentation/Swift/CVarArg)

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)