private static LisResult ParseReadResultResponse(HttpResponseMessage webResponse)
        {
            if (webResponse == null)
            {
                return new LisResult { IsValid = false, Message = "Invalid webResponse" };
            }

            var stream = webResponse.GetResponseStream();
            if (stream == null)
            {
                return new LisResult { IsValid = false, Message = "Invalid stream" };
            }

            var imsxEnvelope = (imsx_POXEnvelopeType)ImsxResponseSerializer.Deserialize(stream);
            var imsxHeader = (imsx_ResponseHeaderInfoType) imsxEnvelope.imsx_POXHeader.Item;
            var imsxStatus = imsxHeader.imsx_statusInfo.imsx_codeMajor;

            if (imsxStatus != imsx_CodeMajorType.success)
            {
                return new LisResult { IsValid = false, Message = imsxHeader.imsx_statusInfo.imsx_description};
            }

            var imsxBody = (readResultResponse) imsxEnvelope.imsx_POXBody.Item;

            if (imsxBody?.result == null)
            {
                return new LisResult { Score = null, IsValid = true };
            }

            double result;
            if (double.TryParse(imsxBody.result.resultScore.textString, out result))
            {
                return new LisResult { Score = result, IsValid = true };
            }
            return new LisResult { Score = null, IsValid = true };
        }
        private static BasicResult ParsePostResultResponse(HttpResponseMessage webResponse)
        {
            if (webResponse == null) return new BasicResult(false, "Invalid webResponse");

            var stream = webResponse.GetResponseStream();
            if (stream == null) return new BasicResult(false, "Invalid stream");

            var imsxEnvelope = ImsxResponseSerializer.Deserialize(stream) as imsx_POXEnvelopeType;
            if (imsxEnvelope == null) return new BasicResult(false, "Invalid imsxEnvelope");

            var imsxHeader = imsxEnvelope.imsx_POXHeader.Item as imsx_ResponseHeaderInfoType;
            if (imsxHeader == null) return new BasicResult(false, "Invalid imsxHeader");

            var imsxStatus = imsxHeader.imsx_statusInfo.imsx_codeMajor;

            return new BasicResult(imsxStatus == imsx_CodeMajorType.success,
                imsxHeader.imsx_statusInfo.imsx_description);
        }