// maybe call one at a time - because of potential size issues?? (where to throttle this - client param?) internal static List <HiMessageFile> GetHiMessages(string facilityID) { List <HiMessageFile> hiMessageList = new List <HiMessageFile>(); try { if (ValidateRequestParameter(facilityID, 8, false)) { // Get a list of all uncollected message files for the passed facility hiMessageList = Gp2GpTransfer.GetUncollectedMessages(facilityID); // iterate through list adding the file to each object foreach (HiMessageFile mf in hiMessageList) { // add contents (don't delete file at this stage) mf.fileText = mf.GetMessageFromDisk(mf.messageFileName); // use Client to send ok message on receipt and then update DB and delete file } } } catch (Exception ex) { Log.Write("ERROR: " + ex.ToString(), LogLevel.ExceptionOnly); throw; } return(hiMessageList); }
internal static string PutMessageCollectedStatus(string gp2gpTransferID) { try { int dbKey = int.Parse(gp2gpTransferID); // get message file name HiMessageFile mf = new HiMessageFile(); mf.messageFileName = Gp2GpTransfer.GetMessageFileName(dbKey); if (string.IsNullOrEmpty(mf.messageFileName)) { Log.Write("ERROR: unable to identify Message File for ID = " + dbKey.ToString(), LogLevel.ExceptionOnly); } else { // delete message file from disk (if this can't be done, it's still been received - will to be reviewed by SysOp) if (!mf.DeleteMessageFromDisk(mf.messageFileName)) { Log.Write("ERROR: unable to delete collected file: " + mf.messageFileName, LogLevel.ExceptionOnly); } // update Collected Flag in DB (even if it can't be deleted - as it has been collected) Gp2GpTransfer.UpdateMessageCollectedStatus(dbKey); } } catch (Exception ex) { Log.Write("ERROR: " + ex.ToString(), LogLevel.ExceptionOnly); throw; } return("OK"); }
internal static bool PostHpiMessage(string fileName, string messageHeader, string replyToMessageID, string encryptedMessage) { try { // instantiate message file object and populated properties from header HiMessageFile mf = new HiMessageFile(messageHeader); mf.replyToMessageId = replyToMessageID; // message will be empty if this is a notification (hashed PID will be in replyToMessageID) if (!string.IsNullOrEmpty(encryptedMessage)) { // save file to disk and populate message file name and size properties mf.messageFileName = mf.SaveMessageToDisk(fileName, encryptedMessage); mf.fileSize = mf.GetFileSize(mf.messageFileName); } // record in Patients First DB - Gp2GpTransfer table Gp2GpTransfer.AddGp2GpTransfer(mf); } catch (Exception ex) { Log.Write("ERROR: " + ex.ToString(), LogLevel.ExceptionOnly); throw; } return(true); }