

damos
Members-
Content Count
19 -
Joined
-
Last visited
Community Reputation
0 NeutralRecent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
-
This is what happen when Delphi 12 started last Version ICS
-
I have to disagree with you General format on common versions of HL7 2.3....2.7 are standard VT+HL7Block+FS+CR , each HL7Block consist of HL7 records according the version each line end with CR \x0B MSH|^~\&|... PID|... PV1|... \x1C\x0D i have to read all the block that is ending with FS+CR (MIRTH OPERATION) and answer with ACk or NAK the HL7 message that is the flow Control I have also try with LineEnd=#13 i have attach simple project and simple Flow from HL7 client Socket.rar
-
I follow the example and Use procedure TForm6.WSocketServer1DataAvailable(Sender: TObject; ErrCode: Word); Var ReceivedData: string; AckMsg: string; begin if ErrCode <> 0 then Exit; with Sender as TWSocket do begin ReceivedData := ReceiveStr; ReceivedData := LeftStr(ReceivedData,Length(ReceivedData)-Length(LineEnd)); // remove EndOfLine DisplayMemo.Lines.Add('Line: '+ IntToStr(Length(ReceivedData)) +' '+ReceivedData); end; AckMsg := 'MSH|^~\&|RECEIVER|SENDER|ACK||' + FormatDateTime('YYYYMMDDHHNNSS', Now) + '||ACK|' + IntToStr(Random(1000000)) + '|P|2.3' + #13 + 'MSA|AA|' + 'MSG12345' + #13; end; Never get the message from Client can you give a simple example that line ends with FS+CR (#28#13) With Indy works Fine
-
Hi i am Testing ICS as HL7 Server on AvailDataAvailable i have wrote procedure TcpSrvForm.ClientDataAvailable( Sender : TObject; Error : Word); Var Client: TWSocketClient; Buffer: AnsiString; ReceivedData: string; AckMsg: string; Len: Integer; begin if Error <> 0 then begin Display('Socket Error: ', Error); Exit; end; Client := Sender as TWSocketClient; Len := Client.ReadCount; if Len <= 0 then Exit; SetLength(Buffer, Len); Client.Receive(@Buffer[1], Len); // Convert buffer to string and trim unnecessary spaces ReceivedData := Trim(String(Buffer)); // Ensure message ends with <CR> if (not ReceivedData.IsEmpty) and (Strutils.RightStr(ReceivedData,1)=#13) then begin Display('Received HL7 Message: '+ReceivedData); // Create HL7 Acknowledgment (ACK) AckMsg := 'MSH|^~\&|RECEIVER|SENDER|ACK||' + FormatDateTime('YYYYMMDDHHNNSS', Now) + '||ACK|' + IntToStr(Random(1000000)) + '|P|2.3' + #13 + 'MSA|AA|' + 'MSG12345' + #13; // Send ACK back to client Client.SendStr(#11+AckMsg+#28+#13); Display('Sent ACK: '+AckMsg); end else begin Display('Incomplete HL7 message received (waiting for <CR>)'); end; end; Each HL7 block has the following format #11+HL7Block+#28+#13 or VT +HL7Message +FS+CR Each HL7Block consist Messages ending with CR Example VT MSH|^~\&|OR-CO|MIRTH|LISSYSTEM||20191126132820||ADT^A04^ADT_A04|2653973|P|2.4+CR EVN|A01||||OR-CO|20191126132400+CR PID|||22522527||CCCCCCCCCC^VVVVVVVV^KKKKKKKK||19581003000000|M|||ΠΕΤΡΟΥ ΡΑΛΛΗ 3^^ΑΘΗΝΑ^^15121||2106127519||||||27014802733+CR NK1|1|^ΜΑΡΙΑ|MTH+CR PV1||E|392^102106001^0^392||||1068^SSSSSS^DDDDDD||||||||||||1-2611222|||||||||||||||||||||||||20191126132400+CR DG1|||D64.9^LLLLLLLLLLLL+CR IN1|||551OOOOOOOOOOOOOOO|||||||||||||||||||||||||||||||||||||||||||||11456652+CR VT+CR This is Working only When Client is disconnected never reach data from client Each message Block from Client has to be Acknowledgement by HL7 ACK message I have tested with LineEnd=#13 and LineEnd=#28#13
-
Thanks that is working
-
procedure OpenImageWithPaint3D(const FilePath: string); var StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; AppName: string; CreateOK: Boolean; begin // ShellExecute(0, 'open', 'ms-paint:', PChar(FilePath +' /ForceBootstrapPaint3D'), nil, SW_SHOWNORMAL); // ShellExecute(0, 'open', 'mspaint', PChar(FilePath), nil, SW_SHOWNORMAL); AppName := 'mspaint'; ZeroMemory(@StartupInfo, SizeOf(TStartupInfo)); StartupInfo.cb := SizeOf(TStartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := SW_SHOWNORMAL; CreateOK := CreateProcess(nil, PChar(AppName + ' ' + FilePath), nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo); if CreateOK then begin // Successfully created the process CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); end else begin // Failed to create the process MsgInformation('Failed to open the file with Paint 3D.'); end; end; This function is working for mspaint Paint 3D is a modern app, which doesn't use executables like older classic applications. With var AppName what i use ????
-
I am running ShellExecute(0, 'open', 'ms-paint:', PChar(FilePath), nil, SW_SHOWNORMAL) , Paint 3D is open but the file is missing ??? , with mspaint is working or other painting program What is the correct command ??? Thank you Vagelis Bekyros
-
Hi thank for answer the only way working is read and write options are two different approaches , each time you have to free your TInifle var when you switch between read and write when using MacOS platform
-
here is my in Splah Unit unit Splash; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,Common,rCommon, FMX.Objects, FMX.Edit, FMX.Controls.Presentation, FMX.StdCtrls,Inifiles,System.IOUtils; type TSplashform = class(TForm) SplashImage: TImage; Label1: TLabel; Label2: TLabel; lprogram2: TLabel; lprogram: TLabel; passwordedit: TEdit; usernameedit: TEdit; Backrect: TRectangle; procedure usernameeditKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); procedure passwordeditKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private server,Schema,port,database, conectstr,apath:string; Settings: TIniFile; public { Public declarations } end; var Splashform: TSplashform; implementation {$R *.fmx} uses mdata,fMain,System.DateUtils; procedure TSplashform.FormCreate(Sender: TObject); begin //PgTools:=Tstringlist.Create; apath:= TPath.Combine(TPath.GetDirectoryName(ParamStr(0)), 'Pgtools.ini'); {$IF Defined(MACOS) } apath:= StringReplace( apath,'MacOS','Resources/Startup',[rfReplaceAll, rfIgnoreCase]); {$ENDIF} Settings:= TIniFile.Create(apath); end; procedure TSplashform.FormDestroy(Sender: TObject); begin if Settings<> nil then Settings.Free; end; procedure TSplashform.FormShow(Sender: TObject); begin lprogram.text:=rCommon.sLogoprogram+' current version '+common.OraCurrentVersion; usernameedit.Text:=Settings.ReadString('Server','Username',''); end; procedure TSplashform.passwordeditKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); // var // s1,s2:string; begin if key=vkReturn then Begin server:= Settings.ReadString('Server','Server','localhost'); Schema:= Settings.ReadString('Server','Schema','lis'); port:= Settings.ReadString('Server','port','5432'); database:=Settings.ReadString('Server','database','postgres'); conectstr:=format(common.Connectstr,[server,database,Schema]) ; with dataform do Begin LisConnection.Port:=port.ToInteger; LisConnection.ConnectString:=conectstr; try LisConnection.Open; Mainform.ServerLb.Text:=format(rCommon.sUserConnection,[usernameedit.Text]); Mainform.ServerLb.FontColor:= TAlphaColorRec.Green; Common.CurrentUser:=usernameedit.Text; if Settings<> nil then Settings.Free; Settings:= TIniFile.Create(apath); try Settings.WriteString('Server','Username',Common.CurrentUser); Settings.WriteString('Server','Connection',DateToISO8601(NOW)); finally Settings.Free; end; Except On E:EXception do Mainform.ServerLb.Text:=E.Message; end; close; End; End; end; procedure TSplashform.usernameeditKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin if Key = vkReturn then begin passwordedit.SetFocus end; end; end.
-
here is the code without free server:= Settings.ReadString('Server','Server','localhost'); Schema:= Settings.ReadString('Server','Schema','lis'); port:= Settings.ReadString('Server','port','5432'); database:=Settings.ReadString('Server','database','postgres'); conectstr:=format(common.Connectstr,[server,database,Schema]) ; with dataform do Begin LisConnection.Port:=port.ToInteger; LisConnection.ConnectString:=conectstr; try LisConnection.Open; Mainform.ServerLb.Text:=format(rCommon.sUserConnection,[usernameedit.Text]); Mainform.ServerLb.FontColor:= TAlphaColorRec.Green; Common.CurrentUser:=usernameedit.Text; // if Settings<> nil then Settings.Free; // Settings:= TIniFile.Create(apath); // try Settings.WriteString('Server','Username',Common.CurrentUser); Settings.WriteString('Server','Connection',DateToISO8601(NOW)); // finally // Settings.Free; // end; Except On E:EXception do Mainform.ServerLb.Text:=E.Message; end; close; End; and the results from ini file without freeing and with freeing Connection= CurrentDatetime
-
Can Anyone share information about how to use a report Generator (Fast report or R Builder) inside a Context . Mars library is grate with many many samples inside , but for reporting (a very important issue on web applications) has no any example (The Author of Mars Mr Andrea Magni can help us how to start reporting with FastReport or RBuilder). Thank You Vagelis Bekyros
-
Thank you David the problem was not the path i free the Settings: TIniFile before a write to the sections if Settings<> nil then Settings.Free; Settings:= TIniFile.Create(apath); try Settings.WriteString('Server','Username',Common.CurrentUser); Settings.WriteString('Server','Connection',DateToISO8601(NOW)); finally Settings.Free; end; Now is working as you see
-
How to check is on Delphi Delphi deployment or on MacBook Pro Why this is workig TFile.WriteAllText(TPath.GetHomePath() + TPath.DirectorySeparatorChar + 'Sample.txt', 'Hi over there for current user '); on the same directory i see new file 'Sample.txt'
-
Hi David This is simple FMX Splash form (login form) before user start working with connected database (Postgres using Devart PgDac Components for Connection) All the init connections strings are stored in Pgtools.ini file on directory programs is running , but when deploy on MacOS i change the path as you see my project here is my code attached files , running on windows write settings is working. On MacBook Pro the software is running OK , logging is successfully after reading Pgtools.ini file settings (Cannot write) Splash.fmx Splash.pas