:::spoiler API 清單 [TOC] ::: # 智慧餐盤 ## 常數定義 ### 食物分類 欄位 | 型態 | 說明 ---|---|--- category | string | WHOLE_GRAINS: 全榖雜糧, LEGUME_FISH_MEAT_EGG: 豆魚肉蛋, DAIRY: 乳製品, VEGETABLES: 蔬菜, FRUITS: 水果, OILS_AND_NUTS: 食用油與堅果, DRINK: 飲料, OTHER: 其他 ### 食物類型-LEGUME_FISH_MEAT_EGG 欄位 | 型態 | 說明 ---|---|--- type | string | LOW_FAT: 低脂, MEDIUM_FAT: 中脂, HIGH_FAT: 高脂, VERY_HIGH_FAT: 超高脂 ### 食物類型-DAIRY 欄位 | 型態 | 說明 ---|---|--- type | string | LOW_FAT: 低脂, WHOLE_FAT: 全脂, SKIM: 脫脂 ### 食物類型-VEGETABLES 欄位 | 型態 | 說明 ---|---|--- type | string | RAW: 生, COOKED: 熟 ### 食物類型-OILS_AND_NUTS 欄位 | 型態 | 說明 ---|---|--- type | string | OIL: 食用油, NUT: 堅果 ### 食物類型-DRINK 欄位 | 型態 | 說明 ---|---|--- type | string | WATER: 水, FULL_SUGAR: 全糖, LESS_SUGAR: 少糖, HALF_SUGAR: 半糖, QUARTER_SUGAR: 微糖, SUGAR_FREE: 無糖 ### 用餐時段 欄位 | 型態 | 說明 ---|---|--- timePeriod | int | ALL: -1(查詢用), 早上: 1, 中午: 2, 晚上: 3, 睡前: 4 ### 用餐餐別 欄位 | 型態 | 說明 ---|---|--- timePeriodType | int | ALL: -1(查詢用), <br/> **早上**<br/> 早餐: 10, 早午餐: 11, 運動前一小時: 12, 運動前兩小時: 13, 運動後一小時: 14, 運動後兩小時: 15, <br/> **中午**<br/> 午餐: 20, 下午茶: 21, 運動前一小時: 22, 運動前兩小時: 23, 運動後一小時: 24, 運動後兩小時: 25, <br/> **晚上**<br/> 晚餐: 30, 點心: 31, 運動前一小時: 32, 運動前兩小時: 33, 運動後一小時: 34, 運動後兩小時: 35 <br/> **睡前**<br/> 40:宵夜, 運動前一小時: 42, 運動前兩小時: 43, 運動後一小時: 44, 運動後兩小時: 45 ### 烹調方式 欄位 | 型態 | 說明 ---|---|--- type | string | FAT_FREE: 無油, FRY: 非油炸, FRIED: 油炸 ### 額外加糖 欄位 | 型態 | 說明 ---|---|--- type | string | NONE: 無添加, WITH_SUGAR: 加糖 ### 餐盤狀態 欄位 | 型態 | 說明 ---|---|--- status | string | DRAFT: 草稿, PUBLISHED: 已發布 ### 飲食記錄方式 欄位 | 型態 | 說明 ---|---|--- diaryRecordType | string | DIET_PLAN: 我的餐盤, FOOD_DB: 食品資料庫 ### 飲食分數查詢區間類別 欄位 | 型態 | 說明 ---|---|--- scorePeriod | string | DAILY: 日, WEEKLY: 週, MONTHLY: 月 ## API ### 取得六大營養素資訊[APP/WEB] ```url GET /diet-plan/getIngredientsInfo ``` 取得六大營養素的類別/分類/熱量 #### Request #### Response 欄位 | 型態 | 說明 --- | --- | --- category | string | 食物分類, 請參閱[食物分類](#食物分類) types | json array | 在食物分類下的所有類型食材 cookedTypes | json array | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型 addedSugars | json array | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項 ##### Response-types 欄位 | 型態 | 說明 --- | --- | --- id | string | 食材id description | string | 食材描述 type | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG) simpleUnit | string | 簡易份量單位 calorie | double | 每份量的熱量 protein | double | 每份量的蛋白質重量(g) sugar | double | 每份量的糖重量(g) fat | double | 每份量的脂肪重量(g) protein_cal | double | 每份量的蛋白質熱量 sugar_cal | double | 每份量的糖熱量 fat_cal | double | 每份量的脂肪熱量 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50 ##### Response-cookedTypes/addedSugars 欄位 | 型態 | 說明 --- | --- | --- id | string | 食材id description | string | 食材描述 type | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG) calorie | double | 每份量的熱量 protein | double | 每份量的蛋白質重量(g) sugar | double | 每份量的糖重量(g) fat | double | 每份量的脂肪重量(g) protein_cal | double | 每份量的蛋白質熱量 sugar_cal | double | 每份量的糖熱量 fat_cal | double | 每份量的脂肪熱量 ```javascript { "httpCode": 200, "result": { "data": [ { "category": "LEGUME_FISH_MEAT_EGG", "types": [ { "id": "5ac5e206-881d-4d0d-b6b7-6ef9c61713b4", "description": "豆魚肉蛋(中脂)", "type": "MEDIUM_FAT", "simpleUnit": "掌心", "simpleUnitTransferCoefficient": 2.0, "protein": 7.0, "fat": 5.0, "calorie": 73.0, "proteinCal": 28.0, "fatCal": 20.0 }... ], "cookedTypes": [ { "id": "01a74fad-3df8-429e-8507-2392969b5585", "description": "烹調方式(無油)", "type": "FAT_FREE", "fat": 0.0, "calorie": 0.0, "fatCal": 0.0 }, ... ], "addedSugars": [] }, ] } } ``` ### 取得我的建議餐盤[APP] ```url GET /diet-plan/getMySuggestPlan ``` 取得我的建議餐盤 #### Request #### Response-取得我的建議餐盤 欄位 | 型態 | 說明 --- | --- | --- id | string | 餐盤id createTime | timestamp | 餐盤建立時間 updateTime | timestamp | 餐盤更新時間 creatorId | string | 餐盤建立者ID, 空值的話代表衛福部預設餐盤 creatorName | string | 餐盤建立者姓名, 空值的話代表衛福部預設餐盤 creatorRole | string | 餐盤建立者腳色, 空值的話代表衛福部預設餐盤 tenantId | string | 餐盤建立者的租戶ID, 空值的話代表衛福部預設餐盤 tenantName | string | 餐盤建立者的租戶名稱, 空值的話代表衛福部預設餐盤 totalCalorie | double | 本餐盤的總熱量 totalProteinCalorie | double | 本餐盤的蛋白質熱量 totalSugarCalorie | double | 本餐盤的醣類熱量 totalFatCalorie | double | 本餐盤的脂肪熱量 timePeriods| json array | 餐盤時段array cookedTypes | json array | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型 addedSugars | json array | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項 ##### Response-timePeriods 欄位 | 型態 | 說明 --- | --- | --- timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段) timePeriodTypes | json array | 用餐餐別 ##### Response-timePeriodTypes 欄位 | 型態 | 說明 --- | --- | --- timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別) totalCalorie | double | 本餐別的總熱量 totalProteinCalorie | double | 本餐別的蛋白質熱量 totalSugarCalorie | double | 本餐別的醣類熱量 totalFatCalorie | double | 本餐別的脂肪熱量 meals | json array | 建議餐點類型與用量 foodCategorys| json array| 建議餐點的熱量和用量根據食物分類統計 ##### Response-meals 欄位 | 型態 | 說明 --- | --- | --- foodCategory | string | 食物分類, 請參閱[食物分類](#食物分類) foodType | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG) cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項 quantity | double | 建議用量(份) simpleUnit | string | 簡易單位 calorie | double | 本餐點的熱量 proteinCalorie | double | 本餐點的蛋白質熱量 sugarCalorie | double | 本餐點的醣類熱量 fatCalorie | double | 本餐點的脂肪熱量 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR/>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50 ##### Response-foodCategorys 欄位 | 型態 | 說明 --- | --- | --- foodCategory | string | 食物分類, 請參閱[食物分類](#食物分類) quantity | double | 建議用量(份) simpleUnit | string | 簡易單位 calorie | double | 本餐點的熱量 proteinCalorie | double | 本餐點的蛋白質熱量 sugarCalorie | double | 本餐點的醣類熱量 fatCalorie | double | 本餐點的脂肪熱量 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR/>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50 ```javascript { "httpCode": 200, "result": { "data": { "id": "6298166e-6dc5-435e-b113-0975d48efdb9", "createTime": 1664122976237, "updateTime": 1664122976237, "creatorId": "7a17be34-13ae-4687-b971-1e5f586c8e3a", "creatorName": "Dr. X", "creatorRole": "腳科醫生", "tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc", "tenantName": "緯緯醫學", "totalCalorie": 324.5, "totalProteinCalorie": 52.0, "totalSugarCalorie": 88.0, "totalFatCalorie": 94.5, "timePeriods": [ { "timePeriod": 1, "timePeriodTypes": [ { "timePeriodType": 10, "totalCalorie": 324.5, "totalProteinCalorie": 52.0, "totalSugarCalorie": 88.0, "totalFatCalorie": 94.5, "meals": [ { "foodCategory": "LEGUME_FISH_MEAT_EGG", "foodType": "MEDIUM_FAT", "quantity": 0.5, "simpleUnit": "掌心", "simpleUnitTransferCoefficient": 2.0, "cookedType": "FRY", "calorie": 36.5, "proteinCalorie": 14.0, "sugarCalorie": 0.0, "fatCalorie": 22.5 },... ], "foodCategorys": [ { "calorie": 45.0, "proteinCal": 0.0, "sugarCal": 0.0, "fatCal": 45.0, "foodCategory": "OILS_AND_NUTS", "quantity": 1.0, "simpleUnit": "茶匙5ml", "simpleUnitTransferCoefficient": 0.333333 }, } ] } ] } } } ``` ### 查詢用戶的餐盤清單[WEB] ```url POST /diet-plan-mgmt/queryDietPlanList ``` 取得用戶的所有建議餐盤 #### Request ##### query (查詢條件json) 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- householdMemberId | string | | | | 要查詢的用戶ID ##### pagination (分頁json) 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- current | int | | 1 | 當前頁數 pageSize | int | | 10 | 每頁結果數量,-1 為顯示所有 ##### sorter (排序json) 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- field | string | | createTime | 排序欄位,可排序欄位有 totalCalories, creatorName, status, updateTime order | string | | desc | 升序或降序 ```javascript { "query": { "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5" } } ``` #### Error httpCode | 錯誤碼 | 說明 --- | --- | --- #### Response 欄位 | 型態 | 說明 --- | --- | --- id | string | 餐盤id createTime | timestamp | 餐盤建立時間 updateTime | timestamp | 餐盤更新時間 creatorId | string | 餐盤建立者ID, 空值的話代表衛福部預設餐盤 creatorName | string | 餐盤建立者姓名, 空值的話代表衛福部預設餐盤 tenantId | string | 餐盤建立者的租戶ID, 空值的話代表衛福部預設餐盤 tenantName | string | 餐盤建立者的租戶名稱, 空值的話代表衛福部預設餐盤 totalCalorie| double | 該餐盤的總建議熱量 status | string | 餐盤狀態, 請參閱[餐盤狀態](#餐盤狀態) ```javascript { "httpCode": 200, "result": { "data": [ { "id": "6298166e-6dc5-435e-b113-0975d48efdb9", "createTime": 1664122976237, "updateTime": 1664122976237, "status": "PUBLISHED", "creatorId": "7a17be34-13ae-4687-b971-1e5f586c8e3a", "creatorName": "Dr. X", "tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc", "tenantName": "緯緯醫學", "totalCalorie": 324.5 }, ... ] } } ``` ### 取得營養診斷資訊[WEB] ```url GET /diet-plan-mgmt/getNutritionalDiagnosisInfo ``` 取得營養診斷資訊 #### Request #### Error httpCode | 錯誤碼 | 說明 --- | --- | --- #### Response 欄位 | 型態 | 說明 --- | --- | --- problemCategoryId | string | 問題分類key problemCategoryI18n | string | 問題分類i18n problemCategoryDescription | string | 問題分類描述 problems | json array | 該問題分類下的所有問題 ##### Response-problems 欄位 | 型態 | 說明 --- | --- | --- problemId | string | 問題key problemI18n | string | 問題i18n problemDescription | string | 問題描述 etiologys | json array | 該問題下的所有危險因子 ##### Response-etiologys 欄位 | 型態 | 說明 --- | --- | --- etiologyId | string | 危險因子key etiologyI18n | string | 危險因子i18n etiologyDescription | string |危險因子描述 ```javascript { "httpCode": 200, "result": { "data": [ { "problemCategoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d", "problemCategoryDescription": "體位", "problems": [ { "problemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207", "problemDescription": "體重過輕", "etiologys": [ { "etiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6", "etiologyDescription": "照顧者或本身對食物及營養相關議題有錯誤認知及態度" }, ... ] } ] } ] } } ``` ### 取得用戶的建議餐盤[WEB] ```url GET /diet-plan-mgmt/dietPlan/info?id={id} ``` #### Request 欄位 | 型態 | 說明 --- | --- | --- id | string | 餐盤ID ```javascript ``` #### Error httpCode | 錯誤碼 | 說明 --- | --- | --- #### Response 欄位 | 型態 | 說明 --- | --- | --- id | string | 餐盤id createTime | timestamp | 餐盤建立時間 updateTime | timestamp | 餐盤更新時間 creatorId | string | 餐盤建立者ID, 空值的話代表衛福部預設餐盤 creatorName | string | 餐盤建立者姓名, 空值的話代表衛福部預設餐盤 creatorRole | string | 餐盤建立者腳色, 空值的話代表衛福部預設餐盤 tenantId | string | 餐盤建立者的租戶ID, 空值的話代表衛福部預設餐盤 tenantName | string | 餐盤建立者的租戶名稱, 空值的話代表衛福部預設餐盤 totalCalorie | double | 本餐盤的總熱量 totalProteinCalorie | double | 本餐盤的蛋白質熱量 totalSugarCalorie | double | 本餐盤的醣類熱量 totalFatCalorie | double | 本餐盤的脂肪熱量 meals| json array | 餐點array nutritionalDiagnosisInfo| json object | 營養診斷資訊 cookedTypes | json array | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型 addedSugars | json array | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項 ##### Response-meals 欄位 | 型態 | 說明 --- | --- | --- timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段) timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別) foodCategory | string | 食物分類, 請參閱[食物分類](#食物分類) foodType | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG) cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項 quantity | double | 建議用量(份) simpleUnit | string | 簡易單位 quantityForSimpleUnit | double | 建議用量(簡易單位) calorie | double | 本餐點的熱量 proteinCalorie | double | 本餐點的蛋白質熱量 sugarCalorie | double | 本餐點的醣類熱量 fatCalorie | double | 本餐點的脂肪熱量 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50 ##### Response-nutritionalDiagnosisInfo 欄位 | 型態 | 說明 --- | --- | --- categoryId | string | 問題分類ID categoryI18n | string | 問題分類i18n categoryDescription | string | 問題分類描述 problemId | string | 問題ID problemI18n | string | 問題i18n problemDescription | string | 問題描述 etiologys | json array | 該問題下的所有危險因子 etiologyId | string | 病因ID etiologyI18n | string | 病因i18n etiologyDescription | string |病因描述 signs| string | 病徵 ```javascript { "httpCode": 200, "result": { "data": { "id": "6298166e-6dc5-435e-b113-0975d48efdb9", "createTime": 1664122976237, "updateTime": 1664122976237, "status": "PUBLISHED", "creatorId": "7a17be34-13ae-4687-b971-1e5f586c8e3a", "creatorName": "Dr. X", "creatorRole": "腳科醫生", "tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc", "tenantName": "緯緯醫學", "totalCalorie": 324.5, "totalProteinCalorie": 52.0, "totalSugarCalorie": 88.0, "totalFatCalorie": 94.5, "meals": [ { "timePeriod": 1, "timePeriodType": 10, "calorie": 36.5, "proteinCal": 14.0, "sugarCal": 0.0, "fatCal": 22.5, "foodCategory": "LEGUME_FISH_MEAT_EGG", "foodType": "MEDIUM_FAT", "quantity": 0.5, "simpleUnit": "掌心", "simpleUnitTransferCoefficient": 2.0, "cookedType": "FRY" }, ... ], "nutritionalDiagnosisInfo": { "categoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d", "categoryDescription": "體位", "problemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207", "problemDescription": "體重過輕", "etiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6", "etiologyDescription": "照顧者或本身對食物及營養相關議題有錯誤認知及態度", "signs": "test diagnosis" } } } } ``` ### 新增用戶的建議餐盤[WEB] ```url POST /diet-plan-mgmt/dietPlan/add ``` #### Request 欄位 | 型態 | 說明 --- | --- | --- householdMemberId | string | 用戶ID status | string | 用戶ID ndCategoryId | string | 營養診斷問題類別ID ndProblemId | string | 營養診斷問題ID ndEtiologyId | string | 營養診斷病因ID ndSigns | string | 營養診斷病徵說明 meals | json array | 餐點array ##### Request-meals 欄位 | 型態 | 說明 --- | --- | --- timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段) timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別) foodCategoryId | string | 食物分類ID, 請參閱[食物分類](#食物分類) cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項 quantity | double | 建議用量(份) ```javascript { "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5", "status": "DRAFT", "ndCategoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d", "ndProblemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207", "ndEtiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6", "ndSigns": "test diagnosis", "meals": [ { "timePeriod": 1, "timePeriodType": 10, "foodCategoryId": "3844d748-c46d-416f-bd0c-e11241d42e47", "quantity": 3, "cookedType": "FRY" } ] } ``` #### Error httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.DIET_PLAN_DRAFT_PLATE_EXIST | 當前存在草稿餐盤 #### Response 欄位 | 型態 | 說明 --- | --- | --- data | int | 新增的餐點數量 ```javascript { "httpCode": 200, "result": { "data": 1 } } ``` ### 更新用戶的建議餐盤[WEB] ```url POST /diet-plan-mgmt/dietPlan/update ``` #### Request 欄位 | 型態 | 說明 --- | --- | --- id | string | 餐盤ID householdMemberId | string | 用戶ID status | string | 用戶ID ndCategoryId | string | 營養診斷問題類別ID ndProblemId | string | 營養診斷問題ID ndEtiologyId | string | 營養診斷病因ID ndSigns | string | 營養診斷病徵說明 meals | json array | 餐點array ##### Request-meals 欄位 | 型態 | 說明 --- | --- | --- timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段) timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別) foodCategoryId | string | 食物分類ID, 請參閱[食物分類](#食物分類) cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項 quantity | double | 建議用量(份) ```javascript { "id": "c905078a-c1ee-4802-a852-a5ee6b2f64e9", "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5", "status": "PUBLISHED", "ndCategoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d", "ndProblemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207", "ndEtiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6", "ndSigns": "test diagnosis", "meals": [ { "timePeriod": 1, "timePeriodType": 11, "foodCategoryId": "3844d748-c46d-416f-bd0c-e11241d42e47", "quantity": 4, "cookedType": "FRY" } ] } ``` #### Error httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.DIET_PLAN_PLATE_STATUS_NOT_DRAFT | 更新的餐盤並非草稿狀態 #### Response 欄位 | 型態 | 說明 --- | --- | --- data | int | 更新的餐點數量 ```javascript { "httpCode": 200, "result": { "data": 1 } } ``` ### 刪除用戶的建議餐盤[WEB] ```url POST /diet-plan-mgmt/dietPlan/delete ``` #### Request 欄位 | 型態 | 說明 --- | --- | --- id | string | 餐盤ID ```javascript { "id": "c905078a-c1ee-4802-a852-a5ee6b2f64e9" } ``` #### Error httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.DIET_PLAN_PLATE_STATUS_NOT_DRAFT | 刪除的餐盤並非草稿狀態 #### Response 欄位 | 型態 | 說明 --- | --- | --- data | int | 刪除的餐盤數量 ```javascript { "httpCode": 200, "result": { "data": 1 } } ``` ### 圴衡飲食趨勢分析[WEB] ```url POST /diet-plan-mgmt/diet/trend ``` * 包含飲食分數, 飲食記錄攝取熱量, 調整後攝取熱量, 三大營養素熱量比率 * 飲食分數是以整天為計算基礎 * 以月查詢時, detailList裡為每個月的平均資料(分母為當月總天數) #### Request-圴衡飲食趨勢分析 欄位 | 型態 | 預設 | 說明 --- | --- | --- |--- query | json | | 查詢條件json ##### Request-圴衡飲食趨勢分析-query(查詢條件json) 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- householdMemberId | string | WEB:**Y** | | | Web端必填, APP端由token取得 startDate | string | Y | | | 要搜尋的起始日期, YYYY-MM-DD, 或毫秒值 endDate | string | Y | | | 要搜尋的結束日期, YYYY-MM-DD, 或毫秒值 scorePeriod | string | Y | | | 飲食分數查詢區間類別, 請參閱[飲食分數查詢區間類別](#飲食分數查詢區間類別), 目前只能選DAILY及MONTHLY ```javascript { "query": { "householdMemberId": "c0fbb6d5-53c4-4962-bc17-1591e4903b2f", "startDate": "2022-12-01", "endDate": "2023-02-22", "scorePeriod": "MONTHLY" } } ``` #### Response-圴衡飲食趨勢分析 欄位 | 型態 | 說明 --- | --- | --- recordDays | int | 有飲食記錄的記錄天數 avgScore | double | 均衡飲食平均分數 scoreDelta | double | 均衡飲食分數變化, 為最新一筆資料分數-最舊一筆資料分數 trendSummaryInfo | json | 均衡飲食 summary json, 用來取出總結的三大營業素的比率 detailList | json array | 均衡飲食 json list ##### Response-圴衡飲食趨勢分析-trendSummaryInfo(json) 請參閱[detalList(json)](#Response-圴衡飲食趨勢分析-detailListjson) ##### Response-圴衡飲食趨勢分析-detailList(json) 欄位 | 型態 | 說明 --- | --- | --- dietDate | date | 飲食記錄日期, trendSummaryInfo json無此欄位, 若查詢條件scorePeriod=MONTHLY, 表示該月1號 score | double | 飲食分數 totalCalorie | double | 攝取總熱量 protein | double | 攝取蛋白質(g) carbohydrate | double | 攝取碳水化合物(g) fat | double | 攝取脂肪(g) proteinCal | double | 攝取蛋白質熱量 carbohydrateCal | double | 攝取碳水化合物熱量 fatCal | double | 攝取脂肪熱量 proteinRate | double | 攝取蛋白質比率(%) carbohydrateRate | double | 攝取碳水化合物比率(%) fatRate | double | 攝取脂肪比率(%) isAdjust | boolean | 飲食記錄是否有調整過, true表示有調整過, 請直接使用調整後的相關欄位數值 adjustTotalCalorie | double | 調整後攝取總熱量 adjustProtein | double | 調整後攝取蛋白質(g) adjustCarbohydrate | double | 調整後攝取碳水化合物(g) adjustFat | double | 調整後攝取脂肪(g) adjustProteinCal | double | 調整後攝取蛋白質熱量 adjustCarbohydrateCal | double | 調整後攝取碳水化合物熱量 adjustFatCal | double | 調整後攝取脂肪熱量 adjustProteinRate | double | 調整後攝取蛋白質比率(%) adjustCarbohydrateRate | double | 調整後攝取碳水化合物比率(%) adjustFatRate | double | 調整後攝取脂肪比率(%) ```javascript { "httpCode": 200, "result": { "data": { "recordDays": 12, "avgScore": 2.28, "scoreDelta": -5.42, "trendSummaryInfo": { "totalCalorie": 82.28, "protein": 3.92, "carbohydrate": 7.77, "fat": 3.95, "proteinCal": 15.66, "carbohydrateCal": 31.08, "fatCal": 35.58, "proteinRate": 19, "carbohydrateRate": 38, "fatRate": 43, "isAdjust": true, "adjustTotalCalorie": 118.38, "adjustProtein": 6.11, "adjustCarbohydrate": 11.14, "adjustFat": 5.49, "adjustProteinCal": 24.43, "adjustCarbohydrateCal": 44.57, "adjustFatCal": 49.43, "adjustProteinRate": 21, "adjustCarbohydrateRate": 38, "adjustFatRate": 42, "score": 3.42 }, "detailList": [ { "dietDate": 1675180800000, "totalCalorie": 16, "protein": 0.61, "carbohydrate": 1.25, "fat": 0.95, "proteinCal": 2.43, "carbohydrateCal": 5, "fatCal": 8.58, "proteinRate": 15, "carbohydrateRate": 31, "fatRate": 54, "isAdjust": false, "adjustTotalCalorie": 16, "adjustProtein": 0.61, "adjustCarbohydrate": 1.25, "adjustFat": 0.95, "adjustProteinCal": 2.43, "adjustCarbohydrateCal": 5, "adjustFatCal": 8.58, "adjustProteinRate": 15, "adjustCarbohydrateRate": 31, "adjustFatRate": 54, "score": 0.71 }, { "dietDate": 1669824000000, "totalCalorie": 148.56, "protein": 7.22, "carbohydrate": 14.29, "fat": 6.95, "proteinCal": 28.88, "carbohydrateCal": 57.16, "fatCal": 62.58, "proteinRate": 19, "carbohydrateRate": 38, "fatRate": 42, "isAdjust": true, "adjustTotalCalorie": 220.75, "adjustProtein": 11.61, "adjustCarbohydrate": 21.03, "adjustFat": 10.03, "adjustProteinCal": 46.43, "adjustCarbohydrateCal": 84.13, "adjustFatCal": 90.28, "adjustProteinRate": 21, "adjustCarbohydrateRate": 38, "adjustFatRate": 41, "score": 6.13 } ] } } } ```:::spoiler API 清單 [TOC] ::: # 智慧餐盤 ## 常數定義 ### 食物分類 欄位 | 型態 | 說明 ---|---|--- category | string | WHOLE_GRAINS: 全榖雜糧, LEGUME_FISH_MEAT_EGG: 豆魚肉蛋, DAIRY: 乳製品, VEGETABLES: 蔬菜, FRUITS: 水果, OILS_AND_NUTS: 食用油與堅果, DRINK: 飲料, OTHER: 其他 ### 食物類型-LEGUME_FISH_MEAT_EGG 欄位 | 型態 | 說明 ---|---|--- type | string | LOW_FAT: 低脂, MEDIUM_FAT: 中脂, HIGH_FAT: 高脂, VERY_HIGH_FAT: 超高脂 ### 食物類型-DAIRY 欄位 | 型態 | 說明 ---|---|--- type | string | LOW_FAT: 低脂, WHOLE_FAT: 全脂, SKIM: 脫脂 ### 食物類型-VEGETABLES 欄位 | 型態 | 說明 ---|---|--- type | string | RAW: 生, COOKED: 熟 ### 食物類型-OILS_AND_NUTS 欄位 | 型態 | 說明 ---|---|--- type | string | OIL: 食用油, NUT: 堅果 ### 食物類型-DRINK 欄位 | 型態 | 說明 ---|---|--- type | string | WATER: 水, FULL_SUGAR: 全糖, LESS_SUGAR: 少糖, HALF_SUGAR: 半糖, QUARTER_SUGAR: 微糖, SUGAR_FREE: 無糖 ### 用餐時段 欄位 | 型態 | 說明 ---|---|--- timePeriod | int | ALL: -1(查詢用), 早上: 1, 中午: 2, 晚上: 3, 睡前: 4 ### 用餐餐別 欄位 | 型態 | 說明 ---|---|--- timePeriodType | int | ALL: -1(查詢用), <br/> **早上**<br/> 早餐: 10, 早午餐: 11, 運動前一小時: 12, 運動前兩小時: 13, 運動後一小時: 14, 運動後兩小時: 15, <br/> **中午**<br/> 午餐: 20, 下午茶: 21, 運動前一小時: 22, 運動前兩小時: 23, 運動後一小時: 24, 運動後兩小時: 25, <br/> **晚上**<br/> 晚餐: 30, 點心: 31, 運動前一小時: 32, 運動前兩小時: 33, 運動後一小時: 34, 運動後兩小時: 35 <br/> **睡前**<br/> 40:宵夜, 運動前一小時: 42, 運動前兩小時: 43, 運動後一小時: 44, 運動後兩小時: 45 ### 烹調方式 欄位 | 型態 | 說明 ---|---|--- type | string | FAT_FREE: 無油, FRY: 非油炸, FRIED: 油炸 ### 額外加糖 欄位 | 型態 | 說明 ---|---|--- type | string | NONE: 無添加, WITH_SUGAR: 加糖 ### 餐盤狀態 欄位 | 型態 | 說明 ---|---|--- status | string | DRAFT: 草稿, PUBLISHED: 已發布 ### 飲食記錄方式 欄位 | 型態 | 說明 ---|---|--- diaryRecordType | string | DIET_PLAN: 我的餐盤, FOOD_DB: 食品資料庫 ### 飲食分數查詢區間類別 欄位 | 型態 | 說明 ---|---|--- scorePeriod | string | DAILY: 日, WEEKLY: 週, MONTHLY: 月 ## API ### 取得六大營養素資訊[APP/WEB] ```url GET /diet-plan/getIngredientsInfo ``` 取得六大營養素的類別/分類/熱量 #### Request #### Response 欄位 | 型態 | 說明 --- | --- | --- category | string | 食物分類, 請參閱[食物分類](#食物分類) types | json array | 在食物分類下的所有類型食材 cookedTypes | json array | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型 addedSugars | json array | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項 ##### Response-types 欄位 | 型態 | 說明 --- | --- | --- id | string | 食材id description | string | 食材描述 type | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG) simpleUnit | string | 簡易份量單位 calorie | double | 每份量的熱量 protein | double | 每份量的蛋白質重量(g) sugar | double | 每份量的糖重量(g) fat | double | 每份量的脂肪重量(g) protein_cal | double | 每份量的蛋白質熱量 sugar_cal | double | 每份量的糖熱量 fat_cal | double | 每份量的脂肪熱量 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50 ##### Response-cookedTypes/addedSugars 欄位 | 型態 | 說明 --- | --- | --- id | string | 食材id description | string | 食材描述 type | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG) calorie | double | 每份量的熱量 protein | double | 每份量的蛋白質重量(g) sugar | double | 每份量的糖重量(g) fat | double | 每份量的脂肪重量(g) protein_cal | double | 每份量的蛋白質熱量 sugar_cal | double | 每份量的糖熱量 fat_cal | double | 每份量的脂肪熱量 ```javascript { "httpCode": 200, "result": { "data": [ { "category": "LEGUME_FISH_MEAT_EGG", "types": [ { "id": "5ac5e206-881d-4d0d-b6b7-6ef9c61713b4", "description": "豆魚肉蛋(中脂)", "type": "MEDIUM_FAT", "simpleUnit": "掌心", "simpleUnitTransferCoefficient": 2.0, "protein": 7.0, "fat": 5.0, "calorie": 73.0, "proteinCal": 28.0, "fatCal": 20.0 }... ], "cookedTypes": [ { "id": "01a74fad-3df8-429e-8507-2392969b5585", "description": "烹調方式(無油)", "type": "FAT_FREE", "fat": 0.0, "calorie": 0.0, "fatCal": 0.0 }, ... ], "addedSugars": [] }, ] } } ``` ### 取得我的建議餐盤[APP] ```url GET /diet-plan/getMySuggestPlan ``` 取得我的建議餐盤 #### Request #### Response-取得我的建議餐盤 欄位 | 型態 | 說明 --- | --- | --- id | string | 餐盤id createTime | timestamp | 餐盤建立時間 updateTime | timestamp | 餐盤更新時間 creatorId | string | 餐盤建立者ID, 空值的話代表衛福部預設餐盤 creatorName | string | 餐盤建立者姓名, 空值的話代表衛福部預設餐盤 creatorRole | string | 餐盤建立者腳色, 空值的話代表衛福部預設餐盤 tenantId | string | 餐盤建立者的租戶ID, 空值的話代表衛福部預設餐盤 tenantName | string | 餐盤建立者的租戶名稱, 空值的話代表衛福部預設餐盤 totalCalorie | double | 本餐盤的總熱量 totalProteinCalorie | double | 本餐盤的蛋白質熱量 totalSugarCalorie | double | 本餐盤的醣類熱量 totalFatCalorie | double | 本餐盤的脂肪熱量 timePeriods| json array | 餐盤時段array cookedTypes | json array | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型 addedSugars | json array | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項 ##### Response-timePeriods 欄位 | 型態 | 說明 --- | --- | --- timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段) timePeriodTypes | json array | 用餐餐別 ##### Response-timePeriodTypes 欄位 | 型態 | 說明 --- | --- | --- timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別) totalCalorie | double | 本餐別的總熱量 totalProteinCalorie | double | 本餐別的蛋白質熱量 totalSugarCalorie | double | 本餐別的醣類熱量 totalFatCalorie | double | 本餐別的脂肪熱量 meals | json array | 建議餐點類型與用量 foodCategorys| json array| 建議餐點的熱量和用量根據食物分類統計 ##### Response-meals 欄位 | 型態 | 說明 --- | --- | --- foodCategory | string | 食物分類, 請參閱[食物分類](#食物分類) foodType | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG) cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項 quantity | double | 建議用量(份) simpleUnit | string | 簡易單位 calorie | double | 本餐點的熱量 proteinCalorie | double | 本餐點的蛋白質熱量 sugarCalorie | double | 本餐點的醣類熱量 fatCalorie | double | 本餐點的脂肪熱量 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR/>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50 ##### Response-foodCategorys 欄位 | 型態 | 說明 --- | --- | --- foodCategory | string | 食物分類, 請參閱[食物分類](#食物分類) quantity | double | 建議用量(份) simpleUnit | string | 簡易單位 calorie | double | 本餐點的熱量 proteinCalorie | double | 本餐點的蛋白質熱量 sugarCalorie | double | 本餐點的醣類熱量 fatCalorie | double | 本餐點的脂肪熱量 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR/>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50 ```javascript { "httpCode": 200, "result": { "data": { "id": "6298166e-6dc5-435e-b113-0975d48efdb9", "createTime": 1664122976237, "updateTime": 1664122976237, "creatorId": "7a17be34-13ae-4687-b971-1e5f586c8e3a", "creatorName": "Dr. X", "creatorRole": "腳科醫生", "tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc", "tenantName": "緯緯醫學", "totalCalorie": 324.5, "totalProteinCalorie": 52.0, "totalSugarCalorie": 88.0, "totalFatCalorie": 94.5, "timePeriods": [ { "timePeriod": 1, "timePeriodTypes": [ { "timePeriodType": 10, "totalCalorie": 324.5, "totalProteinCalorie": 52.0, "totalSugarCalorie": 88.0, "totalFatCalorie": 94.5, "meals": [ { "foodCategory": "LEGUME_FISH_MEAT_EGG", "foodType": "MEDIUM_FAT", "quantity": 0.5, "simpleUnit": "掌心", "simpleUnitTransferCoefficient": 2.0, "cookedType": "FRY", "calorie": 36.5, "proteinCalorie": 14.0, "sugarCalorie": 0.0, "fatCalorie": 22.5 },... ], "foodCategorys": [ { "calorie": 45.0, "proteinCal": 0.0, "sugarCal": 0.0, "fatCal": 45.0, "foodCategory": "OILS_AND_NUTS", "quantity": 1.0, "simpleUnit": "茶匙5ml", "simpleUnitTransferCoefficient": 0.333333 }, } ] } ] } } } ``` ### 查詢用戶的餐盤清單[WEB] ```url POST /diet-plan-mgmt/queryDietPlanList ``` 取得用戶的所有建議餐盤 #### Request ##### query (查詢條件json) 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- householdMemberId | string | | | | 要查詢的用戶ID ##### pagination (分頁json) 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- current | int | | 1 | 當前頁數 pageSize | int | | 10 | 每頁結果數量,-1 為顯示所有 ##### sorter (排序json) 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- field | string | | createTime | 排序欄位,可排序欄位有 totalCalories, creatorName, status, updateTime order | string | | desc | 升序或降序 ```javascript { "query": { "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5" } } ``` #### Error httpCode | 錯誤碼 | 說明 --- | --- | --- #### Response 欄位 | 型態 | 說明 --- | --- | --- id | string | 餐盤id createTime | timestamp | 餐盤建立時間 updateTime | timestamp | 餐盤更新時間 creatorId | string | 餐盤建立者ID, 空值的話代表衛福部預設餐盤 creatorName | string | 餐盤建立者姓名, 空值的話代表衛福部預設餐盤 tenantId | string | 餐盤建立者的租戶ID, 空值的話代表衛福部預設餐盤 tenantName | string | 餐盤建立者的租戶名稱, 空值的話代表衛福部預設餐盤 totalCalorie| double | 該餐盤的總建議熱量 status | string | 餐盤狀態, 請參閱[餐盤狀態](#餐盤狀態) ```javascript { "httpCode": 200, "result": { "data": [ { "id": "6298166e-6dc5-435e-b113-0975d48efdb9", "createTime": 1664122976237, "updateTime": 1664122976237, "status": "PUBLISHED", "creatorId": "7a17be34-13ae-4687-b971-1e5f586c8e3a", "creatorName": "Dr. X", "tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc", "tenantName": "緯緯醫學", "totalCalorie": 324.5 }, ... ] } } ``` ### 取得營養診斷資訊[WEB] ```url GET /diet-plan-mgmt/getNutritionalDiagnosisInfo ``` 取得營養診斷資訊 #### Request #### Error httpCode | 錯誤碼 | 說明 --- | --- | --- #### Response 欄位 | 型態 | 說明 --- | --- | --- problemCategoryId | string | 問題分類key problemCategoryI18n | string | 問題分類i18n problemCategoryDescription | string | 問題分類描述 problems | json array | 該問題分類下的所有問題 ##### Response-problems 欄位 | 型態 | 說明 --- | --- | --- problemId | string | 問題key problemI18n | string | 問題i18n problemDescription | string | 問題描述 etiologys | json array | 該問題下的所有危險因子 ##### Response-etiologys 欄位 | 型態 | 說明 --- | --- | --- etiologyId | string | 危險因子key etiologyI18n | string | 危險因子i18n etiologyDescription | string |危險因子描述 ```javascript { "httpCode": 200, "result": { "data": [ { "problemCategoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d", "problemCategoryDescription": "體位", "problems": [ { "problemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207", "problemDescription": "體重過輕", "etiologys": [ { "etiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6", "etiologyDescription": "照顧者或本身對食物及營養相關議題有錯誤認知及態度" }, ... ] } ] } ] } } ``` ### 取得用戶的建議餐盤[WEB] ```url GET /diet-plan-mgmt/dietPlan/info?id={id} ``` #### Request 欄位 | 型態 | 說明 --- | --- | --- id | string | 餐盤ID ```javascript ``` #### Error httpCode | 錯誤碼 | 說明 --- | --- | --- #### Response 欄位 | 型態 | 說明 --- | --- | --- id | string | 餐盤id createTime | timestamp | 餐盤建立時間 updateTime | timestamp | 餐盤更新時間 creatorId | string | 餐盤建立者ID, 空值的話代表衛福部預設餐盤 creatorName | string | 餐盤建立者姓名, 空值的話代表衛福部預設餐盤 creatorRole | string | 餐盤建立者腳色, 空值的話代表衛福部預設餐盤 tenantId | string | 餐盤建立者的租戶ID, 空值的話代表衛福部預設餐盤 tenantName | string | 餐盤建立者的租戶名稱, 空值的話代表衛福部預設餐盤 totalCalorie | double | 本餐盤的總熱量 totalProteinCalorie | double | 本餐盤的蛋白質熱量 totalSugarCalorie | double | 本餐盤的醣類熱量 totalFatCalorie | double | 本餐盤的脂肪熱量 meals| json array | 餐點array nutritionalDiagnosisInfo| json object | 營養診斷資訊 cookedTypes | json array | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型 addedSugars | json array | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項 ##### Response-meals 欄位 | 型態 | 說明 --- | --- | --- timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段) timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別) foodCategory | string | 食物分類, 請參閱[食物分類](#食物分類) foodType | string | 食物類型, 請參照[各食物類型](#食物類型-LEGUME_FISH_MEAT_EGG) cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項 quantity | double | 建議用量(份) simpleUnit | string | 簡易單位 quantityForSimpleUnit | double | 建議用量(簡易單位) calorie | double | 本餐點的熱量 proteinCalorie | double | 本餐點的蛋白質熱量 sugarCalorie | double | 本餐點的醣類熱量 fatCalorie | double | 本餐點的脂肪熱量 simpleUnitTransferCoefficient | double | 簡易單位轉換成一般份量的轉換係數<BR>上方的重量和熱量都是基於一般分量. 要用簡易熱量轉換時要乘上轉換係數<BR>e.g.: 每份熱量: 50, 轉換係數: 2, 0.5份簡易份量熱量等於: 0.5 x 2 x 50 ##### Response-nutritionalDiagnosisInfo 欄位 | 型態 | 說明 --- | --- | --- categoryId | string | 問題分類ID categoryI18n | string | 問題分類i18n categoryDescription | string | 問題分類描述 problemId | string | 問題ID problemI18n | string | 問題i18n problemDescription | string | 問題描述 etiologys | json array | 該問題下的所有危險因子 etiologyId | string | 病因ID etiologyI18n | string | 病因i18n etiologyDescription | string |病因描述 signs| string | 病徵 ```javascript { "httpCode": 200, "result": { "data": { "id": "6298166e-6dc5-435e-b113-0975d48efdb9", "createTime": 1664122976237, "updateTime": 1664122976237, "status": "PUBLISHED", "creatorId": "7a17be34-13ae-4687-b971-1e5f586c8e3a", "creatorName": "Dr. X", "creatorRole": "腳科醫生", "tenantId": "858b7fbb-3ba0-4d49-9882-c893a1ef07dc", "tenantName": "緯緯醫學", "totalCalorie": 324.5, "totalProteinCalorie": 52.0, "totalSugarCalorie": 88.0, "totalFatCalorie": 94.5, "meals": [ { "timePeriod": 1, "timePeriodType": 10, "calorie": 36.5, "proteinCal": 14.0, "sugarCal": 0.0, "fatCal": 22.5, "foodCategory": "LEGUME_FISH_MEAT_EGG", "foodType": "MEDIUM_FAT", "quantity": 0.5, "simpleUnit": "掌心", "simpleUnitTransferCoefficient": 2.0, "cookedType": "FRY" }, ... ], "nutritionalDiagnosisInfo": { "categoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d", "categoryDescription": "體位", "problemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207", "problemDescription": "體重過輕", "etiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6", "etiologyDescription": "照顧者或本身對食物及營養相關議題有錯誤認知及態度", "signs": "test diagnosis" } } } } ``` ### 新增用戶的建議餐盤[WEB] ```url POST /diet-plan-mgmt/dietPlan/add ``` #### Request 欄位 | 型態 | 說明 --- | --- | --- householdMemberId | string | 用戶ID status | string | 用戶ID ndCategoryId | string | 營養診斷問題類別ID ndProblemId | string | 營養診斷問題ID ndEtiologyId | string | 營養診斷病因ID ndSigns | string | 營養診斷病徵說明 meals | json array | 餐點array ##### Request-meals 欄位 | 型態 | 說明 --- | --- | --- timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段) timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別) foodCategoryId | string | 食物分類ID, 請參閱[食物分類](#食物分類) cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項 quantity | double | 建議用量(份) ```javascript { "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5", "status": "DRAFT", "ndCategoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d", "ndProblemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207", "ndEtiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6", "ndSigns": "test diagnosis", "meals": [ { "timePeriod": 1, "timePeriodType": 10, "foodCategoryId": "3844d748-c46d-416f-bd0c-e11241d42e47", "quantity": 3, "cookedType": "FRY" } ] } ``` #### Error httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.DIET_PLAN_DRAFT_PLATE_EXIST | 當前存在草稿餐盤 #### Response 欄位 | 型態 | 說明 --- | --- | --- data | int | 新增的餐點數量 ```javascript { "httpCode": 200, "result": { "data": 1 } } ``` ### 更新用戶的建議餐盤[WEB] ```url POST /diet-plan-mgmt/dietPlan/update ``` #### Request 欄位 | 型態 | 說明 --- | --- | --- id | string | 餐盤ID householdMemberId | string | 用戶ID status | string | 用戶ID ndCategoryId | string | 營養診斷問題類別ID ndProblemId | string | 營養診斷問題ID ndEtiologyId | string | 營養診斷病因ID ndSigns | string | 營養診斷病徵說明 meals | json array | 餐點array ##### Request-meals 欄位 | 型態 | 說明 --- | --- | --- timePeriod | int | 用餐時段, 請參閱[用餐時段](#用餐時段) timePeriodType | int | 用餐餐別, 請參閱[用餐餐別](#用餐餐別) foodCategoryId | string | 食物分類ID, 請參閱[食物分類](#食物分類) cookedType | string | 在食物分類下的烹調類型, 目前只有LEGUME_FISH_MEAT_EGG, WHOLE_GRAINS, VEGETABLES有烹調類型 addedSugar | string | 在食物分類下的可額外添加糖的類型, 目前只有DAIRY有額外加糖選項 quantity | double | 建議用量(份) ```javascript { "id": "c905078a-c1ee-4802-a852-a5ee6b2f64e9", "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5", "status": "PUBLISHED", "ndCategoryId": "f9223c4b-4d0e-4246-b47f-8e66e856413d", "ndProblemId": "ce2ec4c5-19ea-4317-a7ea-134ad3311207", "ndEtiologyId": "7a9b014c-37db-4601-a2d4-8422f11f80a6", "ndSigns": "test diagnosis", "meals": [ { "timePeriod": 1, "timePeriodType": 11, "foodCategoryId": "3844d748-c46d-416f-bd0c-e11241d42e47", "quantity": 4, "cookedType": "FRY" } ] } ``` #### Error httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.DIET_PLAN_PLATE_STATUS_NOT_DRAFT | 更新的餐盤並非草稿狀態 #### Response 欄位 | 型態 | 說明 --- | --- | --- data | int | 更新的餐點數量 ```javascript { "httpCode": 200, "result": { "data": 1 } } ``` ### 刪除用戶的建議餐盤[WEB] ```url POST /diet-plan-mgmt/dietPlan/delete ``` #### Request 欄位 | 型態 | 說明 --- | --- | --- id | string | 餐盤ID ```javascript { "id": "c905078a-c1ee-4802-a852-a5ee6b2f64e9" } ``` #### Error httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.DIET_PLAN_PLATE_STATUS_NOT_DRAFT | 刪除的餐盤並非草稿狀態 #### Response 欄位 | 型態 | 說明 --- | --- | --- data | int | 刪除的餐盤數量 ```javascript { "httpCode": 200, "result": { "data": 1 } } ``` ### 圴衡飲食趨勢分析[WEB] ```url POST /diet-plan-mgmt/diet/trend ``` * 包含飲食分數, 飲食記錄攝取熱量, 調整後攝取熱量, 三大營養素熱量比率 * 飲食分數是以整天為計算基礎 * 以月查詢時, detailList裡為每個月的平均資料(分母為當月總天數) #### Request-圴衡飲食趨勢分析 欄位 | 型態 | 預設 | 說明 --- | --- | --- |--- query | json | | 查詢條件json ##### Request-圴衡飲食趨勢分析-query(查詢條件json) 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- householdMemberId | string | WEB:**Y** | | | Web端必填, APP端由token取得 startDate | string | Y | | | 要搜尋的起始日期, YYYY-MM-DD, 或毫秒值 endDate | string | Y | | | 要搜尋的結束日期, YYYY-MM-DD, 或毫秒值 scorePeriod | string | Y | | | 飲食分數查詢區間類別, 請參閱[飲食分數查詢區間類別](#飲食分數查詢區間類別), 目前只能選DAILY及MONTHLY ```javascript { "query": { "householdMemberId": "c0fbb6d5-53c4-4962-bc17-1591e4903b2f", "startDate": "2022-12-01", "endDate": "2023-02-22", "scorePeriod": "MONTHLY" } } ``` #### Response-圴衡飲食趨勢分析 欄位 | 型態 | 說明 --- | --- | --- recordDays | int | 有飲食記錄的記錄天數 avgScore | double | 均衡飲食平均分數 scoreDelta | double | 均衡飲食分數變化, 為最新一筆資料分數-最舊一筆資料分數 trendSummaryInfo | json | 均衡飲食 summary json, 用來取出總結的三大營業素的比率 detailList | json array | 均衡飲食 json list ##### Response-圴衡飲食趨勢分析-trendSummaryInfo(json) 請參閱[detalList(json)](#Response-圴衡飲食趨勢分析-detailListjson) ##### Response-圴衡飲食趨勢分析-detailList(json) 欄位 | 型態 | 說明 --- | --- | --- dietDate | date | 飲食記錄日期, trendSummaryInfo json無此欄位, 若查詢條件scorePeriod=MONTHLY, 表示該月1號 score | double | 飲食分數 totalCalorie | double | 攝取總熱量 protein | double | 攝取蛋白質(g) carbohydrate | double | 攝取碳水化合物(g) fat | double | 攝取脂肪(g) proteinCal | double | 攝取蛋白質熱量 carbohydrateCal | double | 攝取碳水化合物熱量 fatCal | double | 攝取脂肪熱量 proteinRate | double | 攝取蛋白質比率(%) carbohydrateRate | double | 攝取碳水化合物比率(%) fatRate | double | 攝取脂肪比率(%) isAdjust | boolean | 飲食記錄是否有調整過, true表示有調整過, 請直接使用調整後的相關欄位數值 adjustTotalCalorie | double | 調整後攝取總熱量 adjustProtein | double | 調整後攝取蛋白質(g) adjustCarbohydrate | double | 調整後攝取碳水化合物(g) adjustFat | double | 調整後攝取脂肪(g) adjustProteinCal | double | 調整後攝取蛋白質熱量 adjustCarbohydrateCal | double | 調整後攝取碳水化合物熱量 adjustFatCal | double | 調整後攝取脂肪熱量 adjustProteinRate | double | 調整後攝取蛋白質比率(%) adjustCarbohydrateRate | double | 調整後攝取碳水化合物比率(%) adjustFatRate | double | 調整後攝取脂肪比率(%) ```javascript { "httpCode": 200, "result": { "data": { "recordDays": 12, "avgScore": 2.28, "scoreDelta": -5.42, "trendSummaryInfo": { "totalCalorie": 82.28, "protein": 3.92, "carbohydrate": 7.77, "fat": 3.95, "proteinCal": 15.66, "carbohydrateCal": 31.08, "fatCal": 35.58, "proteinRate": 19, "carbohydrateRate": 38, "fatRate": 43, "isAdjust": true, "adjustTotalCalorie": 118.38, "adjustProtein": 6.11, "adjustCarbohydrate": 11.14, "adjustFat": 5.49, "adjustProteinCal": 24.43, "adjustCarbohydrateCal": 44.57, "adjustFatCal": 49.43, "adjustProteinRate": 21, "adjustCarbohydrateRate": 38, "adjustFatRate": 42, "score": 3.42 }, "detailList": [ { "dietDate": 1675180800000, "totalCalorie": 16, "protein": 0.61, "carbohydrate": 1.25, "fat": 0.95, "proteinCal": 2.43, "carbohydrateCal": 5, "fatCal": 8.58, "proteinRate": 15, "carbohydrateRate": 31, "fatRate": 54, "isAdjust": false, "adjustTotalCalorie": 16, "adjustProtein": 0.61, "adjustCarbohydrate": 1.25, "adjustFat": 0.95, "adjustProteinCal": 2.43, "adjustCarbohydrateCal": 5, "adjustFatCal": 8.58, "adjustProteinRate": 15, "adjustCarbohydrateRate": 31, "adjustFatRate": 54, "score": 0.71 }, { "dietDate": 1669824000000, "totalCalorie": 148.56, "protein": 7.22, "carbohydrate": 14.29, "fat": 6.95, "proteinCal": 28.88, "carbohydrateCal": 57.16, "fatCal": 62.58, "proteinRate": 19, "carbohydrateRate": 38, "fatRate": 42, "isAdjust": true, "adjustTotalCalorie": 220.75, "adjustProtein": 11.61, "adjustCarbohydrate": 21.03, "adjustFat": 10.03, "adjustProteinCal": 46.43, "adjustCarbohydrateCal": 84.13, "adjustFatCal": 90.28, "adjustProteinRate": 21, "adjustCarbohydrateRate": 38, "adjustFatRate": 41, "score": 6.13 } ] } } } ```