{"version":3,"file":"variant-mgend.js","sources":["../../../opt/togovar/app/stanza/stanzas/variant-mgend/index.js"],"sourcesContent":["import Stanza from \"togostanza/stanza\";\n\nimport { CLINICAL_SIGNIFICANCE } from \"@/lib/constants\";\nimport { rowSpanize } from \"@/lib/table\";\n\nexport default class VariantMGeND extends Stanza {\n async render() {\n this.importWebFontCSS(\"https://fonts.googleapis.com/css?family=Roboto+Condensed:300,400,700,900\");\n\n const { \"data-url\": dataURL, tgv_id } = this.params;\n\n try {\n const response = await fetch(dataURL, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n query: { id: [tgv_id] }\n })\n });\n\n // レスポンスのステータスをチェックし、問題があればエラーをスロー\n if (!response.ok) {\n throw new Error(`${dataURL} returned status ${response.status}`);\n }\n\n const jsonData = await response.json();\n\n this.renderTemplate({\n template: \"stanza.html.hbs\",\n parameters: {\n params: this.params,\n result: extractConditions(jsonData)\n }\n });\n } catch (error) {\n console.error(error)\n this.renderTemplate({\n template: \"stanza.html.hbs\",\n parameters: {\n params: this.params\n }\n });\n }\n\n // テーブルのセルを結合\n rowSpanize(this.root.querySelector(\"#target\"));\n\n // データのバインディングを整形\n function extractConditions(data) {\n const results = [];\n\n data.data.forEach(item => {\n const significance = item.significance;\n\n significance.forEach(entry => {\n if (entry.source === \"mgend\") {\n if (entry.conditions.length === 0) {\n results.push({\n title: item.external_link.mgend[0].title,\n xref: item.external_link.mgend[0].xref,\n conditionHtml: \"others\",\n name: \"others\",\n medgen: \"others\",\n interpretation_class: entry.interpretations[0],\n interpretation: getPropertyNameByKey(entry.interpretations[0]),\n });\n\n } else {\n entry.conditions.forEach(condition => {\n let conditionHtml;\n if (condition.medgen && condition.name) {\n conditionHtml = `${condition.name}`;\n } else if (condition.name) {\n conditionHtml = condition.name;\n } else {\n conditionHtml = \"others\";\n }\n results.push({\n title: item.external_link.mgend[0].title,\n xref: item.external_link.mgend[0].xref,\n conditionHtml: conditionHtml,\n name: condition.name || \"others\",\n medgen: condition.medgen,\n interpretation_class: entry.interpretations[0],\n interpretation: getPropertyNameByKey(entry.interpretations[0]),\n });\n });\n }\n }\n });\n });\n\n return sortAndGroupByInterpretationClass(results);\n }\n\n function getPropertyNameByKey(key) {\n const entry = Object.entries(CLINICAL_SIGNIFICANCE).find(\n ([, value]) => value.key === key\n );\n return entry ? entry[0] : null; // プロパティ名(キー名)を返す\n }\n\n function sortAndGroupByInterpretationClass(results) {\n // グループ化\n const grouped = results.reduce((acc, item) => {\n const key = item.interpretation_class;\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(item);\n return acc;\n }, {});\n\n // 各グループを大文字・小文字で並び替え\n Object.keys(grouped).forEach(key => {\n grouped[key] = grouped[key]\n .sort((a, b) => {\n const nameA = a.name;\n const nameB = b.name;\n return nameA.localeCompare(nameB, undefined, { sensitivity: \"base\" });\n })\n .filter((item, index, array) => {\n return !item.medgen || array.findIndex(i => i.medgen === item.medgen) === index;\n });\n });\n\n // グループ化を解除して並び替えたデータを平坦化\n return Object.values(grouped).flat();\n }\n }\n}\n"],"names":[],"mappings":"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"}