Public/New-PatientDeviceNeedsCsv.ps1
<# .SYNOPSIS Create a new CSV file that contains new patient device needs. .DESCRIPTION The patient device needs .INPUTS None. You cannot pipe objects to New-PatientDeviceNeedsCs. .OUTPUTS The file name if there are new needs or $null. If created, the CSV file create will contain the following columns: FamilyName GivenName Needs DeliveryChannel TierOfService Preferences MRN City State Address PostalCode District Country HomePhone MobilePhone CdrId .PARAMETER Folder The folder to place the needs file. .LINK .NOTES The file name will be created in yyyy-MM-dd-hhmmss format #> function New-PatientDeviceNeedsCsv { [CmdletBinding()] [OutputType([String])] param( [Parameter(Mandatory = $false, Position = 0, ValueFromPipeline)] [ValidateNotNullOrEmpty()] [String] $Folder = "./temp", [Parameter(Mandatory = $false, Position = 1)] [ValidateNotNull()] [PSCustomObject] $Def ) begin { Write-Verbose "[$($MyInvocation.MyCommand.Name)] Function started" } end { Write-Verbose "[$($MyInvocation.MyCommand.Name)] Complete" } process { Write-Debug "[$($MyInvocation.MyCommand.Name)] PSBoundParameters: $($PSBoundParameters | Out-String)" New-Item -ItemType Directory -Force -Path $Folder | Out-Null if (-not $PSBoundParameters.ContainsKey('Def')) { $Def = Get-MetricDefinitions } $File = Join-Path -Path $Folder -ChildPath "$(Get-Date -f 'yyyy-MM-dd-hhmmss').csv" # Only retrieve the statuses of 'Active' and 'Pending - Activation' $patients = @(Get-Patients -Status "Active") + @(Get-Patients -Status "Pending - Activation") $needs = Get-NewPatientDeviceNeeds -Def $Def -Folder $Folder -Patients $patients if ($needs) { Write-Information "$(Get-Date -f 'hh:mm:ss') Found $($needs.length) new device need(s)" $needs | Select-Object -Property Site, FamilyName, GivenName, Needs, DeliveryChannel, TierOfService, Preferences, MRN, City, State, Address, PostalCode, District, Country, HomePhone, MobilePhone, CdrId | Export-Csv -Path $File -NoTypeInformation | Out-Null Write-Output $File } } } |