UNPKG

@mecatoncheir/gaf

Version:

GAF (Global Assessment of Functioning) scale implementation for psychiatric assessment - Limited version with 12 sample episodes

83 lines (74 loc) 2.35 kB
// index.js (メインエントリーポイント) const { GAFCalculatorLimited } = require('./lib/gaf-calculator-limited'); const { GAFEpisodeSelector } = require('./lib/episode-selector'); const { sampleEpisodes } = require('./data/sample-episodes'); class MecatoncheirGAF { constructor(options = {}) { this.calculator = new GAFCalculatorLimited(); this.episodeSelector = new GAFEpisodeSelector(options.episodes); this.version = "1.0.0-limited"; } /** * 利用可能なエピソード一覧取得 * @returns {Array} エピソード表示用データ */ getAvailableEpisodes() { return this.episodeSelector.getEpisodesForDisplay(); } /** * 階層別エピソード取得 * @param {string} tier - 階層名 * @returns {Array} 該当エピソード */ getEpisodesByTier(tier) { return this.episodeSelector.getEpisodesByTier(tier); } /** * エピソード詳細表示 * @param {string} episodeId - エピソードID * @returns {Object} 詳細情報 */ displayEpisode(episodeId) { const episode = this.episodeSelector.getEpisodeById(episodeId); if (!episode) { return { error: 'エピソードが見つかりません' }; } return { id: episode.id, tier: episode.tier, type: episode.type === 'symptoms' ? '症状' : '機能', title: episode.title, description: episode.description, baseScore: episode.baseScore, severity: episode.severity, adjustment: episode.tierAdjustment.adjustmentValue, adjustmentReason: episode.tierAdjustment.position }; } /** * GAF計算実行(制限版: 1エピソード) * @param {string} episodeId - 選択エピソードID * @returns {Object} 計算結果 */ calculateGAF(episodeId) { const episode = this.episodeSelector.getEpisodeById(episodeId); if (!episode) { throw new Error('指定されたエピソードが見つかりません'); } return this.calculator.calculateSingleEpisodeScore(episode); } /** * アップグレード情報取得 * @returns {Object} アップグレード案内 */ getUpgradeInfo() { return this.calculator.getUpgradeInfo(); } } // デモ用エクスポート module.exports = { MecatoncheirGAF, GAFCalculatorLimited, GAFEpisodeSelector, sampleEpisodes };