{"_id":"@alliancemetric/sdk","name":"@alliancemetric/sdk","dist-tags":{"latest":"2.0.0"},"versions":{"2.0.0":{"name":"@alliancemetric/sdk","version":"2.0.0","description":"Official TypeScript/JavaScript SDK for the Alliance Metrics API - PCOMS outcome measurement for mental health professionals","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts --clean","dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src/","typecheck":"tsc --noEmit","test":"vitest","prepublishOnly":"npm run build"},"keywords":["alliancemetric","alliance-metric","pcoms","ors","srs","phq9","gad7","outcome-measurement","mental-health","therapy","feedback-informed-treatment","fit","etr","expected-treatment-response","clinical-outcomes","api","sdk"],"author":{"name":"Alliance Metrics","email":"support@alliancemetric.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Mindspirit-LLC/alliancemetric-sdk.git"},"homepage":"https://docs.alliancemetric.com","bugs":{"url":"https://github.com/Mindspirit-LLC/alliancemetric-sdk/issues"},"devDependencies":{"@eslint/js":"^9.15.0","@types/node":"^22.0.0","eslint":"^9.15.0","tsup":"^8.3.0","typescript":"^5.6.0","typescript-eslint":"^8.15.0","vitest":"^3.0.0"},"engines":{"node":">=18.0.0"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_id":"@alliancemetric/sdk@2.0.0","gitHead":"69591ec44b20b0a08e60a96389a943909d97fdb3","_nodeVersion":"23.11.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-/pL1/LxQn3ltoBqMj6DIXjHmQaJ/roJ2PYPWNgZWBMWrfKH9e2UsjQpm0V6bUuC0pPX4KJHMF4sUZo7FfvE1rg==","shasum":"d1366d97105a55dc755e4ae8f5e54224b62474e1","tarball":"https://registry.npmjs.org/@alliancemetric/sdk/-/sdk-2.0.0.tgz","fileCount":6,"unpackedSize":148622,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCy0IDohryoula3zJQKUqMVuRWTpajg970emqfg43JocgIhAMoIskwQTwXsmCJKBgmlBsCucmFf8/EeDE3Hp0iFjzfW"}]},"_npmUser":{"name":"cto-ms","email":"cto@alliancemetric.com"},"directories":{},"maintainers":[{"name":"cto-ms","email":"cto@alliancemetric.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_2.0.0_1770342078327_0.3276526938021185"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-06T01:41:18.189Z","2.0.0":"2026-02-06T01:41:18.481Z","modified":"2026-02-06T01:41:18.776Z"},"maintainers":[{"name":"cto-ms","email":"cto@alliancemetric.com"}],"description":"Official TypeScript/JavaScript SDK for the Alliance Metrics API - PCOMS outcome measurement for mental health professionals","homepage":"https://docs.alliancemetric.com","keywords":["alliancemetric","alliance-metric","pcoms","ors","srs","phq9","gad7","outcome-measurement","mental-health","therapy","feedback-informed-treatment","fit","etr","expected-treatment-response","clinical-outcomes","api","sdk"],"repository":{"type":"git","url":"git+https://github.com/Mindspirit-LLC/alliancemetric-sdk.git"},"author":{"name":"Alliance Metrics","email":"support@alliancemetric.com"},"bugs":{"url":"https://github.com/Mindspirit-LLC/alliancemetric-sdk/issues"},"license":"MIT","readme":"# Alliance Metrics SDK\r\n\r\nOfficial TypeScript/JavaScript SDK for the [Alliance Metrics API](https://api.alliancemetric.com).\r\n\r\nSubmit and analyze PCOMS (Partners for Change Outcome Management System) assessments including ORS, SRS, PHQ-9, and GAD-7 with built-in Expected Treatment Response (ETR) calculations.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @alliancemetric/sdk\r\n# or\r\nyarn add @alliancemetric/sdk\r\n# or\r\npnpm add @alliancemetric/sdk\r\n```\r\n\r\n## Quick Start\r\n\r\n```typescript\r\nimport { AllianceMetric } from '@alliancemetric/sdk';\r\n\r\nconst client = new AllianceMetric({\r\n  apiKey: 'your-api-key', // Get from https://dashboard.alliancemetric.com\r\n});\r\n\r\n// Submit an ORS assessment\r\nconst result = await client.assessments.submitOrs({\r\n  clientId: 'client-123',\r\n  sessionNumber: 1,\r\n  ageGroup: 'adult',\r\n  scores: {\r\n    individual: 5.5,\r\n    interpersonal: 6.0,\r\n    social: 4.5,\r\n    overall: 5.0,\r\n  },\r\n});\r\n\r\nconsole.log(`Total Score: ${result.data.totalScore}`);\r\nconsole.log(`Status: ${result.data.interpretation.status}`);\r\n```\r\n\r\n## Features\r\n\r\n- **Full TypeScript Support**: Comprehensive type definitions for all API operations\r\n- **All Assessment Types**: ORS, SRS, PHQ-9, GAD-7\r\n- **ETR Calculations**: Built-in Expected Treatment Response trajectory analysis\r\n- **Client Management**: Track clients and their assessment history\r\n- **Automatic Retries**: Configurable retry logic with exponential backoff\r\n- **Error Handling**: Typed error classes for different error scenarios\r\n\r\n## API Reference\r\n\r\n### Configuration\r\n\r\n```typescript\r\nconst client = new AllianceMetric({\r\n  apiKey: 'your-api-key',      // Required\r\n  baseUrl: 'https://api.alliancemetric.com', // Optional\r\n  timeout: 30000,               // Optional: Request timeout in ms\r\n  retries: 3,                   // Optional: Number of retry attempts\r\n});\r\n```\r\n\r\n### Assessments\r\n\r\n#### Submit ORS (Outcome Rating Scale)\r\n\r\n```typescript\r\nconst result = await client.assessments.submitOrs({\r\n  clientId: 'client-123',\r\n  sessionNumber: 1,\r\n  ageGroup: 'adult', // 'adult' | 'adolescent' | 'child'\r\n  scores: {\r\n    individual: 5.5,      // 0-10\r\n    interpersonal: 6.0,   // 0-10\r\n    social: 4.5,          // 0-10\r\n    overall: 5.0,         // 0-10\r\n  },\r\n  clinicianId: 'therapist-001', // Optional\r\n  sessionDate: '2024-01-15',    // Optional\r\n});\r\n\r\n// Response includes:\r\n// - totalScore: Combined score (0-40)\r\n// - interpretation: Clinical status and recommendations\r\n// - change: Change from intake if applicable\r\n// - creditsUsed/remainingCredits\r\n```\r\n\r\n#### Submit SRS (Session Rating Scale)\r\n\r\n```typescript\r\nconst result = await client.assessments.submitSrs({\r\n  clientId: 'client-123',\r\n  sessionNumber: 1,\r\n  scores: {\r\n    relationship: 9.0,     // 0-10\r\n    goalsTopics: 8.5,      // 0-10\r\n    approachMethod: 9.0,   // 0-10\r\n    overall: 9.5,          // 0-10\r\n  },\r\n});\r\n\r\n// Response includes alliance status and flagged items\r\n```\r\n\r\n#### Submit PHQ-9 (Depression Screening)\r\n\r\n```typescript\r\nconst result = await client.assessments.submitPhq9({\r\n  clientId: 'client-123',\r\n  sessionNumber: 1,\r\n  scores: {\r\n    item1: 2, item2: 1, item3: 2, item4: 1,\r\n    item5: 1, item6: 2, item7: 1, item8: 0,\r\n    item9: 0, // Suicidal ideation - triggers alert if > 0\r\n  },\r\n});\r\n\r\n// Response includes severity level and suicidal ideation alerts\r\n```\r\n\r\n#### Submit GAD-7 (Anxiety Screening)\r\n\r\n```typescript\r\nconst result = await client.assessments.submitGad7({\r\n  clientId: 'client-123',\r\n  sessionNumber: 1,\r\n  scores: {\r\n    item1: 2, item2: 1, item3: 2, item4: 1,\r\n    item5: 0, item6: 1, item7: 1,\r\n  },\r\n});\r\n\r\n// Response includes anxiety severity level\r\n```\r\n\r\n#### Calculate ETR (Expected Treatment Response)\r\n\r\nETR calculations use proprietary algorithms performed server-side. The SDK returns trajectory predictions without exposing algorithm internals.\r\n\r\n```typescript\r\nconst result = await client.assessments.calculateEtr({\r\n  intakeScore: 18.5,\r\n  ageGroup: 'adult',\r\n  sessions: 12, // Optional, defaults to 12\r\n});\r\n\r\n// Returns expected score trajectory for treatment planning\r\n```\r\n\r\n#### Calculate Progress\r\n\r\n```typescript\r\nconst result = await client.assessments.calculateProgress({\r\n  ageGroup: 'adult',\r\n  scores: [\r\n    { score: 18.5, date: '2024-01-15' },\r\n    { score: 22.0, date: '2024-01-22' },\r\n    { score: 25.5, date: '2024-01-29' },\r\n  ],\r\n});\r\n\r\n// Returns comprehensive progress analysis including:\r\n// - Reliable Change indicator\r\n// - Clinically Significant Change\r\n// - ETR comparison\r\n// - Validity indicators (sawtooth, ceiling effects)\r\n```\r\n\r\n#### Batch Submit\r\n\r\n```typescript\r\nconst result = await client.assessments.submitBatch({\r\n  assessments: [\r\n    {\r\n      type: 'ors',\r\n      clientId: 'client-123',\r\n      sessionNumber: 1,\r\n      ageGroup: 'adult',\r\n      scores: { individual: 5, interpersonal: 6, social: 5, overall: 5 },\r\n    },\r\n    {\r\n      type: 'srs',\r\n      clientId: 'client-123',\r\n      sessionNumber: 1,\r\n      scores: { relationship: 9, goalsTopics: 8, approachMethod: 9, overall: 9 },\r\n    },\r\n  ],\r\n});\r\n```\r\n\r\n### Clients\r\n\r\n```typescript\r\n// List clients\r\nconst clients = await client.clients.list({\r\n  page: 1,\r\n  limit: 20,\r\n  status: 'active',\r\n  sortBy: 'lastSession',\r\n});\r\n\r\n// Get client details\r\nconst detail = await client.clients.get('client-123');\r\n\r\n// Get treatment trajectory\r\nconst trajectory = await client.clients.getTrajectory('client-123');\r\n\r\n// Get comprehensive report\r\nconst report = await client.clients.getReport('client-123');\r\n\r\n// Get assessment history\r\nconst orsHistory = await client.clients.getOrsHistory('client-123');\r\nconst srsHistory = await client.clients.getSrsHistory('client-123');\r\nconst phq9History = await client.clients.getPhq9History('client-123');\r\nconst gad7History = await client.clients.getGad7History('client-123');\r\n```\r\n\r\n### Account\r\n\r\n```typescript\r\n// Get account info\r\nconst account = await client.account.get();\r\n\r\n// Check credit balance\r\nconst balance = await client.account.getBalance();\r\n\r\n// Get usage statistics\r\nconst usage = await client.account.getUsage({\r\n  startDate: '2024-01-01',\r\n  endDate: '2024-01-31',\r\n});\r\n\r\n// Manage webhooks\r\nconst webhooks = await client.account.listWebhooks();\r\nawait client.account.createWebhook({\r\n  url: 'https://your-app.com/webhooks',\r\n  events: ['assessment.submitted', 'alert.created'],\r\n});\r\n```\r\n\r\n### API Keys\r\n\r\n```typescript\r\n// List keys\r\nconst keys = await client.apiKeys.list();\r\n\r\n// Create a new key (store the returned key securely!)\r\nconst newKey = await client.apiKeys.create({\r\n  name: 'Production Integration',\r\n  permissions: ['assessments:write', 'clients:read'],\r\n});\r\n\r\n// Rotate a key\r\nconst rotatedKey = await client.apiKeys.rotate('old-key-id', {\r\n  name: 'Rotated Production Key',\r\n});\r\n```\r\n\r\n## Error Handling\r\n\r\nThe SDK provides typed error classes for different scenarios:\r\n\r\n```typescript\r\nimport {\r\n  AllianceMetric,\r\n  AuthenticationError,\r\n  ValidationError,\r\n  InsufficientCreditsError,\r\n  RateLimitError,\r\n} from '@alliancemetric/sdk';\r\n\r\ntry {\r\n  await client.assessments.submitOrs({ ... });\r\n} catch (error) {\r\n  if (error instanceof AuthenticationError) {\r\n    console.error('Invalid API key');\r\n  } else if (error instanceof ValidationError) {\r\n    console.error('Invalid data:', error.errors);\r\n  } else if (error instanceof InsufficientCreditsError) {\r\n    console.error(`Need ${error.required} credits, have ${error.available}`);\r\n  } else if (error instanceof RateLimitError) {\r\n    console.error(`Rate limited. Retry after ${error.retryAfter}s`);\r\n  }\r\n}\r\n```\r\n\r\n## Clinical Reference\r\n\r\n### ORS Clinical Cutoffs\r\n\r\n| Age Group   | Clinical Cutoff | Interpretation                        |\r\n| ----------- | --------------- | ------------------------------------- |\r\n| Adult       | 25.0            | ≥25 = Functional, <25 = Clinical      |\r\n| Adolescent  | 28.0            | ≥28 = Functional, <28 = Clinical      |\r\n| Child       | 28.0            | ≥28 = Functional, <28 = Clinical      |\r\n\r\n### Reliable Change Index\r\n\r\n- **ORS**: 6.0 points (applies to all age groups)\r\n\r\n### SRS Alliance Cutoff\r\n\r\n- Score < 36 indicates potential alliance concern\r\n\r\n### PHQ-9 Severity Levels\r\n\r\n| Score | Severity          |\r\n| ----- | ----------------- |\r\n| 0-4   | Minimal           |\r\n| 5-9   | Mild              |\r\n| 10-14 | Moderate          |\r\n| 15-19 | Moderately Severe |\r\n| 20-27 | Severe            |\r\n\r\n### GAD-7 Severity Levels\r\n\r\n| Score | Severity |\r\n| ----- | -------- |\r\n| 0-4   | Minimal  |\r\n| 5-9   | Mild     |\r\n| 10-14 | Moderate |\r\n| 15-21 | Severe   |\r\n\r\n## Support\r\n\r\n- **Documentation**: [docs.alliancemetric.com](https://docs.alliancemetric.com)\r\n- **Dashboard**: [dashboard.alliancemetric.com](https://dashboard.alliancemetric.com)\r\n- **Email**: support@alliancemetric.com\r\n- **Issues**: [GitHub Issues](https://github.com/Mindspirit-LLC/alliancemetric-sdk/issues)\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md","_rev":"1-1bbb05df1c2e5bd72653e87d2bd2cc4f"}