ISAP/Assets/Scripts/UI/UIHistoryInfo.cs

520 lines
17 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
using UnityEngine.Video;
public class UIHistoryInfo : UIBase
{
public Button close;
public GameObject infoItem;
public Transform content;
string dataURL = string.Empty;
int currentDiaID = -1;
DataItem currentDisData = null;
public VideoPlayer player;
public TextMeshProUGUI text;
private void Awake()
{
currentDisData = DataManager.Instance.currentData;
close.onClick.AddListener(() => { UIManager.Instance.DestoryUI(UIType.UIHistoryInfo); });
//var allData = DataManager.Instance.currentPeoplesQuestion;
//if (allData != null)
//{
// if (allData.Count > 0)
// {
// currentDiaID = allData[0].diagnosisId;
// }
//}
EventCenter.dispatcher.AddListener(MsgType.OnGetPeopleInfo2, OnGetPeopleInfo);
EventCenter.dispatcher.AddListener(MsgType.OnGetAskReason, OnGetAskReason);
EventCenter.dispatcher.AddListener(MsgType.OnGetHistoryInfo, OnGetHistoryInfo);
EventCenter.dispatcher.AddListener(MsgType.OnGetLifeType, OnGetLifeType);
EventCenter.dispatcher.AddListener(MsgType.OnGetHealing, OnGetHealing);
EventCenter.dispatcher.AddListener(MsgType.OnGetCheckReason, OnGetCheckReason);
EventCenter.dispatcher.AddListener(MsgType.OnGetOtherInfo, OnGetOtherInfo);
currentDiaID = DataManager.Instance.CurrentHistoryUIID;
switch (currentDiaID)
{
case 0:
text.text = "病人的个人资料";
GetPeopleInfo();
break;
case 1:
text.text = "咨询的理由";
GetAskReason();
break;
case 2:
text.text = "病史详情";
GetHistoryInfo();
break;
case 3:
text.text = "生活方式";
GetLifeType();
break;
case 4:
text.text = "正在进行的治疗";
GetHealing();
break;
case 5:
text.text = "完成的检查结果";
GetCheckReason();
break;
case 6:
text.text = "其他信息";
GetOtherInfo();
break;
default:
break;
}
}
private void OnDestroy()
{
EventCenter.dispatcher.RemoveListener(MsgType.OnGetPeopleInfo2, OnGetPeopleInfo);
EventCenter.dispatcher.RemoveListener(MsgType.OnGetAskReason, OnGetAskReason);
EventCenter.dispatcher.RemoveListener(MsgType.OnGetHistoryInfo, OnGetHistoryInfo);
EventCenter.dispatcher.RemoveListener(MsgType.OnGetLifeType, OnGetLifeType);
EventCenter.dispatcher.RemoveListener(MsgType.OnGetHealing, OnGetHealing);
EventCenter.dispatcher.RemoveListener(MsgType.OnGetCheckReason, OnGetCheckReason);
EventCenter.dispatcher.RemoveListener(MsgType.OnGetOtherInfo, OnGetOtherInfo);
}
#region 其他信息
private void GetOtherInfo()
{
dataURL = DataManager.Instance.currentHistoryChoose;
Debug.Log(dataURL);
//dataURL = "http://122.112.171.137:85/api/diagnosis/life/style/list";
StartCoroutine(OtherInfo(dataURL));
}
IEnumerator OtherInfo(string url)
{
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error);
}
else
{
string receiveContent = request.downloadHandler.text;
byte[] datas = Encoding.UTF8.GetBytes(receiveContent);
receiveContent = Encoding.UTF8.GetString(datas, 0, datas.Length);
//JsonInfo jsonInfo = JsonMapper.ToObject<JsonInfo>(receiveContent);
DataParse.Instance.ParseAllOtherInfo(receiveContent);
}
}
private void OnGetOtherInfo(Message evt)
{
var currentInfo = DataManager.Instance.otherInfoItem;
List<FileInfoData> infos = new List<FileInfoData>();
for (int i = 0; i < currentInfo.Count; i++)
{
FileInfoData data = new FileInfoData();
var temp = currentInfo[i];
var fileTemp = temp.fileLibraryResp;
data.type = (FileType)fileTemp.type;
data.title = temp.title;
data.content = temp.content;
data.url = fileTemp.filePath;
infos.Add(data);
}
UIBase ui = UIManager.Instance.OpenUI(UIType.UIFile);
UIFile fileui = (UIFile)ui;
fileui.Init(infos);
//var file = currentInfo[0].fileLibraryResp;
//UIBase ui = UIManager.Instance.OpenUI(UIType.UIFile);
//UIFile fileui = (UIFile)ui;
//switch (file.type)
//{
// case 1:
// //图片
// fileui.Init(FileType.image);
// break;
// case 2:
// //视频
// fileui.Init(FileType.video);
// break;
// case 3:
// //音频
// fileui.Init(FileType.music);
// break;
// case 4:
// //PDF
// fileui.Init(FileType.URL);
// break;
// case 5:
// //VIDAL摘录
// fileui.Init(FileType.text);
// break;
//}
UIManager.Instance.DestoryUI(UIType.UIHistoryInfo);
}
#endregion
#region 完成的检查结果
private void GetCheckReason()
{
dataURL = DataManager.Instance.currentHistoryChoose;
//dataURL = "http://122.112.171.137:85/api/diagnosis/life/style/list";
StartCoroutine(CheckReason(dataURL));
}
IEnumerator CheckReason(string url)
{
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error);
}
else
{
string receiveContent = request.downloadHandler.text;
byte[] datas = Encoding.UTF8.GetBytes(receiveContent);
receiveContent = Encoding.UTF8.GetString(datas, 0, datas.Length);
//JsonInfo jsonInfo = JsonMapper.ToObject<JsonInfo>(receiveContent);
DataParse.Instance.ParseAllCheckReason(receiveContent);
}
}
Image[] head;
private void OnGetCheckReason(Message evt)
{
var currentInfo = DataManager.Instance.checkReasonItems;
head = new Image[currentInfo.Count];
for (int i = 0; i < currentInfo.Count; i++)
{
var data = currentInfo[i];
if (data.diagnosisId == currentDisData.id)
{
var newUI = GameObject.Instantiate(infoItem, content);
//newUI.transform.Find("info").GetComponent<TextMeshProUGUI>().text =
// "咨询理由:" + data.name +
// "\n咨询时间" + data.time +
// "\n过往史" + data.historySynopsis +
// "\n创建时间" + data.createTime;
//展示图片或视频 url
if (data.fileType == 1)
{
//图片
newUI.transform.Find("info").GetComponent<TextMeshProUGUI>().text = "图片展示:";
head[i] = newUI.transform.Find("infoImg").GetComponent<Image>();
head[i].gameObject.SetActive(true);
StartCoroutine(DownSprite(head[i], data));
}
else
{
//视频
player.source = VideoSource.Url;
player.url = data.filePath;
player.gameObject.SetActive(true);
player.Play();
}
newUI.gameObject.SetActive(true);
}
}
}
IEnumerator DownSprite(Image img, CheckReasonItem item)
{
UnityWebRequest wr = new UnityWebRequest(item.filePath);
DownloadHandlerTexture texD1 = new DownloadHandlerTexture(true);
wr.downloadHandler = texD1;
yield return wr.SendWebRequest();
int width = 300;
int high = 200;
if (!wr.isNetworkError)
{
Texture2D tex = new Texture2D(width, high);
tex = texD1.texture;
//保存本地
//Byte[] bytes = tex.EncodeToPNG();
//File.WriteAllBytes(Application.dataPath + "/" + data.name + ".png", bytes);
Sprite sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));
if (img != null)
img.sprite = sprite;
//transform.GetComponent<Image>().sprite = sprite;
}
}
#endregion
#region 正在进行的治疗
private void GetHealing()
{
dataURL = DataManager.Instance.currentHistoryChoose;
//dataURL = "http://122.112.171.137:85/api/diagnosis/life/style/list";
StartCoroutine(Healing(dataURL));
}
IEnumerator Healing(string url)
{
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error);
}
else
{
string receiveContent = request.downloadHandler.text;
byte[] datas = Encoding.UTF8.GetBytes(receiveContent);
receiveContent = Encoding.UTF8.GetString(datas, 0, datas.Length);
//JsonInfo jsonInfo = JsonMapper.ToObject<JsonInfo>(receiveContent);
DataParse.Instance.ParseAllHealing(receiveContent);
}
}
private void OnGetHealing(Message evt)
{
var currentInfo = DataManager.Instance.healingItems;
for (int i = 0; i < currentInfo.Count; i++)
{
var data = currentInfo[i];
if (data.diagnosisId == currentDisData.id)
{
var newUI = GameObject.Instantiate(infoItem, content);
newUI.transform.Find("info").GetComponent<TextMeshProUGUI>().text =
"治疗方式:" + data.type +
"\n分子" + data.molecule +
"\n药牌子" + data.brand +
"\n名字" + data.dciName +
"\n方式" + data.frequency +
"\n持续时间" + data.duration +
"\n创建时间" + data.createTime;
newUI.gameObject.SetActive(true);
}
}
}
#endregion
#region 生活方式
private void GetLifeType()
{
dataURL = DataManager.Instance.currentHistoryChoose;
//dataURL = "http://122.112.171.137:85/api/diagnosis/life/style/list";
StartCoroutine(LifeType(dataURL));
}
IEnumerator LifeType(string url)
{
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error);
}
else
{
string receiveContent = request.downloadHandler.text;
byte[] datas = Encoding.UTF8.GetBytes(receiveContent);
receiveContent = Encoding.UTF8.GetString(datas, 0, datas.Length);
//JsonInfo jsonInfo = JsonMapper.ToObject<JsonInfo>(receiveContent);
DataParse.Instance.ParseAllLifeType(receiveContent);
}
}
private void OnGetLifeType(Message evt)
{
var currentInfo = DataManager.Instance.lifeItems;
for (int i = 0; i < currentInfo.Count; i++)
{
var data = currentInfo[i];
if (data.diagnosisId == currentDisData.id)
{
var newUI = GameObject.Instantiate(infoItem, content);
newUI.transform.Find("info").GetComponent<TextMeshProUGUI>().text =
"生活方式:" + data.detail +
"\n创建时间" + data.createTime;
newUI.gameObject.SetActive(true);
}
}
}
#endregion
#region 病史详情
private void GetHistoryInfo()
{
dataURL = DataManager.Instance.currentHistoryChoose;
//dataURL = "http://122.112.171.137:85/api/medical/history/detail/list";
StartCoroutine(HistoryInfo(dataURL));
}
IEnumerator HistoryInfo(string url)
{
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error);
}
else
{
string receiveContent = request.downloadHandler.text;
byte[] datas = Encoding.UTF8.GetBytes(receiveContent);
receiveContent = Encoding.UTF8.GetString(datas, 0, datas.Length);
//JsonInfo jsonInfo = JsonMapper.ToObject<JsonInfo>(receiveContent);
DataParse.Instance.ParseAllHistoryInfo(receiveContent);
}
}
private void OnGetHistoryInfo(Message evt)
{
var currentInfo = DataManager.Instance.historyInfoItems;
for (int i = 0; i < currentInfo.Count; i++)
{
var data = currentInfo[i];
if (data.diagnosisId == currentDisData.id)
{
var newUI = GameObject.Instantiate(infoItem, content);
newUI.transform.Find("info").GetComponent<TextMeshProUGUI>().text =
"病史详情:" + data.peculiarity +
"\n详情信息" + data.detailInfo;
newUI.gameObject.SetActive(true);
}
}
}
#endregion
#region 咨询理由
private void GetAskReason()
{
dataURL = DataManager.Instance.currentHistoryChoose;
//dataURL = "http://122.112.171.137:85/api/diagnosis/event/base/info/list";
StartCoroutine(AskReason(dataURL));
}
IEnumerator AskReason(string url)
{
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error);
}
else
{
string receiveContent = request.downloadHandler.text;
byte[] datas = Encoding.UTF8.GetBytes(receiveContent);
receiveContent = Encoding.UTF8.GetString(datas, 0, datas.Length);
//JsonInfo jsonInfo = JsonMapper.ToObject<JsonInfo>(receiveContent);
DataParse.Instance.ParseAllAskReason(receiveContent);
}
}
private void OnGetAskReason(Message evt)
{
var currentInfo = DataManager.Instance.askItems;
for (int i = 0; i < currentInfo.Count; i++)
{
var data = currentInfo[i];
if (data.diagnosisId == currentDisData.id)
{
var newUI = GameObject.Instantiate(infoItem, content);
newUI.transform.Find("info").GetComponent<TextMeshProUGUI>().text =
"咨询理由:" + data.name +
"\n咨询时间" + data.time +
"\n过往史" + data.historySynopsis +
"\n创建时间" + data.createTime;
newUI.gameObject.SetActive(true);
}
}
}
#endregion
#region 个人资料
private void GetPeopleInfo()
{
dataURL = DataManager.Instance.currentHistoryChoose;
//dataURL = "http://122.112.171.137:85/api/diagnosis/patient/base/info/list";
StartCoroutine(People(dataURL));
}
IEnumerator People(string url)
{
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error);
}
else
{
string receiveContent = request.downloadHandler.text;
byte[] datas = Encoding.UTF8.GetBytes(receiveContent);
receiveContent = Encoding.UTF8.GetString(datas, 0, datas.Length);
//JsonInfo jsonInfo = JsonMapper.ToObject<JsonInfo>(receiveContent);
DataParse.Instance.ParseAllPeopleInfo(receiveContent);
}
}
private void OnGetPeopleInfo(Message evt)
{
var currentInfo = DataManager.Instance.rowitems2;
for (int i = 0; i < currentInfo.Count; i++)
{
var data = currentInfo[i];
if (string.IsNullOrEmpty(data.diagnosisId))
{
continue;
}
if (data.diagnosisId == currentDisData.id.ToString())
{
var newUI = GameObject.Instantiate(infoItem, content);
string sex = data.sex == 0 ? "男" : "女";
newUI.transform.Find("info").GetComponent<TextMeshProUGUI>().text =
"姓:" + data.familyName + " 名:" + data.name +
"\n性别" + sex +
"\n职业" + data.occupation +
"\n创建时间" + data.createTime +
"\n更新时间" + data.updateTime;
newUI.gameObject.SetActive(true);
}
}
}
#endregion
}