Just to start from square one, I want to show what the ParseDateTime() expression will do. You are providing a datetime string value, and then telling the parseDateTime() what format that string value is in.
So if your initial value is 2023-06-01 it is basically 'yyyy-MM-dd' format. So your parseDateTime() will be parseDateTime('2023-06-01','en-us','yyyy-MM-dd') so it knows what value it is reading.
If your initial value was 06-2023-01 as in 'dd-yyyy-MM' then your parseDateTime() expression would be parseDateTime('06-2023-01','en-us','dd-yyyy-MM')
It then turns it into a legitimate datetime value. So if there is no time value in your original string, it will be converted to that date at midnight in ISO format. 2023-06-01T00:00:00.0000000
Then if you want to strip off the time that was just added, you can use the expression formatDateTime() which you use the new ISO datetime, and put the format you want which is 'dd-MM-yyyy' output.
Parse Date Time Sample
I made that quick example just so we know what the expression is trying to do.
Below I'm going to show what happens when the initial string is blank. We can use the empty() expression to check the string and then either leave it blank '' or use the parseDateTime() expression if it is not blank.
However the issue is the error on the next step after parseDateTime() where the formatdatetime() expression is used. Since it doesn't have anything like empty() helping it prevent an error, it will error and break the flow.
Empty ParseDateTime Expression
I made this example to show why you are getting an error in your concat() expression for the CurrentPlacAdmissionDate variable. The previous variable CurrentPlaceAdmisDateasText has an empty() expression to keep it from error, but when the variable CurrentPlacAdmissionDate tries to use concat() on the variable that is empty, then it will have an error.