Look for OperationalStatus for the memory Health

When functional is false, health is critical.
When functional is true, health is ok.

Tested: Validator passes.
Set the dimm0 OperationalStatus to false, and see the health:
```
curl -k -H "X-Auth-Token: $token" -X GET https://${bmc}/redfish/v1/Systems/system/Memory/dimm0
{
  "Status": {
    "Health": "Critical",
    "State": "Enabled"
  }
}

Change-Id: Ifb7e4b5e6bfadd417122fda66ef3f6590ccc43b1
Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
Signed-off-by: George Liu <liuxiwei@ieisystem.com>
diff --git a/redfish-core/lib/memory.hpp b/redfish-core/lib/memory.hpp
index e9ceb7f..59b473d 100644
--- a/redfish-core/lib/memory.hpp
+++ b/redfish-core/lib/memory.hpp
@@ -429,6 +429,7 @@
     const std::string* sparePartNumber = nullptr;
     const std::string* model = nullptr;
     const std::string* locationCode = nullptr;
+    const bool* functional = nullptr;
 
     const bool success = sdbusplus::unpackPropertiesNoThrow(
         dbus_utils::UnpackErrorPrinter(), properties, "MemoryDataWidth",
@@ -441,7 +442,7 @@
         memoryConfiguredSpeedInMhz, "MemoryType", memoryType, "Channel",
         channel, "MemoryController", memoryController, "Slot", slot, "Socket",
         socket, "SparePartNumber", sparePartNumber, "Model", model,
-        "LocationCode", locationCode);
+        "LocationCode", locationCode, "Functional", functional);
 
     if (!success)
     {
@@ -487,6 +488,15 @@
             resource::State::Absent;
     }
 
+    if (functional != nullptr)
+    {
+        if (!*functional)
+        {
+            asyncResp->res.jsonValue[jsonPtr]["Status"]["Health"] =
+                resource::Health::Critical;
+        }
+    }
+
     if (memoryTotalWidth != nullptr)
     {
         asyncResp->res.jsonValue[jsonPtr]["BusWidthBits"] = *memoryTotalWidth;