Как извлечь и декодировать строку, закодированную в растровом изображении Base 64, из сообщения HL7 на C#?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как извлечь и декодировать строку, закодированную в растровом изображении Base 64, из сообщения HL7 на C#?

Сообщение Anonymous »

У меня есть приложение C#, в котором я получаю сообщение HL7 и использую библиотеку NHAPI для его анализа.
но я не могу извлечь сообщение в кодировке 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);
}
}
Мой метод Savebitmapfrombase64 выдает ошибку:

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»