Try something like this:
$IgnoreEmpty = "LeftDepartment,Arrival,Triage,Seen,Departure" -split ","
$credentials = Get-Credential -Message "Please Enter SharePoint Online credentials"
$Site = "https://my site collection"
Connect-PnPOnline -Url $Site -Credentials $credentials -UseWebLogin
$CustomerData = Import-Csv "C:\Users\my locaation\thefiletobeimported.csv" -Delimiter '|'
foreach ($Record in $CustomerData) {
# always populate these keys with whatever value is in the CSV
$val = @{
"Title" = $Record.'Patient';
"Attend_UID" = $Record.'Attend_UID';
"ModeOfArrival" = $Record.'ModeOfArrival';
"AllocatedStream" = $Record.'AllocatedStream';
"SourceOfAdmission" = $Record.'SourceOfAdmission';
"InitialComplaint" = $Record.'InitialComplaint';
"WaitMins" = $Record.'WaitMins';
"BreachStatus" = $Record.'BreachStatus';
"PresentingComplaint" = $Record.'PresentingComplaint';
"BreachNumber" = $Record.'BreachNumber';
"BreachReason" = $Record.'BreachReason';
"BedRequired" = $Record.'BedRequired';
"NHSNumber" = $Record.'NHSNumber';
"Disposal" = $Record.'AttendanceDisposalDescription';
"Validation" = $Record.'Validation';
"SecondaryReason" = $Record.'Secondary Reason';
"Comments" = $Record.'Comments';
"ValidatedBy" = $Record.'Validated By'
}
# only populate these keys if the CSV contains a value
$IgnoreEmpty |
ForEach-Object{
if ($record.$_.Length -gt 0){
$val[$_] = $record.$_
}
}
Add-PnPListItem -List "EDBreaches" -Values $val
}