孫振楠
(江蘇聯(lián)合職業(yè)技術(shù)學(xué)院鎮(zhèn)江分院 信息工程系,江蘇 鎮(zhèn)江 212016)
中醫(yī)將人的體質(zhì)分為9類,其中平和體質(zhì)處于相對健康狀態(tài),陽虛、陰虛、氣虛、痰濕、濕熱、血瘀、特稟、氣郁等體質(zhì)處于亞健康狀態(tài)。中醫(yī)辨證治療即基于個(gè)人體質(zhì)。個(gè)人體質(zhì)不局限于某一種,且隨生活、飲食習(xí)慣的變化而表現(xiàn)不同,需要定期或不定期測試,并進(jìn)行調(diào)節(jié)[1]。中醫(yī)體質(zhì)判定系統(tǒng)通過微信接口認(rèn)證,減少注冊環(huán)節(jié),定時(shí)提醒用戶測試,跟蹤體質(zhì)變化,提高用戶黏度。系統(tǒng)根據(jù)預(yù)設(shè)測試題的得分判定體質(zhì)類別,并提供打印接口。系統(tǒng)分析測試數(shù)據(jù)通過圖形化顯示,為未登錄用戶提供預(yù)判參考。
第三方登錄基于用戶在第三方平臺的賬號和密碼,可以降低用戶的注冊和登錄成本,提高用戶黏度。OAuth 2.0授權(quán)框架支持第三方應(yīng)用程序獲得對HTTP服務(wù)的有限訪問權(quán),通過協(xié)調(diào),實(shí)現(xiàn)資源所有者和HTTP服務(wù)之間的交互[2]。微信OAuth 2.0授權(quán)登錄中,第三方獲取用戶的接口調(diào)用憑證(access_token),實(shí)現(xiàn)獲取微信用戶基本開放信息功能等。微信授權(quán)登錄流程如圖1所示[3]。
圖1 微信授權(quán)登錄流程
系統(tǒng)以國家中醫(yī)藥管理局《中醫(yī)藥健康管理服務(wù)技術(shù)規(guī)范——老年人中醫(yī)藥健康管理服務(wù)記錄表》33項(xiàng)問題為量表采集信息,平和體質(zhì)包括5道測試題,其中1道為專屬測試題,其他8種體質(zhì)均包括4道測試題,各有5個(gè)選項(xiàng),即“沒有、很少、有時(shí)、經(jīng)常、總是”,分別對應(yīng)1分、2分、3分、4分、5分。系統(tǒng)簡化設(shè)計(jì),為測試題添加標(biāo)簽,避免重復(fù),按順序排列,避免定式思維。
系統(tǒng)測試結(jié)果打印使用jQuery的輕量插件jqprint,參數(shù)配置如表1所示。
表1 jqprint參數(shù)
根據(jù)我國現(xiàn)行年齡劃分標(biāo)準(zhǔn),分為童年(0—6歲)、少年(7—17歲)、青年(18—40歲)、中年(41—65歲)、老年(66歲以上)5個(gè)年齡段。系統(tǒng)針對老年定義用戶特征集合A(性別、年齡)、體質(zhì)集合B,根據(jù)用戶性別、年齡特征統(tǒng)計(jì)各種體質(zhì)比例并以圖形顯示,為未登錄用戶提供參考依據(jù)。
中醫(yī)體質(zhì)判定系統(tǒng)包括注冊/登錄、系統(tǒng)判定、結(jié)果呈現(xiàn)、統(tǒng)計(jì)分析等模塊,系統(tǒng)流程圖如圖2所示。
“注冊/登錄”模塊作為系統(tǒng)的入口與微信接口對接,記錄、跟蹤用戶的判定結(jié)果,便于用戶實(shí)時(shí)查看判定結(jié)果、調(diào)節(jié)措施等。該模塊記錄用戶姓名、性別、年齡等信息,系統(tǒng)分析數(shù)據(jù)源自用戶的判定結(jié)果。
系統(tǒng)判定模塊包括兩種算法,即
(1)
(2)
圖2 系統(tǒng)流程圖
算法(1)中,j取值1到8分別表示陽虛、陰虛、氣虛、痰濕、濕熱、血瘀、特稟、氣郁等體質(zhì);i為測試題目序號;ωi為權(quán)值,ωi=1,表示包含第i題,ωi=0,表示不包含第i題;xi表示用戶測試第i題的得分。根據(jù)標(biāo)簽將8種體質(zhì)對應(yīng)的題目分類,匯總分值。根據(jù)條件判定體質(zhì)類別,Pj≥11即為該體質(zhì),Pj=9或Pj=10為傾向該體質(zhì),Pj≤8則不屬于該體質(zhì)。
算法(2)中,P9即平和體質(zhì)有一道專屬測試題,記為k,通過標(biāo)簽識別,另外4道測試題來自于其他8種體質(zhì),需要反向記分,即6-xi。P9≥17且Pj≤8,則是平和體質(zhì);Pj≥17且Pj=9或Pj=10,則傾向是平和體質(zhì);其他情況則不屬于平和體質(zhì)。
體質(zhì)特征、調(diào)節(jié)原則、調(diào)節(jié)措施通過打印接口發(fā)送至打印機(jī)或以短信方式將鏈接發(fā)送到用戶手機(jī)端,以指導(dǎo)用戶健康調(diào)理。
統(tǒng)計(jì)分析模塊,未登錄用戶同樣可以查看,根據(jù)自身情況參照分析結(jié)果做出預(yù)測。
用戶在微信客戶端訪問系統(tǒng)頁面,公眾號通過微信網(wǎng)頁授權(quán)機(jī)制,獲取用戶基本信息,實(shí)現(xiàn)業(yè)務(wù)邏輯。系統(tǒng)實(shí)現(xiàn)微信授權(quán)登錄的核心代碼如下:
//第一步:通過回調(diào)地址獲取code
string code = Request.QueryString["code"];
//第二步:通過code換取網(wǎng)頁授權(quán)access_token
string url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+AppSecret+"&code="+code+"&grant_type=authorization_code";
string html = MyCLib.NetClass.SendUrl(url,System.Text.Encoding.UTF8);
NameValueCollection tokenJSON = ParseJson(html);
ictionary
string access_token = tokenJSON["access_token"];
string openid = tokenJSON["openid"];
//第三步:拉取用戶信息(需scope為 snsapi_userinfo)
url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid + "&lang=zh_CN";
html = MyCLib.NetClass.SendUrl(url, System.Text.Encoding.UTF8);
Dictionary
Response.Write("");
其中appid是公眾號的唯一標(biāo)識,AppSecret是公眾號的appsecret。
通過微信接口登錄系統(tǒng),獲取用戶信息的方法如下:
string state = Request.QueryString["state"];
string code = Request.QueryString["code"];
var cookie = Request.Cookies["weixinState"];
if (cookie.Value == state)
{
//通過帶的code獲取access_token和openid等信息
var cre = WeiXin.GetWebLoginAccessToken(code);
//通過access_token和openid獲取微信用戶的基本信息
var userInfo = WeiXin.GetWebUserInfo(cre.access_token, cre.openid, LangType.zh_CN);
}
系統(tǒng)數(shù)據(jù)庫記錄用戶基本信息,免去用戶注冊過程。
系統(tǒng)調(diào)用TCM_Statistics()方法。根據(jù)用戶的性別進(jìn)行分類,根據(jù)用戶出生日期進(jìn)行年齡段匯總,計(jì)算比例并繪制圖示。TCM_Statistics()方法流程如圖3所示。
圖3 系統(tǒng)數(shù)據(jù)分析流程圖
系統(tǒng)界面采用扁平化設(shè)計(jì),增強(qiáng)用戶體驗(yàn)。系統(tǒng)通過瀏覽器打開如圖4所示的主界面,用戶在未測試前可查看各種體質(zhì)特征、調(diào)節(jié)原則、調(diào)節(jié)措施等,如圖5,圖6所示,預(yù)判體質(zhì)傾向。
用戶通過微信接口登錄系統(tǒng)后測試界面如圖7所示,測試結(jié)果如圖8所示。用戶可查看各種體質(zhì)特征、調(diào)節(jié)原則、調(diào)節(jié)措施。
圖4 系統(tǒng)主界面
圖5 調(diào)節(jié)措施
圖6 體質(zhì)數(shù)據(jù)分析
圖7 測試界面
圖8 測試結(jié)果
基于微信接口的中醫(yī)體質(zhì)判定系統(tǒng)減少了注冊環(huán)節(jié),保存了用戶的測試記錄,并將體質(zhì)特征、調(diào)節(jié)原則、調(diào)節(jié)措施打印出來,以指導(dǎo)用戶健康調(diào)理。今后將實(shí)現(xiàn)歷史測試結(jié)果查詢與比對功能,提升用戶界面的友好性。