но я не могу извлечь сообщение в кодировке Base 64.
Есть ли какие-либо способы извлечь растровое сообщение в формате Base 64?
Я могу декодировать строку, но мне нужна закодированная строка в правильном формате.
Как мне этого добиться?
Я попробовал следующий способ: цикл выполняется вечно после передачи закодированного значения в метод.
Пример сообщения HL7:
Код: Выделить всё
MSH|^~\&|xyz|abcd|||20240408201653||ORU^R01|10|P|2.3.1||||||UNICODE
PID|1||^^^^MR
PV1|1
OBR|1||129|00001^Automated Count^99MRC|||20240408150949|||||||||||||||||HM|NotValidated|||||||Service
OBX|1|IS|08001^Take Mode^99MRC||O||||||F
OBX|2|IS|08002^Blood Mode^99MRC||W||||||F
OBX|3|IS|08003^Test Mode^99MRC||CBC+DIFF+ESR||||||F
OBX|4|NM|751-8^NEU#^LN||5.32|10*9/L|2.00-7.00|N|||F
OBX|5|NM|731-0^LYM#^LN||3.92|10*9/L|0.80-4.00|N|||F
OBX|6|ED|15008^Bitmap One BMP^99MRC||^Image^BMP^Base64^Qk0OQgAAAAAAALYDAAAoAAAAlgAAAGkAAAABAAgAAAAAAAAAAADEDgAAxA4AAOAAAADgA=|||F
OBX|7|ED|15056^Bitmap two BMP^99MRC||^Image^BMP^Base64^Qk0OQgAAAAAAALYDAAAoAAAAlgAAAGkAAAABAAgAAAAAAAAAAADE=|||F
Код: Выделить всё
string hl7Message = File.ReadAllText(filePath);
PipeParser parser = new PipeParser();
IMessage message = parser.Parse(hl7Message.Trim());
ORU_R01 oRU_R01 = message as ORU_R01;
foreach (var observation in oRU_R01.PATIENT_RESULTs.FirstOrDefault()?.ORDER_OBSERVATIONs)
{
foreach (var obx in observation?.OBSERVATIONs)
{
if(obx.OBX.ValueType.Value == "ED")
{
string observationIdentifier = obx.OBX.ObservationIdentifier.Text.Value;
string enData = obx.OBX.GetObservationValue(0).Data.ToString();
string[] parts = enData.Split('^');
log("Value passed to the bitmap");
SaveBitmapFromBase64(parts[5], "C:\\temp\\bmpfile.bmp");
Updatetxtbx($"name:{observationIdentifier} Base64 Encoded Data: {enData}");
log("done");
}
}
}
public void SaveBitmapFromBase64(string base64, string filePath)
{
try
{
byte[] imageBytes = Convert.FromBase64String(base64);
using (MemoryStream ms = new MemoryStream(imageBytes))
{
Bitmap bitmap = new Bitmap(ms);
bitmap.Save(filePath, System.Drawing.Imaging.ImageFormat.Bmp);
log("Bitmap saved successfully.");
}
}
catch (Exception ex)
{
log("Error saving bitmap: " + ex.Message);
}
}
Код: Выделить всё
The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.
Подробнее здесь: https://stackoverflow.com/questions/783 ... ssage-in-c