108 lines
12 KiB
PowerShell
108 lines
12 KiB
PowerShell
<#
|
|
OCTPDBA-662
|
|
|
|
This script will be used to run a query on every pharmacies and store the output in a CSV file
|
|
There will be 1 file per pharmacy generated by the script.
|
|
The CSV are overwritten on each execution of the script.
|
|
Each execution of the script starts from the 1st array $target entry.
|
|
|
|
If $create_concatenated is true, a file containing all the pharmacies will be create d at the end of the script.
|
|
#>
|
|
|
|
<#
|
|
to fetch the list of pharmacies to run the query against, run this query on HCIMON and copy the result to $target
|
|
|
|
USE [ControlCenter]
|
|
DECLARE @res VARCHAR(MAX)=''
|
|
|
|
SELECT @res = @res + ',"'+[s].[SE_DNS]+'"'
|
|
FROM [dbo].[Server] s
|
|
JOIN [dbo].[Entity] e ON [e].[EN_id] = [s].[SE_entity]
|
|
WHERE e.[EN_id] IN (
|
|
1, --sun
|
|
2, --ama
|
|
21 --cvi
|
|
)
|
|
AND [s].[SE_DNS] NOT LIKE '%REF____.%'
|
|
AND (
|
|
s.[SE_end_prod_date] IS NULL
|
|
OR s.[SE_end_prod_date] > CURRENT_TIMESTAMP
|
|
)
|
|
ORDER BY s.[SE_entity], [s].[SE_OU_code];
|
|
|
|
SELECT STUFF(@res,1,1,'') as OU_list
|
|
|
|
#>
|
|
|
|
#$target="sun001aps.sunstore.ch","sun002aps.sunstore.ch","sun003aps.sunstore.ch","sun011aps.sunstore.ch","sun099aps.sunstore.ch","sun100aps.sunstore.ch","sun102aps.sunstore.ch","sun103aps.sunstore.ch","sun111aps.sunstore.ch","sun115aps.sunstore.ch","sun121aps.sunstore.ch","sun131aps.sunstore.ch","sun135aps.sunstore.ch","sun141aps.sunstore.ch","sun143aps.sunstore.ch","sun151aps.sunstore.ch","sun161aps.sunstore.ch","sun171aps.sunstore.ch","sun181aps.sunstore.ch","sun185aps.sunstore.ch","sun186aps.sunstore.ch","sun191aps.sunstore.ch","sun201aps.sunstore.ch","sun211aps.sunstore.ch","sun221aps.sunstore.ch","sun231aps.sunstore.ch","sun241aps.sunstore.ch","sun245aps.sunstore.ch","sun251aps.sunstore.ch","sun261aps.sunstore.ch","sun267aps.sunstore.ch","sun291aps.sunstore.ch","sun301aps.sunstore.ch","sun311aps.sunstore.ch","sun321aps.sunstore.ch","sun331aps.sunstore.ch","sun341aps.sunstore.ch","sun351aps.sunstore.ch","sun361aps.sunstore.ch","sun371aps.sunstore.ch","sun381aps.sunstore.ch","sun391aps.sunstore.ch","sun401aps.sunstore.ch","sun421aps.sunstore.ch","sun431aps.sunstore.ch","sun441aps.sunstore.ch","sun451aps.sunstore.ch","sun461aps.sunstore.ch","sun471aps.sunstore.ch","sun481aps.sunstore.ch","sun491aps.sunstore.ch","sun501aps.sunstore.ch","sun511aps.sunstore.ch","sun521aps.sunstore.ch","sun531aps.sunstore.ch","sun541aps.sunstore.ch","sun550aps.sunstore.ch","sun551aps.sunstore.ch","sun571aps.sunstore.ch","sun591aps.sunstore.ch","sun601aps.sunstore.ch","sun621aps.sunstore.ch","sun645aps.sunstore.ch","sun651aps.sunstore.ch","sun661aps.sunstore.ch","sun671aps.sunstore.ch","sun691aps.sunstore.ch","sun721aps.sunstore.ch","sun731aps.sunstore.ch","sun741aps.sunstore.ch","sun751aps.sunstore.ch","sun761aps.sunstore.ch","sun771aps.sunstore.ch","sun781aps.sunstore.ch","sun791aps.sunstore.ch","sun797aps.sunstore.ch","sun811aps.sunstore.ch","sun841aps.sunstore.ch","sun851aps.sunstore.ch","sun871aps.sunstore.ch","sun891aps.sunstore.ch","sun892aps.sunstore.ch","sun893aps.sunstore.ch","sun894aps.sunstore.ch","sun895aps.sunstore.ch","sun896aps.sunstore.ch","sun919aps.sunstore.ch","sun950aps.sunstore.ch","sun952aps.sunstore.ch","sun953aps.sunstore.ch","ama001aps.amavita.ch","ama002aps.amavita.ch","ama003aps.amavita.ch","ama004aps.amavita.ch","ama006aps.amavita.ch","ama007aps.amavita.ch","ama008aps.amavita.ch","ama009aps.amavita.ch","ama011aps.amavita.ch","ama012aps.amavita.ch","ama013aps.amavita.ch","ama017aps.amavita.ch","ama018aps.amavita.ch","ama019aps.amavita.ch","ama021aps.amavita.ch","ama022aps.amavita.ch","ama023aps.amavita.ch","ama027aps.amavita.ch","ama028aps.amavita.ch","ama029aps.amavita.ch","ama030aps.amavita.ch","ama031aps.amavita.ch","ama032aps.amavita.ch","ama033aps.amavita.ch","ama034aps.amavita.ch","ama035aps.amavita.ch","ama036aps.amavita.ch","ama038aps.amavita.ch","ama039aps.amavita.ch","ama040aps.amavita.ch","ama041aps.amavita.ch","ama043aps.amavita.ch","ama044aps.amavita.ch","ama045aps.amavita.ch","ama046aps.amavita.ch","ama047aps.amavita.ch","ama048aps.amavita.ch","ama049aps.amavita.ch","ama050aps.amavita.ch","ama051aps.amavita.ch","ama052aps.amavita.ch","ama053aps.amavita.ch","ama055aps.amavita.ch","ama056aps.amavita.ch","ama058aps.amavita.ch","ama060aps.amavita.ch","ama062aps.amavita.ch","ama064aps.amavita.ch","ama065aps.amavita.ch","ama066aps.amavita.ch","ama067aps.amavita.ch","ama076aps.amavita.ch","ama079aps.amavita.ch","ama080aps.amavita.ch","ama081aps.amavita.ch","ama082aps.amavita.ch","ama083aps.amavita.ch","ama084aps.amavita.ch","ama085aps.amavita.ch","ama086aps.amavita.ch","ama087aps.amavita.ch","ama089aps.amavita.ch","ama090aps.amavita.ch","ama091aps.amavita.ch","ama093aps.amavita.ch","ama095aps.amavita.ch","ama096aps.amavita.ch","ama097aps.amavita.ch","ama201aps.amavita.ch","ama203aps.amavita.ch","ama204aps.amavita.ch","ama206aps.amavita.ch","ama207aps.amavita.ch","ama208aps.amavita.ch","ama209aps.amavita.ch","ama212aps.amavita.ch","ama214aps.amavita.ch","ama215aps.amavita.ch","ama216aps.amavita.ch","ama217aps.amavita.ch","ama219aps.amavita.ch","ama220aps.amavita.ch","ama221aps.amavita.ch","ama222aps.amavita.ch","ama223aps.amavita.ch","ama224aps.amavita.ch","ama225aps.amavita.ch","ama226aps.amavita.ch","ama227aps.amavita.ch","ama228aps.amavita.ch","ama230aps.amavita.ch","ama232aps.amavita.ch","ama233aps.amavita.ch","ama235aps.amavita.ch","ama236aps.amavita.ch","ama237aps.amavita.ch","ama238aps.amavita.ch","ama239aps.amavita.ch","ama240aps.amavita.ch","ama241aps.amavita.ch","ama242aps.amavita.ch","ama243aps.amavita.ch","ama244aps.amavita.ch","ama246aps.amavita.ch","ama247aps.amavita.ch","ama248aps.amavita.ch","ama249aps.amavita.ch","ama250aps.amavita.ch","ama251aps.amavita.ch","ama253aps.amavita.ch","ama254aps.amavita.ch","ama255aps.amavita.ch","ama256aps.amavita.ch","ama257aps.amavita.ch","ama259aps.amavita.ch","ama260aps.amavita.ch","ama262aps.amavita.ch","ama263aps.amavita.ch","ama264aps.amavita.ch","ama265aps.amavita.ch","ama266aps.amavita.ch","ama267aps.amavita.ch","ama269aps.amavita.ch","ama270aps.amavita.ch","ama271aps.amavita.ch","ama272aps.amavita.ch","ama273aps.amavita.ch","ama274aps.amavita.ch","ama276aps.amavita.ch","ama278aps.amavita.ch","ama279aps.amavita.ch","ama280aps.amavita.ch","ama282aps.amavita.ch","ama283aps.amavita.ch","ama287aps.amavita.ch","ama289aps.amavita.ch","ama292aps.amavita.ch","ama293aps.amavita.ch","ama294aps.amavita.ch","ama295aps.amavita.ch","ama296aps.amavita.ch","ama299aps.amavita.ch","ama300aps.amavita.ch","ama301aps.amavita.ch","ama302aps.amavita.ch","ama303aps.amavita.ch","ama304aps.amavita.ch","ama305aps.amavita.ch","ama306aps.amavita.ch","ama308aps.amavita.ch","ama311aps.amavita.ch","ama312aps.amavita.ch","ama315aps.amavita.ch","ama316aps.amavita.ch","ama319aps.amavita.ch","ama321aps.amavita.ch","ama322aps.amavita.ch","ama323aps.amavita.ch","ama324aps.amavita.ch","ama325aps.amavita.ch","ama331aps.amavita.ch","ama332aps.amavita.ch","ama333aps.amavita.ch","ama334aps.amavita.ch","ama335aps.amavita.ch","ama336aps.amavita.ch","ama337aps.amavita.ch","ama339aps.amavita.ch","ama341aps.amavita.ch","ama349aps.amavita.ch","ama449aps.amavita.ch","ama550aps.amavita.ch","ama551aps.amavita.ch","ama552aps.amavita.ch","ama553aps.amavita.ch","ama557aps.amavita.ch","ama558aps.amavita.ch","ama560aps.amavita.ch","ama561aps.amavita.ch","ama562aps.amavita.ch","ama563aps.amavita.ch","ama564aps.amavita.ch","ama601aps.amavita.ch","ama602aps.amavita.ch","ama603aps.amavita.ch","ama604aps.amavita.ch","ama605aps.amavita.ch","ama609aps.amavita.ch","ama611aps.amavita.ch","ama612aps.amavita.ch","ama613aps.amavita.ch","ama614aps.amavita.ch","ama621aps.amavita.ch","ama622aps.amavita.ch","ama623aps.amavita.ch","ama624aps.amavita.ch","ama625aps.amavita.ch","ama626aps.amavita.ch","ama701aps.amavita.ch","ama702aps.amavita.ch","ama703aps.amavita.ch","ama898aps.amavita.ch","ama900aps.amavita.ch","ama988aps.amavita.ch","ama989aps.amavita.ch","cvi243aps.coop-vitality.ch","cvi244aps.coop-vitality.ch","cvi245aps.coop-vitality.ch","cvi246aps.coop-vitality.ch","cvi247aps.coop-vitality.ch","cvi248aps.coop-vitality.ch","cvi250aps.coop-vitality.ch","cvi251aps.coop-vitality.ch","cvi252aps.coop-vitality.ch","cvi253aps.coop-vitality.ch","cvi254aps.coop-vitality.ch","cvi255aps.coop-vitality.ch","cvi256aps.coop-vitality.ch","cvi257aps.coop-vitality.ch","cvi259aps.coop-vitality.ch","cvi260aps.coop-vitality.ch","cvi261aps.coop-vitality.ch","cvi263aps.coop-vitality.ch","cvi264aps.coop-vitality.ch","cvi265aps.coop-vitality.ch","cvi266aps.coop-vitality.ch","cvi267aps.coop-vitality.ch","cvi268aps.coop-vitality.ch","cvi269aps.coop-vitality.ch","cvi271aps.coop-vitality.ch","cvi272aps.coop-vitality.ch","cvi273aps.coop-vitality.ch","cvi275aps.coop-vitality.ch","cvi501aps.coop-vitality.ch","cvi502aps.coop-vitality.ch","cvi505aps.coop-vitality.ch","cvi507aps.coop-vitality.ch","cvi508aps.coop-vitality.ch","cvi801aps.coop-vitality.ch","cvi803aps.coop-vitality.ch","cvi804aps.coop-vitality.ch","cvi805aps.coop-vitality.ch","cvi806aps.coop-vitality.ch","cvi807aps.coop-vitality.ch","cvi809aps.coop-vitality.ch","cvi810aps.coop-vitality.ch","cvi811aps.coop-vitality.ch","cvi812aps.coop-vitality.ch","cvi813aps.coop-vitality.ch","cvi814aps.coop-vitality.ch","cvi815aps.coop-vitality.ch","cvi816aps.coop-vitality.ch","cvi817aps.coop-vitality.ch","cvi818aps.coop-vitality.ch","cvi819aps.coop-vitality.ch","cvi820aps.coop-vitality.ch","cvi821aps.coop-vitality.ch","cvi823aps.coop-vitality.ch","cvi824aps.coop-vitality.ch","cvi825aps.coop-vitality.ch","cvi826aps.coop-vitality.ch","cvi828aps.coop-vitality.ch","cvi829aps.coop-vitality.ch","cvi830aps.coop-vitality.ch","cvi831aps.coop-vitality.ch","cvi832aps.coop-vitality.ch","cvi833aps.coop-vitality.ch","cvi834aps.coop-vitality.ch","cvi835aps.coop-vitality.ch","cvi836aps.coop-vitality.ch","cvi837aps.coop-vitality.ch","cvi838aps.coop-vitality.ch","cvi839aps.coop-vitality.ch","cvi840aps.coop-vitality.ch","cvi841aps.coop-vitality.ch","cvi842aps.coop-vitality.ch","cvi843aps.coop-vitality.ch","cvi844aps.coop-vitality.ch","cvi845aps.coop-vitality.ch","cvi846aps.coop-vitality.ch","cvi847aps.coop-vitality.ch","cvi848aps.coop-vitality.ch","cvi849aps.coop-vitality.ch","cvi851aps.coop-vitality.ch","cvi852aps.coop-vitality.ch","cvi853aps.coop-vitality.ch","cvi854aps.coop-vitality.ch","cvi855aps.coop-vitality.ch","cvi856aps.coop-vitality.ch","cvi858aps.coop-vitality.ch","cvi859aps.coop-vitality.ch","cvi862aps.coop-vitality.ch","cvi863aps.coop-vitality.ch","cvi864aps.coop-vitality.ch","cvi865aps.coop-vitality.ch","cvi866aps.coop-vitality.ch","cvi867aps.coop-vitality.ch","cvi868aps.coop-vitality.ch","cvi869aps.coop-vitality.ch"
|
|
$target="ama704aps","ama705aps","ama707aps","cvi503aps","cvi504aps","sun004aps","sun006aps","cvi506aps"
|
|
#$target="(local)"
|
|
#$target=$null
|
|
|
|
if((Test-Path d:\octpdba-662 -PathType Leaf) -ne $true){
|
|
$null = New-Item -ItemType Directory -Force -Path d:\octpdba-662
|
|
}
|
|
set-location "d:\octpdba-662"
|
|
|
|
$create_concatenated = $false
|
|
$glob_csv = ".\all_phcies.csv"
|
|
|
|
#remove global csv file if it exists
|
|
if(Test-Path $glob_csv -PathType Leaf){
|
|
Remove-Item $glob_csv
|
|
}
|
|
|
|
#fetch data
|
|
if($null -ne $target){
|
|
$target | ForEach-Object -ThrottleLimit 3 -Parallel {
|
|
#$target | ForEach-Object {
|
|
$instance = "$($_)\apssql"
|
|
$csv = "$($_).csv"
|
|
$query="
|
|
USE Arizona;
|
|
|
|
SELECT CONVERT(DATE, [LCL_value_date]) as LCL_value_date,
|
|
[ITK_key],
|
|
[ittx].[ITTX_description],
|
|
[LCL_calculation]
|
|
FROM [Arizona].[dbo].[LORE_calculation_log] WITH (NOLOCK)
|
|
JOIN [dbo].[Item_key] WITH (NOLOCK)
|
|
ON ITK_item = LCL_item
|
|
AND ITK_type = 1
|
|
JOIN [dbo].[Item] IT WITH (NOLOCK)
|
|
ON [IT].[Item_ID] = ITK_item
|
|
AND [IT].[IT_origin] = 1
|
|
JOIN [dbo].[Item_text] ittx WITH (NOLOCK)
|
|
ON [ittx].[ITTX_item] = ITK_item
|
|
AND [ittx].[ITTX_language] = 103
|
|
WHERE [LCL_value_date] >= DATEADD(yy, -2, GETDATE())
|
|
ORDER BY CONVERT(DATE, [LCL_value_date]) DESC,
|
|
[ITK_key];
|
|
"
|
|
|
|
if((Test-Path "$($_).zip") -eq $false){
|
|
Write-Output "Running query on $_"
|
|
Invoke-Sqlcmd -Database Arizona -ServerInstance $instance -Query $query -ConnectionTimeout 5 | Export-Csv -Path $csv -Delimiter ";" -NoTypeInformation
|
|
Compress-Archive -Path $csv -DestinationPath "$($_).zip"
|
|
Remove-Item $csv
|
|
#write-output $null >> "$($_).done"
|
|
write-output " $csv created."
|
|
}
|
|
else{
|
|
write-output "$_ already processed, skipping."
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#concatenate all csv in a big one
|
|
write-output ""
|
|
if($create_concatenated){
|
|
write-output "Appending all generated CSV in one file..."
|
|
Get-ChildItem . -Filter *.csv | ForEach-Object {
|
|
Import-Csv -path $_ | export-csv -Append -LiteralPath $glob_csv -NoTypeInformation
|
|
Write-Output " ...Appended $_ to $glob_csv"
|
|
}
|
|
}
|
|
write-output "Done."
|