#pragma once #include #include "StringExtensions.h" namespace Incart::DeviceComplexCommands { class PatientSex { private: enum EPatientSex { Male, Female, Unknown }; EPatientSex m_sex; bool m_isEmplty; public: PatientSex() : PatientSex("") { } PatientSex(const std::string& text_) : m_sex(parseSex(text_)) , m_isEmplty(text_.empty()) { } std::string toLowerString() { if (m_isEmplty) { return ""; } if (m_sex == EPatientSex::Male) { return "м"; } if (m_sex == EPatientSex::Female) { return "ж"; } return "?"; } private: static EPatientSex parseSex(const std::string& text_) { if (text_.empty()) { return EPatientSex::Unknown; } if (Common::StringExtensions::isEqualsInsensitive(text_, "м") || Common::StringExtensions::isEqualsInsensitive(text_, "m")) { return EPatientSex::Male; } if (Common::StringExtensions::isEqualsInsensitive(text_, "ж") || Common::StringExtensions::isEqualsInsensitive(text_, "f")) { return EPatientSex::Female; } return EPatientSex::Unknown; } }; } // namespace Incart::DeviceComplexCommands