#include "stdafx.h" #include "DIOS.Dev.MechanicalMoudle.hpp" #include "DIOSDICOMInfo.h" using namespace DIOS::Dev; using namespace DIOS::Dev::Detail::Mechanical; namespace nsMech = DIOS::Dev::Detail::Mechanical; nsMech::MechanicalDevice::MechanicalDevice(std::shared_ptr EventCenter) :super(EventCenter) { m_EventCenter = EventCenter; m_Grid = 0; m_Mammo_AE = 0; m_Mammo_FT = 0; m_Mammo_PressureState = 0; m_Mammo_CompPressureDEC = 0; m_Mammo_Depress = 0; m_Mammo_MechAngle = 0.0f; m_Mammo_MechSecAngle = -1.0f; m_Mammo_MechHeight = 0.0f; m_Mammo_PressureValue = 0.0f; m_Mammo_AGD = 0.0f; m_Mammo_MAG = 0.0f; m_Mammo_CompressPaddle = "24x30"; m_InvalidPressureThreshold = 0; } nsMech::MechanicalDevice::~MechanicalDevice() { } void nsMech::MechanicalDevice::FireNotify(string key, unsigned int value) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%d", value); std::string str = szInfo; m_EventCenter->OnNotify(1, key, str);//(int)ATTRACTION_SET 2 } void nsMech::MechanicalDevice::FireNotify(string key, float value) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%.2f", value); std::string str = szInfo; m_EventCenter->OnNotify(1, key, str);//(int)ATTRACTION_SET 2 } void nsMech::MechanicalDevice::FireNotify(string key, string value) { std::string str = value; m_EventCenter->OnNotify(1, key, str);//(int)ATTRACTION_SET 2 } void nsMech::MechanicalDevice::Register() { auto Disp = &Dispatch; Disp->Action.Push("SetGrid", this, &nsMech::MechanicalDevice::JSSetGrid); Disp->Action.Push("SetAutoTracking", this, &nsMech::MechanicalDevice::JSSetAutoTracking); Disp->Action.Push("GetTomoResults", this, &nsMech::MechanicalDevice::JSGetTomoResults); Disp->Get.Push("GRID", this, &nsMech::MechanicalDevice::JSGetGrid); Disp->Get.Push("AE", this, &nsMech::MechanicalDevice::JSGetMammo_AE); Disp->Get.Push("Filter", this, &nsMech::MechanicalDevice::JSGetMammo_FT); Disp->Get.Push("Thickness", this, &nsMech::MechanicalDevice::JSGetMammo_PressureState); Disp->Get.Push("CompPressureDEC", this, &nsMech::MechanicalDevice::JSGetMammo_CompPressureDEC); Disp->Get.Push("Depress", this, &nsMech::MechanicalDevice::JSGetMammo_Depress); Disp->Get.Push("MechanicalAngle", this, &nsMech::MechanicalDevice::JSGetMammo_MechAngle); Disp->Get.Push("MechanicalSecAngle", this, &nsMech::MechanicalDevice::JSGetMammo_MechAngle); Disp->Get.Push("MechanicalHeight", this, &nsMech::MechanicalDevice::JSGetMammo_MechHeight); Disp->Get.Push("CompPressure", this, &nsMech::MechanicalDevice::JSGetMammo_PressureValue); Disp->Get.Push("AGD", this, &nsMech::MechanicalDevice::JSGetMammo_AGD); Disp->Get.Push("MAG", this, &nsMech::MechanicalDevice::JSGetMammo_MAG); Disp->Get.Push("CompressPaddle", this, &nsMech::MechanicalDevice::JSGetMammo_CompressPaddle); } bool nsMech::MechanicalDevice::Prepare() { Register(); return true; } std::string nsMech::MechanicalDevice::GetGUID() const { return MechanicalUnitType; } RET_STATUS nsMech::MechanicalDevice::JSSetGrid(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); unsigned int nValue = json[0]; return SetGrid(nValue); } RET_STATUS nsMech::MechanicalDevice::JSSetAutoTracking(std::string in, std::string& out) { ResDataObject json; json.decode(in.c_str()); unsigned int nValue = json[0]; return SetAutoTracking(nValue); } RET_STATUS nsMech::MechanicalDevice::JSGetTomoResults(std::string in, std::string& out) { ResDataObject json; ResDataObject resultAngle; ResDataObject resultHeight; RET_STATUS ret = GetTomoResults(resultAngle, resultHeight); if(ret != RET_STATUS::RET_SUCCEED) { return RET_STATUS::RET_FAILED; } json.add("P0", resultAngle); json.add("P1", resultHeight); out = json.encode(); return RET_STATUS::RET_SUCCEED; } RET_STATUS nsMech::MechanicalDevice::JSGetGrid(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%d", m_Grid); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS nsMech::MechanicalDevice::JSGetMammo_AE(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%d", m_Mammo_AE); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS nsMech::MechanicalDevice::JSGetMammo_FT(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%d", m_Mammo_FT); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS nsMech::MechanicalDevice::JSGetMammo_PressureState(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%d", m_Mammo_PressureState); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS nsMech::MechanicalDevice::JSGetMammo_CompPressureDEC(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%d", m_Mammo_CompPressureDEC); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS nsMech::MechanicalDevice::JSGetMammo_Depress(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%d", m_Mammo_Depress); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS nsMech::MechanicalDevice::JSGetMammo_MechAngle(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%f", m_Mammo_MechAngle); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS nsMech::MechanicalDevice::JSGetMammo_MechSecAngle(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%f", m_Mammo_MechSecAngle); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS nsMech::MechanicalDevice::JSGetMammo_MechHeight(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%f", m_Mammo_MechHeight); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS nsMech::MechanicalDevice::JSGetMammo_PressureValue(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%f", m_Mammo_PressureValue); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS nsMech::MechanicalDevice::JSGetMammo_AGD(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%f", m_Mammo_AGD); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS nsMech::MechanicalDevice::JSGetMammo_MAG(std::string& out) { char szInfo[64] = { 0 }; sprintf_s(szInfo, "%f", m_Mammo_MAG); out = szInfo; return RET_STATUS::RET_SUCCEED; } RET_STATUS nsMech::MechanicalDevice::JSGetMammo_CompressPaddle(std::string& out) { //char szInfo[64] = { 0 }; //sprintf_s(szInfo, "%s", m_Mammo_CompressPaddle); out = m_Mammo_CompressPaddle; return RET_STATUS::RET_SUCCEED; } void MechanicalDevice::UpdateGrid(unsigned int Value) { if (m_Grid != Value) { m_Grid = Value; FireNotify("GRID", Value); } } void MechanicalDevice::UpdateMammo_AE(unsigned int Value) { if (m_Mammo_AE != Value) { m_Mammo_AE = Value; FireNotify("AE", Value); } } void MechanicalDevice::UpdateMammo_FT(unsigned int Value) { if (m_Mammo_FT != Value) { m_Mammo_FT = Value; FireNotify("Filter", Value); if (m_Mammo_FT == 1) { FireNotify("StrFilter", "MO"); } else { FireNotify("StrFilter", "RH"); } } } void MechanicalDevice::UpdateMammo_PressureState(unsigned int Value) { if (m_Mammo_PressureState != Value) { m_Mammo_PressureState = Value; FireNotify("Thickness", Value); } } void MechanicalDevice::UpdateMammo_CompPressureDEC(unsigned int Value) { if (m_Mammo_CompPressureDEC != Value) { m_Mammo_CompPressureDEC = Value; FireNotify("CompPressureDEC", Value); } } void MechanicalDevice::UpdateMammo_Depress(unsigned int Value) { if (m_Mammo_Depress != Value) { m_Mammo_Depress = Value; FireNotify("Depress", Value); } } void MechanicalDevice::UpdateMammo_MechAngle(float Value) { if (m_Mammo_MechAngle != Value) { m_Mammo_MechAngle = Value; FireNotify("MechanicalAngle", Value); } UpdateMammo_MechSecAngle(0); } void MechanicalDevice::UpdateMammo_MechSecAngle(float Value) { if (m_Mammo_MechSecAngle != Value) { m_Mammo_MechSecAngle = Value; FireNotify("MechanicalSecAngle", Value); } } void MechanicalDevice::UpdateMammo_MechHeight(float Value) { if (m_Mammo_MechHeight != Value) { m_Mammo_MechHeight = Value; FireNotify("MechanicalHeight", Value); } } void MechanicalDevice::UpdateMammo_PressureValue(float Value) { if (m_Mammo_PressureValue != Value) { m_Mammo_PressureValue = Value; FireNotify("CompPressure", Value); } } void MechanicalDevice::UpdateMammo_AGD(float Value) { if (m_Mammo_AGD != Value) { m_Mammo_AGD = Value; //FireNotify("AGD", Value); } } void MechanicalDevice::UpdateMammo_MAG(float Value) { if (m_Mammo_MAG != Value) { m_Mammo_MAG = Value; FireNotify("MAG", Value); } } void MechanicalDevice::UpdateMammo_CompressPaddle(std::string Value) { if (m_Mammo_CompressPaddle != Value) { m_Mammo_CompressPaddle = Value; FireNotify("CompressPaddle", Value); } } void MechanicalDevice::ReportMessageToDicom() { FireNotify("GRID", m_Grid); FireNotify("AE", m_Mammo_AE); FireNotify("Filter", m_Mammo_FT); if (m_Mammo_FT == 1) { FireNotify("StrFilter", "MO"); } else { FireNotify("StrFilter", "RH"); } FireNotify("Thickness", m_Mammo_PressureState); FireNotify("CompPressureDEC", m_Mammo_CompPressureDEC); FireNotify("Depress", m_Mammo_Depress); FireNotify("MechanicalAngle", m_Mammo_MechAngle); FireNotify("MechanicalSecAngle", m_Mammo_MechSecAngle); FireNotify("MechanicalHeight", m_Mammo_MechHeight); FireNotify("CompPressure", m_Mammo_PressureValue); //FireNotify("AGD", m_Mammo_AGD); FireNotify("MAG", m_Mammo_MAG); FireNotify("CompressPaddle", m_Mammo_CompressPaddle); } void MechanicalDevice::UpdateMammo_PressureErrorValue(unsigned int Value) { if (m_InvalidPressureThreshold != Value) { m_InvalidPressureThreshold = Value; FireNotify("IneffectivePressureThreshold", m_InvalidPressureThreshold); } } RET_STATUS MechanicalDevice::SetGrid(unsigned int GridType) { return RET_STATUS::RET_SUCCEED; } RET_STATUS MechanicalDevice::SetAutoTracking(unsigned int nAutoTracking) { return RET_STATUS::RET_FAILED; } RET_STATUS MechanicalDevice::GetTomoResults(ResDataObject& resultAngle, ResDataObject& resultHeight) { return RET_STATUS::RET_SUCCEED; } unsigned int MechanicalDevice::GetGrid() { return m_Grid; } unsigned int MechanicalDevice::GetMammo_AE() { return m_Mammo_AE; } unsigned int MechanicalDevice::GetMammo_FT() { return m_Mammo_FT; } unsigned int MechanicalDevice::GetMammo_PressureState() { return m_Mammo_PressureState; } unsigned int MechanicalDevice::GetMammo_CompPressureDEC() { return m_Mammo_CompPressureDEC; } unsigned int MechanicalDevice::GetMammo_Depress() { return m_Mammo_Depress; } float MechanicalDevice::GetMammo_MechAngle() { return m_Mammo_MechAngle; } float MechanicalDevice::GetMammo_MechHeight() { return m_Mammo_MechHeight; } float MechanicalDevice::GetMammo_PressureValue() { return m_Mammo_PressureValue; } float MechanicalDevice::GetMammo_AGD() { return m_Mammo_AGD; } float MechanicalDevice::GetMammo_MAG() { return m_Mammo_MAG; }