Datenannahmestelle Addresse
This commit is contained in:
@@ -67,7 +67,7 @@
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<UseVSHostingProcess>true</UseVSHostingProcess>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<NoWarn>CS0659, CS0162, CS0168, CS0649, CS0219, CS0169, CS0414, CS0067</NoWarn>
|
||||
<NoWarn>CS0659, CS0162, CS0168, CS0649, CS0219, CS0169, CS0414, CS0067, CS0618</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
@@ -95,6 +95,7 @@
|
||||
</StartupObject>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Converter\AddressToStringConverter.cs" />
|
||||
<Compile Include="Converter\Features\AiConversationMessageSystemConverter.cs" />
|
||||
<Compile Include="Converter\NewlineConverter.cs" />
|
||||
<Compile Include="ServiceProxy\GeneratedAiEnhancedService.cs" />
|
||||
|
||||
@@ -83,6 +83,7 @@
|
||||
<conv:EnumTranslationConverter x:Key="EnumTranslationConverter" />
|
||||
<conv:TooltipTextConverter x:Key="TooltipTextConverter" />
|
||||
<conv:NewlineConverter x:Key="NewlineConverter" />
|
||||
<conv:AddressToStringConverter x:Key="AddressToStringConverter" />
|
||||
|
||||
<conv:ValidationConverter x:Key="ValidationConverter" />
|
||||
<conv:ValueConverterGroup x:Key="Validation2BrushConverter">
|
||||
|
||||
29
BeWo/Converter/AddressToStringConverter.cs
Normal file
29
BeWo/Converter/AddressToStringConverter.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using BeWo.ViewModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace BeWo.Converter
|
||||
{
|
||||
public class AddressToStringConverter : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
var vm = value as AddressVM;
|
||||
|
||||
if (vm is null)
|
||||
return null;
|
||||
|
||||
return vm.ToSingleLine();
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -590,7 +590,7 @@
|
||||
Width="10*"
|
||||
MinWidth="50"
|
||||
MaxWidth="200" />
|
||||
<ColumnDefinition Width="*" MinWidth="50" />
|
||||
<ColumnDefinition Width="*" MinWidth="100" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition
|
||||
Width="10*"
|
||||
@@ -636,11 +636,17 @@
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="2"
|
||||
Height="auto"
|
||||
Margin="10,3,10,3"
|
||||
VerticalAlignment="Center"
|
||||
Click="button_ik_ermitteln_click"
|
||||
IsEnabled="{Binding IsIKNumberValid}"
|
||||
Style="{StaticResource PrimaryButtonSmall}"
|
||||
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}">
|
||||
>>>
|
||||
<TextBlock Margin="3" TextAlignment="Center">
|
||||
Datenannahemstelle<LineBreak/>
|
||||
ermitteln >>>
|
||||
</TextBlock>
|
||||
</Button>
|
||||
|
||||
|
||||
@@ -730,11 +736,8 @@
|
||||
x:Name="txt_hausanschrift"
|
||||
Grid.Row="1"
|
||||
Grid.Column="4"
|
||||
Foreground="{Binding Path=IKDatenannahmestelle, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationBezDatenannahmestelle}}"
|
||||
IsEnabled="False"
|
||||
Text="{Binding Path=IKDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}"
|
||||
ToolTip="{Binding Path=IKDatenannahmestelle, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationBezDatenannahmestelle}}"
|
||||
ToolTipService.ShowOnDisabled="True"
|
||||
Text="{Binding Path=HausanschriftDatenannahmestelle, Converter={StaticResource AddressToStringConverter}, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
|
||||
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
|
||||
|
||||
<Label
|
||||
@@ -749,11 +752,8 @@
|
||||
x:Name="txt_postfachanschrift"
|
||||
Grid.Row="2"
|
||||
Grid.Column="4"
|
||||
Foreground="{Binding Path=IKDatenannahmestelle, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationBezDatenannahmestelle}}"
|
||||
IsEnabled="False"
|
||||
Text="{Binding Path=IKDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}"
|
||||
ToolTip="{Binding Path=IKDatenannahmestelle, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationBezDatenannahmestelle}}"
|
||||
ToolTipService.ShowOnDisabled="True"
|
||||
Text="{Binding Path=PostfachanschriftDatenannahmestelle, Converter={StaticResource AddressToStringConverter}, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
|
||||
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
|
||||
|
||||
<Label
|
||||
@@ -768,11 +768,8 @@
|
||||
x:Name="txt_großkundenanschrift"
|
||||
Grid.Row="3"
|
||||
Grid.Column="4"
|
||||
Foreground="{Binding Path=IKDatenannahmestelle, Converter={StaticResource Validation2BrushConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationBezDatenannahmestelle}}"
|
||||
IsEnabled="False"
|
||||
Text="{Binding Path=IKDatenannahmestelle, UpdateSourceTrigger=PropertyChanged}"
|
||||
ToolTip="{Binding Path=IKDatenannahmestelle, Converter={StaticResource Validation2TooltipConverter}, ConverterParameter={x:Static shared:ValidationType.OrganisationBezDatenannahmestelle}}"
|
||||
ToolTipService.ShowOnDisabled="True"
|
||||
Text="{Binding Path=GroßkundenanschriftDatenannahmestelle, Converter={StaticResource AddressToStringConverter}, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
|
||||
Visibility="{Binding Converter={StaticResource UserPermission2VisibleConverter}, ConverterParameter={x:Static core:SettingsKeys.AllowGkvAbrechnung}}" />
|
||||
|
||||
<Label
|
||||
|
||||
@@ -361,9 +361,7 @@ namespace BeWo.View.Detail
|
||||
return;
|
||||
}
|
||||
|
||||
ViewModel.BezDatenannahmestelle = response.BezDatenannahmestelle;
|
||||
ViewModel.IKKostentrager = response.IKKostentrager;
|
||||
ViewModel.IKDatenannahmestelle = response.IKDatenannahmestelle;
|
||||
ViewModel.UpdateByGetIKResponse(response);
|
||||
|
||||
CommandManager.InvalidateRequerySuggested();
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:controls="clr-namespace:BeWo.View.Controls"
|
||||
xmlns:doc="clr-namespace:BeWo.View.Document"
|
||||
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
|
||||
xmlns:dxa="http://schemas.devexpress.com/winfx/2008/xaml/accordion"
|
||||
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
|
||||
@@ -12,7 +13,6 @@
|
||||
xmlns:localView="clr-namespace:BeWo.View"
|
||||
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
|
||||
xmlns:master="clr-namespace:BeWo.View.Master"
|
||||
xmlns:doc="clr-namespace:BeWo.View.Document"
|
||||
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
|
||||
Width="Auto"
|
||||
Height="Auto"
|
||||
@@ -516,11 +516,22 @@
|
||||
dx:ThemeManager.ThemeName="Office2010Black"
|
||||
DefaultSorting="Name">
|
||||
<dxg:TreeListControl.Columns>
|
||||
<dxg:TreeListColumn AllowSorting="True" FieldName="Name" AllowEditing="False">
|
||||
<dxg:TreeListColumn
|
||||
AllowEditing="False"
|
||||
AllowSorting="True"
|
||||
FieldName="Name">
|
||||
<dxg:TreeListColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<dxe:TextEdit x:Name="PART_Editor" EditMode="InplaceActive" Text="{Binding Path=DataContext.RowData.Row.Name, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}, UpdateSourceTrigger=PropertyChanged}"
|
||||
AcceptsReturn="False" AcceptsTab="False" TextTrimming="WordEllipsis" TextWrapping="NoWrap" SelectAllOnGotFocus="True" SelectAllOnMouseUp="True" />
|
||||
<dxe:TextEdit
|
||||
x:Name="PART_Editor"
|
||||
AcceptsReturn="False"
|
||||
AcceptsTab="False"
|
||||
EditMode="InplaceActive"
|
||||
SelectAllOnGotFocus="True"
|
||||
SelectAllOnMouseUp="True"
|
||||
Text="{Binding Path=DataContext.RowData.Row.Name, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}, UpdateSourceTrigger=PropertyChanged}"
|
||||
TextTrimming="WordEllipsis"
|
||||
TextWrapping="NoWrap" />
|
||||
</DataTemplate>
|
||||
</dxg:TreeListColumn.CellTemplate>
|
||||
</dxg:TreeListColumn>
|
||||
@@ -529,12 +540,14 @@
|
||||
<dxg:TreeListView
|
||||
x:Name="TemplateTreeView"
|
||||
AllowEditing="True"
|
||||
AutoExpandOnDrag="True"
|
||||
AutoWidth="True"
|
||||
ContextMenu="{StaticResource templatecm}"
|
||||
FocusedRowChanged="TemplateTreeView_FocusedRowChanged"
|
||||
HorizontalScrollbarVisibility="Auto"
|
||||
KeyFieldName="{Binding DocumentTreeItemVM.DocTreeItemOid}"
|
||||
LostFocus="TemplateTreeView_LostFocus"
|
||||
NavigationStyle="Cell"
|
||||
NodeExpanding="templateTreeListView_NodeExpanding"
|
||||
ParentFieldName="Binding DocumentTreeItemVM.ParentOid"
|
||||
PreviewMouseLeftButtonDown="TemplateTreeView_PreviewMouseButtonDown"
|
||||
@@ -545,10 +558,8 @@
|
||||
ShowIndicator="False"
|
||||
ShowNodeImages="True"
|
||||
ShowVerticalLines="False"
|
||||
VerticalScrollbarVisibility="Auto"
|
||||
AutoExpandOnDrag="True"
|
||||
NavigationStyle="Cell"
|
||||
ShownEditor="TemplateTreeView_ShownEditor" />
|
||||
ShownEditor="TemplateTreeView_ShownEditor"
|
||||
VerticalScrollbarVisibility="Auto" />
|
||||
</dxg:TreeListControl.View>
|
||||
</dxg:TreeListControl>
|
||||
<!--
|
||||
@@ -619,11 +630,11 @@
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutGroup dxlc:LayoutControl.AllowHorizontalSizing="True">
|
||||
<GroupBox
|
||||
x:Name="GroupBoxTemplateList"
|
||||
Grid.ColumnSpan="2"
|
||||
Padding="5"
|
||||
Header=""
|
||||
Style="{StaticResource ObjectEditGroupBox}">
|
||||
x:Name="GroupBoxTemplateList"
|
||||
Grid.ColumnSpan="2"
|
||||
Padding="5"
|
||||
Header=""
|
||||
Style="{StaticResource ObjectEditGroupBox}">
|
||||
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
@@ -634,54 +645,54 @@
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<dxg:GridControl
|
||||
x:Name="datagrid_templates"
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Margin="2,3,5,5">
|
||||
x:Name="datagrid_templates"
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Margin="2,3,5,5">
|
||||
<dxg:GridControl.Columns>
|
||||
<dxg:GridColumn
|
||||
Width="24"
|
||||
FieldName="FileName"
|
||||
FixedWidth="True"
|
||||
Header=""
|
||||
ReadOnly="True">
|
||||
Width="24"
|
||||
FieldName="FileName"
|
||||
FixedWidth="True"
|
||||
Header=""
|
||||
ReadOnly="True">
|
||||
<dxg:GridColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Button
|
||||
Width="20"
|
||||
Height="20"
|
||||
Margin="1"
|
||||
VerticalAlignment="Center"
|
||||
Click="TemplateDeleteButton_Click"
|
||||
Content="r"
|
||||
FontFamily="Webdings" />
|
||||
Width="20"
|
||||
Height="20"
|
||||
Margin="1"
|
||||
VerticalAlignment="Center"
|
||||
Click="TemplateDeleteButton_Click"
|
||||
Content="r"
|
||||
FontFamily="Webdings" />
|
||||
</DataTemplate>
|
||||
</dxg:GridColumn.CellTemplate>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn
|
||||
Width="*"
|
||||
AllowEditing="False"
|
||||
FieldName="Name"
|
||||
Header="Name" />
|
||||
Width="*"
|
||||
AllowEditing="False"
|
||||
FieldName="Name"
|
||||
Header="Name" />
|
||||
<dxg:GridColumn
|
||||
Width="*"
|
||||
AllowEditing="False"
|
||||
FieldName="Beschreibung"
|
||||
Header="Beschreibung" />
|
||||
Width="*"
|
||||
AllowEditing="False"
|
||||
FieldName="Beschreibung"
|
||||
Header="Beschreibung" />
|
||||
<dxg:GridColumn
|
||||
Width="80"
|
||||
FieldName="FileEdit"
|
||||
FixedWidth="True"
|
||||
Header=""
|
||||
ReadOnly="True">
|
||||
Width="80"
|
||||
FieldName="FileEdit"
|
||||
FixedWidth="True"
|
||||
Header=""
|
||||
ReadOnly="True">
|
||||
<dxg:GridColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Button
|
||||
Width="75"
|
||||
Height="23"
|
||||
VerticalAlignment="Center"
|
||||
Click="EditTemplate_Click"
|
||||
Content="Bearbeiten" />
|
||||
Width="75"
|
||||
Height="23"
|
||||
VerticalAlignment="Center"
|
||||
Click="EditTemplate_Click"
|
||||
Content="Bearbeiten" />
|
||||
</DataTemplate>
|
||||
</dxg:GridColumn.CellTemplate>
|
||||
</dxg:GridColumn>
|
||||
@@ -705,13 +716,13 @@
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView
|
||||
x:Name="TemplateTableView"
|
||||
AutoWidth="false"
|
||||
NavigationStyle="Row"
|
||||
ShowGroupPanel="False"
|
||||
ShowGroupedColumns="false"
|
||||
ShowTotalSummary="False"
|
||||
RowDoubleClick="TemplateTableView_RowDoubleClick"/>
|
||||
x:Name="TemplateTableView"
|
||||
AutoWidth="false"
|
||||
NavigationStyle="Row"
|
||||
RowDoubleClick="TemplateTableView_RowDoubleClick"
|
||||
ShowGroupPanel="False"
|
||||
ShowGroupedColumns="false"
|
||||
ShowTotalSummary="False" />
|
||||
</dxg:GridControl.View>
|
||||
</dxg:GridControl>
|
||||
</Grid>
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BS.Shared.DataContracts;
|
||||
|
||||
namespace BeWo.ViewModel
|
||||
@@ -111,5 +113,37 @@ namespace BeWo.ViewModel
|
||||
|
||||
return pDataContract;
|
||||
}
|
||||
|
||||
public string ToSingleLine()
|
||||
{
|
||||
var parts = new List<string>
|
||||
{
|
||||
AddressLine1,
|
||||
AddressLine2,
|
||||
Street,
|
||||
PostalCode,
|
||||
Town,
|
||||
State,
|
||||
Country
|
||||
};
|
||||
|
||||
return string.Join(", ", parts.Where(p => !string.IsNullOrWhiteSpace(p)));
|
||||
}
|
||||
|
||||
internal override void UpdateByDataContract(AddressDC pDataContract)
|
||||
{
|
||||
AddressLine1 = pDataContract.AddressLine1;
|
||||
AddressLine2 = pDataContract.AddressLine2;
|
||||
Country = pDataContract.Country;
|
||||
L_Version = pDataContract.L_Version;
|
||||
Latitude = pDataContract.Latitude;
|
||||
Longitude = pDataContract.Longitude;
|
||||
PostalCode = pDataContract.PostalCode;
|
||||
State = pDataContract.State;
|
||||
Street = pDataContract.Street;
|
||||
Town = pDataContract.Town;
|
||||
|
||||
FirePropertyChangedItself();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ using BeWo.ViewModel.ListViewModel;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.GkvAbrechnung;
|
||||
|
||||
namespace BeWo.ViewModel
|
||||
{
|
||||
@@ -856,7 +857,7 @@ namespace BeWo.ViewModel
|
||||
get => _HausanschriftDatenannahmestelle;
|
||||
set
|
||||
{
|
||||
_GroßkundenanschriftDatenannahmestelle = value;
|
||||
_HausanschriftDatenannahmestelle = value;
|
||||
FirePropertyChanged(nameof(HausanschriftDatenannahmestelle));
|
||||
}
|
||||
}
|
||||
@@ -865,11 +866,10 @@ namespace BeWo.ViewModel
|
||||
get => _PostfachanschriftDatenannahmestelle;
|
||||
set
|
||||
{
|
||||
PostfachanschriftDatenannahmestelle = value;
|
||||
_PostfachanschriftDatenannahmestelle = value;
|
||||
FirePropertyChanged(nameof(PostfachanschriftDatenannahmestelle));
|
||||
}
|
||||
}
|
||||
|
||||
public AddressVM GroßkundenanschriftDatenannahmestelle
|
||||
{
|
||||
get => _GroßkundenanschriftDatenannahmestelle;
|
||||
@@ -1101,14 +1101,37 @@ namespace BeWo.ViewModel
|
||||
|
||||
if (HausanschriftDatenannahmestelle is object && HausanschriftDatenannahmestelle.IsDirty)
|
||||
pDataContract.HausanschriftDatenannahmestelle = HausanschriftDatenannahmestelle.CommitToDataContract();
|
||||
else
|
||||
pDataContract.HausanschriftDatenannahmestelle = null;
|
||||
|
||||
if (PostfachanschriftDatenannahmestelle is object && PostfachanschriftDatenannahmestelle.IsDirty)
|
||||
pDataContract.PostfachanschriftDatenannahmestelle = PostfachanschriftDatenannahmestelle.CommitToDataContract();
|
||||
else
|
||||
pDataContract.PostfachanschriftDatenannahmestelle = null;
|
||||
|
||||
if (GroßkundenanschriftDatenannahmestelle is object && GroßkundenanschriftDatenannahmestelle.IsDirty)
|
||||
pDataContract.GroßkundenanschriftDatenannahmestelle = GroßkundenanschriftDatenannahmestelle.CommitToDataContract();
|
||||
else
|
||||
pDataContract.GroßkundenanschriftDatenannahmestelle = null;
|
||||
|
||||
return pDataContract;
|
||||
}
|
||||
|
||||
internal override void UpdateByDataContract(OrganisationDC pDataContract)
|
||||
{
|
||||
base.UpdateByDataContract(pDataContract);
|
||||
}
|
||||
|
||||
public void UpdateByGetIKResponse(GkvAbrechnungGetIKResponseDC response)
|
||||
{
|
||||
BezDatenannahmestelle = response.BezDatenannahmestelle;
|
||||
IKKostentrager = response.IKKostentrager;
|
||||
IKDatenannahmestelle = response.IKDatenannahmestelle;
|
||||
|
||||
HausanschriftDatenannahmestelle.UpdateByDataContract(response.Hausanschrift);
|
||||
FirePropertyChanged(nameof(HausanschriftDatenannahmestelle));
|
||||
PostfachanschriftDatenannahmestelle.UpdateByDataContract(response.Postfachanschrift);
|
||||
GroßkundenanschriftDatenannahmestelle.UpdateByDataContract(response.Großkundenanschrift);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -82,12 +82,14 @@
|
||||
<Compile Include="Models\Daten\Datenelementgruppe.cs" />
|
||||
<Compile Include="Models\Infos\InfoParameterInvoiceItem.cs" />
|
||||
<Compile Include="Models\IRowable.cs" />
|
||||
<Compile Include="Models\KTDSummary.cs" />
|
||||
<Compile Include="Models\Nachrichten\Nachricht.cs" />
|
||||
<Compile Include="Models\Nachrichten\NachrichtKTD.cs" />
|
||||
<Compile Include="Models\Nachrichten\NachrichtSLGA.cs" />
|
||||
<Compile Include="Models\Nachrichten\NachrichtSLLA.cs" />
|
||||
<Compile Include="Models\Schlüssels\Schlüssel.cs" />
|
||||
<Compile Include="Models\Schlüssels\SchlüsselAbrechnungscode.cs" />
|
||||
<Compile Include="Models\Schlüssels\SchlüsselArtDerAnschrift.cs" />
|
||||
<Compile Include="Models\Schlüssels\SchlüsselArtDerGenehmigung.cs" />
|
||||
<Compile Include="Models\Schlüssels\SchlüsselArtDerVerknüpfung.cs" />
|
||||
<Compile Include="Models\Schlüssels\SchlüsselBVG.cs" />
|
||||
@@ -108,6 +110,7 @@
|
||||
<Compile Include="Models\Schlüssels\SchlüsselVerarbeitungskennzeichen.cs" />
|
||||
<Compile Include="Models\Schlüssels\SchlüsselVerordnungsbesonderheiten.cs" />
|
||||
<Compile Include="Models\Schlüssels\SchlüsselZuzahlung.cs" />
|
||||
<Compile Include="Models\Segmente\KTD\SegmentKTDANS.cs" />
|
||||
<Compile Include="Models\Segmente\KTD\SegmentKTD.cs" />
|
||||
<Compile Include="Models\Segmente\KTD\SegmentKTDFKT.cs" />
|
||||
<Compile Include="Models\Segmente\KTD\SegmentKTDIDK.cs" />
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using BS.Shared.Exceptions;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Invoicing.GkvAbrechnung;
|
||||
using BS.Shared.Exceptions;
|
||||
using Dakota.Models;
|
||||
using Dakota.Models.Nachrichten;
|
||||
using Dakota.Models.Segmente.KTD;
|
||||
@@ -12,173 +14,221 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Logic
|
||||
{
|
||||
public class DakotaKTDReader
|
||||
{
|
||||
private static readonly string[] accept = new string[] { "UNH", "IDK", "FKT", "VKG", "UNT"};
|
||||
public class DakotaKTDReader
|
||||
{
|
||||
private static readonly string[] accept = new string[] { "UNH", "IDK", "FKT", "VKG", "UNT", "ANS" };
|
||||
|
||||
internal Dictionary<string, Dictionary<string, NachrichtKTD>> FileDictionary { get; set; }
|
||||
= new Dictionary<string, Dictionary<string, NachrichtKTD>>();
|
||||
internal Dictionary<string, Dictionary<string, NachrichtKTD>> FileDictionary { get; set; }
|
||||
= new Dictionary<string, Dictionary<string, NachrichtKTD>>();
|
||||
|
||||
public DakotaKTDReader(string ktd_folder_path)
|
||||
{
|
||||
var dir = new DirectoryInfo(ktd_folder_path);
|
||||
public DakotaKTDReader(string ktd_folder_path)
|
||||
{
|
||||
var dir = new DirectoryInfo(ktd_folder_path);
|
||||
|
||||
var files = dir.GetFiles();
|
||||
var files = dir.GetFiles();
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
var file_lines = File.ReadAllLines(file.FullName);
|
||||
foreach (var file in files)
|
||||
{
|
||||
var file_lines = File.ReadAllLines(file.FullName);
|
||||
|
||||
foo(file.Name, file_lines);
|
||||
}
|
||||
}
|
||||
foo(file.Name, file_lines);
|
||||
}
|
||||
}
|
||||
|
||||
public int GetFileCount() => FileDictionary.Count();
|
||||
public int GetAllFileEntryCount() => FileDictionary.Sum(x => x.Value.Count);
|
||||
public int GetFileCount() => FileDictionary.Count();
|
||||
public int GetAllFileEntryCount() => FileDictionary.Sum(x => x.Value.Count);
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ikkrankenkasse"></param>
|
||||
/// <param name="abrechnungscode"></param>
|
||||
/// <param name="tarifkennzeichen"></param>
|
||||
/// <returns>Item1:Datenannahmestelle -
|
||||
/// Item2:Kostenträger -
|
||||
/// Item3:Krankenkasse</returns>
|
||||
public Tuple<string, string, string, string> Resolve(string ikkrankenkasse, string abrechnungscode, string tarifkennzeichen)
|
||||
{
|
||||
foreach (var kv in FileDictionary)
|
||||
{
|
||||
var dict = kv.Value;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ikkrankenkasse"></param>
|
||||
/// <param name="abrechnungscode"></param>
|
||||
/// <param name="tarifkennzeichen"></param>
|
||||
/// <returns>Item1:Datenannahmestelle -
|
||||
/// Item2:Kostenträger -
|
||||
/// Item3:Krankenkasse</returns>
|
||||
public GkvKostentragerdateiSummary Resolve(string ikkrankenkasse, string abrechnungscode, string tarifkennzeichen)
|
||||
{
|
||||
foreach (var kv in FileDictionary)
|
||||
{
|
||||
var dict = kv.Value;
|
||||
|
||||
var search = GetIKNummern(dict, ikkrankenkasse, abrechnungscode, tarifkennzeichen);
|
||||
var search = GetIKNummern(dict, ikkrankenkasse, abrechnungscode, tarifkennzeichen);
|
||||
|
||||
if (search is object)
|
||||
if (search is object)
|
||||
{
|
||||
var datenannahmestelle = search.Item1;
|
||||
var datenannahmestelle = search.Item1;
|
||||
var nachricht = dict[datenannahmestelle];
|
||||
|
||||
var bez = dict[datenannahmestelle].SegmentIDK.Kurzbezeichnung;
|
||||
var bez = nachricht.SegmentIDK.Kurzbezeichnung;
|
||||
|
||||
return new Tuple<string, string, string, string>(datenannahmestelle, search.Item2, search.Item3, bez);
|
||||
}
|
||||
}
|
||||
var sum = new GkvKostentragerdateiSummary()
|
||||
{
|
||||
BezDatenannahmestelle = bez,
|
||||
IKDatenannahmestelle = datenannahmestelle,
|
||||
IKKostentrager = search.Item2,
|
||||
IKKrankenkasse = search.Item3
|
||||
};
|
||||
|
||||
return null;
|
||||
}
|
||||
foreach (var seg_ans in nachricht.SemgenteANS)
|
||||
{
|
||||
var address = GetAddress(seg_ans);
|
||||
|
||||
private Tuple<string, string, string> GetIKNummern(Dictionary<string, NachrichtKTD> dict, string ikkrankenkasse, string abrechnungscode, string tarifkennzeichen, string kostentrager = null)
|
||||
{
|
||||
if (kostentrager is null)
|
||||
kostentrager = ikkrankenkasse;
|
||||
if (seg_ans.ArtDerAnschrift == Models.Schlüssels.SchlüsselArtDerAnschrift.Großkundenanschrift)
|
||||
{
|
||||
sum.Großkundenanschrift = address;
|
||||
}
|
||||
else if(seg_ans.ArtDerAnschrift == Models.Schlüssels.SchlüsselArtDerAnschrift.Postfachanschrift)
|
||||
{
|
||||
sum.Postfachanschrift = address;
|
||||
}
|
||||
else if(seg_ans.ArtDerAnschrift == Models.Schlüssels.SchlüsselArtDerAnschrift.Hausanschrift)
|
||||
{
|
||||
sum.Hausanschrift = address;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
var search = dict.SingleOrDefault(kv => kv.Key == kostentrager).Value;
|
||||
return sum;
|
||||
}
|
||||
}
|
||||
|
||||
// Hat keinen Verweis auf eine KK gefunden
|
||||
if (search is null)
|
||||
return null;
|
||||
return null;
|
||||
}
|
||||
|
||||
var verweis = search.SegmentVKG.FirstOrDefault(x => x.ArtDerVerknüpfung == Models.Schlüssels.SchlüsselArtDerVerknüpfung.Kostentrager);
|
||||
private Tuple<string, string, string> GetIKNummern(Dictionary<string, NachrichtKTD> dict, string ikkrankenkasse, string abrechnungscode, string tarifkennzeichen, string kostentrager = null)
|
||||
{
|
||||
if (kostentrager is null)
|
||||
kostentrager = ikkrankenkasse;
|
||||
|
||||
// Hat Verweis auf weiteren Kostenträger gefunden
|
||||
if (verweis is object && verweis.IKVerknüpfungspartners != kostentrager)
|
||||
return GetIKNummern(dict, ikkrankenkasse, abrechnungscode, tarifkennzeichen, verweis.IKVerknüpfungspartners);
|
||||
var search = dict.SingleOrDefault(kv => kv.Key == kostentrager).Value;
|
||||
|
||||
var datenannahmestellen = search.SegmentVKG
|
||||
.Where(x => x.ArtDerVerknüpfung == Models.Schlüssels.SchlüsselArtDerVerknüpfung.DatenannahmestelleMitEntschlusselungsbefugnis)
|
||||
.ToList();
|
||||
// Hat keinen Verweis auf eine KK gefunden
|
||||
if (search is null)
|
||||
return null;
|
||||
|
||||
// Hat keinen Verweis auf Kostenträger oder Datenannahmestelle gefunden
|
||||
if (datenannahmestellen is null || !datenannahmestellen.Any())
|
||||
return null;
|
||||
var verweis = search.SegmentVKG.FirstOrDefault(x => x.ArtDerVerknüpfung == Models.Schlüssels.SchlüsselArtDerVerknüpfung.Kostentrager);
|
||||
|
||||
if (datenannahmestellen.Count() == 1)
|
||||
return GetIKNummern(datenannahmestellen.First(), kostentrager, ikkrankenkasse);
|
||||
// Hat Verweis auf weiteren Kostenträger gefunden
|
||||
if (verweis is object && verweis.IKVerknüpfungspartners != kostentrager)
|
||||
return GetIKNummern(dict, ikkrankenkasse, abrechnungscode, tarifkennzeichen, verweis.IKVerknüpfungspartners);
|
||||
|
||||
// Abrechnungscode "69" <=> Sozio
|
||||
var datenannahmestellen_2 = datenannahmestellen
|
||||
.Where(x => x.Abrechnungscode == abrechnungscode)
|
||||
.ToList();
|
||||
var datenannahmestellen = search.SegmentVKG
|
||||
.Where(x => x.ArtDerVerknüpfung == Models.Schlüssels.SchlüsselArtDerVerknüpfung.DatenannahmestelleMitEntschlusselungsbefugnis)
|
||||
.ToList();
|
||||
|
||||
if (datenannahmestellen_2.Count() == 1)
|
||||
return GetIKNummern(datenannahmestellen_2.First(), kostentrager, ikkrankenkasse);
|
||||
// Hat keinen Verweis auf Kostenträger oder Datenannahmestelle gefunden
|
||||
if (datenannahmestellen is null || !datenannahmestellen.Any())
|
||||
return null;
|
||||
|
||||
// Tarifkennzeichen
|
||||
var datenannahmestellen_3 = datenannahmestellen_2
|
||||
.Where(x => x.Tarifkennzeichen == tarifkennzeichen)
|
||||
.ToList();
|
||||
if (datenannahmestellen.Count() == 1)
|
||||
return GetIKNummern(datenannahmestellen.First(), kostentrager, ikkrankenkasse);
|
||||
|
||||
if (datenannahmestellen_3.Count() == 1)
|
||||
return GetIKNummern(datenannahmestellen_3.First(), kostentrager, ikkrankenkasse);
|
||||
// Abrechnungscode "69" <=> Sozio
|
||||
var datenannahmestellen_2 = datenannahmestellen
|
||||
.Where(x => x.Abrechnungscode == abrechnungscode)
|
||||
.ToList();
|
||||
|
||||
// ArtDesÜbermittlungsmediums "1" <=> Datenfernübertragung
|
||||
var filter_list = datenannahmestellen_3;
|
||||
if (datenannahmestellen_2.Count() == 1)
|
||||
return GetIKNummern(datenannahmestellen_2.First(), kostentrager, ikkrankenkasse);
|
||||
|
||||
if(!filter_list.Any())
|
||||
filter_list = datenannahmestellen_2;
|
||||
// Tarifkennzeichen
|
||||
var datenannahmestellen_3 = datenannahmestellen_2
|
||||
.Where(x => x.Tarifkennzeichen == tarifkennzeichen)
|
||||
.ToList();
|
||||
|
||||
if (!filter_list.Any())
|
||||
filter_list = datenannahmestellen;
|
||||
if (datenannahmestellen_3.Count() == 1)
|
||||
return GetIKNummern(datenannahmestellen_3.First(), kostentrager, ikkrankenkasse);
|
||||
|
||||
filter_list = filter_list
|
||||
.Where(x => x.ArtDesÜbermittlungsmediums == "1")
|
||||
.ToList();
|
||||
// ArtDesÜbermittlungsmediums "1" <=> Datenfernübertragung
|
||||
var filter_list = datenannahmestellen_3;
|
||||
|
||||
if (filter_list.Count() == 1)
|
||||
return GetIKNummern(filter_list.First(), kostentrager, ikkrankenkasse);
|
||||
if (!filter_list.Any())
|
||||
filter_list = datenannahmestellen_2;
|
||||
|
||||
return null;
|
||||
}
|
||||
if (!filter_list.Any())
|
||||
filter_list = datenannahmestellen;
|
||||
|
||||
private Tuple<string, string, string> GetIKNummern(SegmentKTDVKG vkg, string kostentrager, string ikkrankenkasse)
|
||||
{
|
||||
return new Tuple<string, string, string>(vkg.IKVerknüpfungspartners, kostentrager, ikkrankenkasse);
|
||||
}
|
||||
filter_list = filter_list
|
||||
.Where(x => x.ArtDesÜbermittlungsmediums == "1")
|
||||
.ToList();
|
||||
|
||||
private void foo(string filename, string[] lines)
|
||||
{
|
||||
var length = lines.Length;
|
||||
var dict = new Dictionary<string, NachrichtKTD>();
|
||||
if (filter_list.Count() == 1)
|
||||
return GetIKNummern(filter_list.First(), kostentrager, ikkrankenkasse);
|
||||
|
||||
FileDictionary.Add(filename, dict);
|
||||
return null;
|
||||
}
|
||||
|
||||
Queue<string> queue = new Queue<string>();
|
||||
int first_line = 0;
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
var line = lines[i];
|
||||
private Tuple<string, string, string> GetIKNummern(SegmentKTDVKG vkg, string kostentrager, string ikkrankenkasse)
|
||||
{
|
||||
return new Tuple<string, string, string>(vkg.IKVerknüpfungspartners, kostentrager, ikkrankenkasse);
|
||||
}
|
||||
|
||||
var type = GetType(line);
|
||||
private AddressDC GetAddress(SegmentKTDANS segment)
|
||||
{
|
||||
var address = new AddressDC();
|
||||
|
||||
if (type is null)
|
||||
continue;
|
||||
address.Street = clear(segment.StraßeHausnummerOderPostfach);
|
||||
address.Town = clear(segment.Ort);
|
||||
address.PostalCode = clear(segment.Postleitzahl);
|
||||
|
||||
if (type == "UNH")
|
||||
{
|
||||
first_line = i;
|
||||
}
|
||||
else if (type == "UNT")
|
||||
{
|
||||
var nachricht = NachrichtKTD.Parse(queue.ToArray(), filename, first_line);
|
||||
return address;
|
||||
}
|
||||
|
||||
if (dict.ContainsKey(nachricht.IKNummer))
|
||||
throw new Exception($"Beinhaltet Key bereits: {nachricht.IKNummer} in {filename} - l {first_line}");
|
||||
private string clear(string str)
|
||||
{
|
||||
string asciiOnly = new string(str.Where(c => c <= 127).ToArray());
|
||||
return asciiOnly;
|
||||
}
|
||||
|
||||
dict.Add(nachricht.IKNummer, nachricht);
|
||||
private void foo(string filename, string[] lines)
|
||||
{
|
||||
var length = lines.Length;
|
||||
var dict = new Dictionary<string, NachrichtKTD>();
|
||||
|
||||
queue.Clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
queue.Enqueue(line);
|
||||
}
|
||||
}
|
||||
}
|
||||
FileDictionary.Add(filename, dict);
|
||||
|
||||
private string GetType(string line)
|
||||
{
|
||||
var type = line.Substring(0, 3);
|
||||
Queue<string> queue = new Queue<string>();
|
||||
int first_line = 0;
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
var line = lines[i];
|
||||
|
||||
return accept.Contains(type) ? type : null;
|
||||
}
|
||||
}
|
||||
var type = GetType(line);
|
||||
|
||||
if (type is null)
|
||||
continue;
|
||||
|
||||
if (type == "UNH")
|
||||
{
|
||||
first_line = i;
|
||||
}
|
||||
else if (type == "UNT")
|
||||
{
|
||||
var nachricht = NachrichtKTD.Parse(queue.ToArray(), filename, first_line);
|
||||
|
||||
if (dict.ContainsKey(nachricht.IKNummer))
|
||||
throw new Exception($"Beinhaltet Key bereits: {nachricht.IKNummer} in {filename} - l {first_line}");
|
||||
|
||||
dict.Add(nachricht.IKNummer, nachricht);
|
||||
|
||||
queue.Clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
queue.Enqueue(line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private string GetType(string line)
|
||||
{
|
||||
var type = line.Substring(0, 3);
|
||||
|
||||
return accept.Contains(type) ? type : null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
16
Dakota/Models/KTDSummary.cs
Normal file
16
Dakota/Models/KTDSummary.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using Dakota.Models.Nachrichten;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models
|
||||
{
|
||||
internal class KTDSummary
|
||||
{
|
||||
public NachrichtKTD Krankenkasse { get; set; }
|
||||
public NachrichtKTD Kostenträger { get; set; }
|
||||
public NachrichtKTD Datenannahmestelle { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,42 +1,40 @@
|
||||
using Dakota.Models.Segmente;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Dakota.Models.Segmente;
|
||||
|
||||
namespace Dakota.Models.Nachrichten
|
||||
{
|
||||
internal abstract class Nachricht : IRowable
|
||||
{
|
||||
public abstract List<Segment> GetAllSegments();
|
||||
internal abstract class Nachricht : IRowable
|
||||
{
|
||||
public abstract List<Segment> GetAllSegments();
|
||||
|
||||
public List<Segment> GetSegments()
|
||||
{
|
||||
return GetAllSegments().Where(x => !x.ShouldSkip()).ToList();
|
||||
}
|
||||
public List<Segment> GetSegments()
|
||||
{
|
||||
return GetAllSegments().Where(x => !x.ShouldSkip()).ToList();
|
||||
}
|
||||
|
||||
public int GetSegmentLength()
|
||||
{
|
||||
return GetSegments().Count + 2;
|
||||
}
|
||||
public int GetSegmentLength()
|
||||
{
|
||||
return GetSegments().Count + 2;
|
||||
}
|
||||
|
||||
public string GetRows()
|
||||
{
|
||||
var segs = GetSegments();
|
||||
var res = new List<string>();
|
||||
public string GetRows()
|
||||
{
|
||||
var segs = GetSegments();
|
||||
var res = new List<string>();
|
||||
|
||||
if (segs is null || !segs.Any())
|
||||
return string.Empty;
|
||||
if (segs is null || !segs.Any())
|
||||
return string.Empty;
|
||||
|
||||
foreach (var seg in segs)
|
||||
{
|
||||
res.Add(seg.GetRow());
|
||||
}
|
||||
foreach (var seg in segs)
|
||||
{
|
||||
res.Add(seg.GetRow());
|
||||
}
|
||||
|
||||
var str = string.Join(DakotaConfig.NewLine, res);
|
||||
var str = string.Join(DakotaConfig.NewLine, res);
|
||||
|
||||
return str;
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,73 +1,81 @@
|
||||
using Dakota.Models.Segmente;
|
||||
using Dakota.Models.Segmente.KTD;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Dakota.Models.Segmente;
|
||||
using Dakota.Models.Segmente.KTD;
|
||||
|
||||
namespace Dakota.Models.Nachrichten
|
||||
{
|
||||
internal class NachrichtKTD : Nachricht
|
||||
{
|
||||
public string FileName { get; set; }
|
||||
public int FirstLine { get; set; }
|
||||
internal class NachrichtKTD : Nachricht
|
||||
{
|
||||
public string FileName { get; set; }
|
||||
public int FirstLine { get; set; }
|
||||
|
||||
public SegmentKTDIDK SegmentIDK { get; set; }
|
||||
public SegmentKTDFKT SegmentFKT { get; set; }
|
||||
public List<SegmentKTDVKG> SegmentVKG { get; set; }
|
||||
public SegmentKTDIDK SegmentIDK { get; set; }
|
||||
public SegmentKTDFKT SegmentFKT { get; set; }
|
||||
public List<SegmentKTDVKG> SegmentVKG { get; set; } = new List<SegmentKTDVKG>();
|
||||
public List<SegmentKTDANS> SemgenteANS { get; set; } = new List<SegmentKTDANS>();
|
||||
|
||||
public NachrichtKTD()
|
||||
{
|
||||
SegmentVKG = new List<SegmentKTDVKG>();
|
||||
}
|
||||
|
||||
public string IKNummer
|
||||
{
|
||||
get { return SegmentIDK.Institutionskennzeichen; }
|
||||
}
|
||||
public NachrichtKTD()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public string IKNummer
|
||||
{
|
||||
get { return SegmentIDK.Institutionskennzeichen; }
|
||||
}
|
||||
|
||||
|
||||
public override List<Segment> GetAllSegments()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
public override List<Segment> GetAllSegments()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public static bool TryParse(string[] rows, string filename, int firstline, out NachrichtKTD nachricht)
|
||||
{
|
||||
nachricht = null;
|
||||
public static bool TryParse(string[] rows, string filename, int firstline, out NachrichtKTD nachricht)
|
||||
{
|
||||
nachricht = null;
|
||||
|
||||
try
|
||||
{
|
||||
nachricht = Parse(rows, filename, firstline);
|
||||
try
|
||||
{
|
||||
nachricht = Parse(rows, filename, firstline);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
return false;
|
||||
}
|
||||
public static NachrichtKTD Parse(string[] rows, string filename, int firstline)
|
||||
{
|
||||
var nachricht = new NachrichtKTD();
|
||||
}
|
||||
|
||||
nachricht.SegmentIDK = SegmentKTDIDK.Parse(rows[0]);
|
||||
nachricht.SegmentFKT = SegmentKTDFKT.Parse(rows[1]);
|
||||
return false;
|
||||
}
|
||||
public static NachrichtKTD Parse(string[] rows, string filename, int firstline)
|
||||
{
|
||||
var nachricht = new NachrichtKTD();
|
||||
|
||||
var length = rows.Length;
|
||||
nachricht.SegmentIDK = SegmentKTDIDK.Parse(rows[0]);
|
||||
nachricht.SegmentFKT = SegmentKTDFKT.Parse(rows[1]);
|
||||
|
||||
for (int i = 2; i < length; i++)
|
||||
{
|
||||
nachricht.SegmentVKG.Add(SegmentKTDVKG.Parse(rows[i]));
|
||||
}
|
||||
var length = rows.Length;
|
||||
|
||||
nachricht.FileName = filename;
|
||||
nachricht.FirstLine = firstline;
|
||||
for (int i = 2; i < length; i++)
|
||||
{
|
||||
var row = rows[i];
|
||||
|
||||
return nachricht;
|
||||
}
|
||||
}
|
||||
if (row.StartsWith("VKG"))
|
||||
{
|
||||
nachricht.SegmentVKG.Add(SegmentKTDVKG.Parse(row));
|
||||
}
|
||||
else if (row.StartsWith("ANS"))
|
||||
{
|
||||
nachricht.SemgenteANS.Add(SegmentKTDANS.Parse(row));
|
||||
}
|
||||
}
|
||||
|
||||
nachricht.FileName = filename;
|
||||
nachricht.FirstLine = firstline;
|
||||
|
||||
return nachricht;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,99 +1,97 @@
|
||||
using Dakota.Models.Infos;
|
||||
using Dakota.Models.Segmente;
|
||||
using Dakota.Models.Segmente.SLGA;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Dakota.Models.Infos;
|
||||
using Dakota.Models.Segmente;
|
||||
using Dakota.Models.Segmente.SLGA;
|
||||
|
||||
namespace Dakota.Models.Nachrichten
|
||||
{
|
||||
/// <summary>
|
||||
/// Gesamtaufstellung der
|
||||
/// Abrechnung(Rechnung)
|
||||
/// </summary>
|
||||
internal class NachrichtSLGA : Nachricht
|
||||
{
|
||||
/// <summary>
|
||||
/// Das Segment enthält Informationen über die zu verarbeitende Rechnung, den Rechnungssteller
|
||||
/// (Leistungserbringer oder Abrechnungsstelle) und das IK der Krankenkasse von
|
||||
/// der Krankenversichertenkarte bzw.von der ärztlichen Verordnung
|
||||
/// </summary>
|
||||
public SegmentSLGAFKT SegmentFKT { get; set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält die Rechnungsinformationen, wie Rechnungsnummer und Rechnungsdatum.
|
||||
/// </summary>
|
||||
public SegmentSLGAREC SegmentREC { get; set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält Informationen zur Umsatzsteuer.
|
||||
/// </summary>
|
||||
public SegmentSLGAUST SegmentUST { get; set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält Informationen, ob Skonto gewährt wird
|
||||
/// (Skonto in Prozent, Zahlungsziel).
|
||||
/// </summary>
|
||||
public SegmentSLGASKO SegmentSKO { get; set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält Rechnungssummen (Bruttobetrag, Zuzahlungsbetrag, Nettobetrag je Status).
|
||||
/// </summary>
|
||||
public SegmentSLGAGES SegmentGES00 { get; set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält Rechnungssummen (Bruttobetrag, Zuzahlungsbetrag, Nettobetrag je Status).
|
||||
/// </summary>
|
||||
public List<SegmentSLGAGES> ListSegmentGES { get; set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält den Namen und die Firmenbezeichnung des Leistungserbringers
|
||||
/// </summary>
|
||||
public SegmentSLGANAM SegmentNAM { get; set; }
|
||||
/// <summary>
|
||||
/// Gesamtaufstellung der
|
||||
/// Abrechnung(Rechnung)
|
||||
/// </summary>
|
||||
internal class NachrichtSLGA : Nachricht
|
||||
{
|
||||
/// <summary>
|
||||
/// Das Segment enthält Informationen über die zu verarbeitende Rechnung, den Rechnungssteller
|
||||
/// (Leistungserbringer oder Abrechnungsstelle) und das IK der Krankenkasse von
|
||||
/// der Krankenversichertenkarte bzw.von der ärztlichen Verordnung
|
||||
/// </summary>
|
||||
public SegmentSLGAFKT SegmentFKT { get; set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält die Rechnungsinformationen, wie Rechnungsnummer und Rechnungsdatum.
|
||||
/// </summary>
|
||||
public SegmentSLGAREC SegmentREC { get; set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält Informationen zur Umsatzsteuer.
|
||||
/// </summary>
|
||||
public SegmentSLGAUST SegmentUST { get; set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält Informationen, ob Skonto gewährt wird
|
||||
/// (Skonto in Prozent, Zahlungsziel).
|
||||
/// </summary>
|
||||
public SegmentSLGASKO SegmentSKO { get; set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält Rechnungssummen (Bruttobetrag, Zuzahlungsbetrag, Nettobetrag je Status).
|
||||
/// </summary>
|
||||
public SegmentSLGAGES SegmentGES00 { get; set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält Rechnungssummen (Bruttobetrag, Zuzahlungsbetrag, Nettobetrag je Status).
|
||||
/// </summary>
|
||||
public List<SegmentSLGAGES> ListSegmentGES { get; set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält den Namen und die Firmenbezeichnung des Leistungserbringers
|
||||
/// </summary>
|
||||
public SegmentSLGANAM SegmentNAM { get; set; }
|
||||
|
||||
public NachrichtSLGA()
|
||||
{
|
||||
SegmentFKT = new SegmentSLGAFKT();
|
||||
SegmentREC = new SegmentSLGAREC();
|
||||
SegmentUST = new SegmentSLGAUST();
|
||||
SegmentSKO = new SegmentSLGASKO();
|
||||
SegmentGES00 = new SegmentSLGAGES();
|
||||
ListSegmentGES = new List<SegmentSLGAGES>();
|
||||
SegmentNAM = new SegmentSLGANAM();
|
||||
}
|
||||
public NachrichtSLGA()
|
||||
{
|
||||
SegmentFKT = new SegmentSLGAFKT();
|
||||
SegmentREC = new SegmentSLGAREC();
|
||||
SegmentUST = new SegmentSLGAUST();
|
||||
SegmentSKO = new SegmentSLGASKO();
|
||||
SegmentGES00 = new SegmentSLGAGES();
|
||||
ListSegmentGES = new List<SegmentSLGAGES>();
|
||||
SegmentNAM = new SegmentSLGANAM();
|
||||
}
|
||||
|
||||
public override List<Segment> GetAllSegments()
|
||||
{
|
||||
var res = new List<Segment>();
|
||||
public override List<Segment> GetAllSegments()
|
||||
{
|
||||
var res = new List<Segment>();
|
||||
|
||||
res.Add(SegmentFKT);
|
||||
res.Add(SegmentREC);
|
||||
res.Add(SegmentUST);
|
||||
res.Add(SegmentSKO);
|
||||
res.Add(SegmentGES00);
|
||||
res.AddRange(ListSegmentGES);
|
||||
res.Add(SegmentNAM);
|
||||
res.Add(SegmentFKT);
|
||||
res.Add(SegmentREC);
|
||||
res.Add(SegmentUST);
|
||||
res.Add(SegmentSKO);
|
||||
res.Add(SegmentGES00);
|
||||
res.AddRange(ListSegmentGES);
|
||||
res.Add(SegmentNAM);
|
||||
|
||||
return res;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
public void Apply(InfoNachrichtSLGA info, bool isSammelrechnung)
|
||||
{
|
||||
SegmentFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen);
|
||||
|
||||
if(isSammelrechnung)
|
||||
SegmentFKT.Sammelrechnung.SetValue("J");
|
||||
public void Apply(InfoNachrichtSLGA info, bool isSammelrechnung)
|
||||
{
|
||||
SegmentFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen);
|
||||
|
||||
SegmentFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringer);
|
||||
SegmentFKT.IKKostenträger.SetValue(info.IKKostentrager);
|
||||
SegmentFKT.IKVersichertenKarte.SetValue(info.IKKrankenkasse);
|
||||
SegmentFKT.IKAbsender.SetValue(info.IKAbsender);
|
||||
if (isSammelrechnung)
|
||||
SegmentFKT.Sammelrechnung.SetValue("J");
|
||||
|
||||
SegmentREC.SammelRechnungsnummer.SetValue(info.Rechnungsnummer);
|
||||
SegmentREC.EinzelRechnungsnummer.SetValue("0");
|
||||
SegmentREC.Rechnungsdatum.SetValue(info.Rechnungsdatum);
|
||||
SegmentREC.Rechnungsart.SetValue(info.Rechnungsart);
|
||||
SegmentFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringer);
|
||||
SegmentFKT.IKKostenträger.SetValue(info.IKKostentrager);
|
||||
SegmentFKT.IKVersichertenKarte.SetValue(info.IKKrankenkasse);
|
||||
SegmentFKT.IKAbsender.SetValue(info.IKAbsender);
|
||||
|
||||
SegmentNAM.Name1.SetValue(info.Name1);
|
||||
SegmentNAM.Name2.SetValue(info.Name2);
|
||||
SegmentNAM.Name3.SetValue(info.Name3);
|
||||
SegmentNAM.Name4.SetValue(info.Name4);
|
||||
}
|
||||
}
|
||||
SegmentREC.SammelRechnungsnummer.SetValue(info.Rechnungsnummer);
|
||||
SegmentREC.EinzelRechnungsnummer.SetValue("0");
|
||||
SegmentREC.Rechnungsdatum.SetValue(info.Rechnungsdatum);
|
||||
SegmentREC.Rechnungsart.SetValue(info.Rechnungsart);
|
||||
|
||||
SegmentNAM.Name1.SetValue(info.Name1);
|
||||
SegmentNAM.Name2.SetValue(info.Name2);
|
||||
SegmentNAM.Name3.SetValue(info.Name3);
|
||||
SegmentNAM.Name4.SetValue(info.Name4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,82 +1,80 @@
|
||||
using Dakota.Models.Blocke;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Dakota.Models.Blocke;
|
||||
using Dakota.Models.Infos;
|
||||
using Dakota.Models.Segmente;
|
||||
using Dakota.Models.Segmente.SLLA;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models.Nachrichten
|
||||
{
|
||||
/// <summary>
|
||||
/// Leistungserbringer
|
||||
/// </summary>
|
||||
internal class NachrichtSLLA : Nachricht
|
||||
{
|
||||
/// <summary>
|
||||
/// Das Segment enthält Informationen über den tatsächlichen
|
||||
/// Leistungserbringer und das IK der Krankenkasse von der
|
||||
/// Krankenversichertenkarte bzw.der ärztlichen Verordnung bezogen auf die folgenden Abrechnungsfälle.Es kommt je Nachricht nur einmal vor.
|
||||
/// </summary>
|
||||
public SegmentSLLAFKT SegmentSLLAFKT { get; private set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält die Rechnungsinformationen, wie Rechnungsnummer und Rechnungsdatum
|
||||
/// </summary>
|
||||
public SegmentSLLAREC SegmentSLLAREC { get; private set; }
|
||||
/// <summary>
|
||||
/// Abrechnungsfälle (INV - BES)
|
||||
/// </summary>
|
||||
public List<BlockKlient> BlockKlienten { get; set; }
|
||||
/// <summary>
|
||||
/// Leistungserbringer
|
||||
/// </summary>
|
||||
internal class NachrichtSLLA : Nachricht
|
||||
{
|
||||
/// <summary>
|
||||
/// Das Segment enthält Informationen über den tatsächlichen
|
||||
/// Leistungserbringer und das IK der Krankenkasse von der
|
||||
/// Krankenversichertenkarte bzw.der ärztlichen Verordnung bezogen auf die folgenden Abrechnungsfälle.Es kommt je Nachricht nur einmal vor.
|
||||
/// </summary>
|
||||
public SegmentSLLAFKT SegmentSLLAFKT { get; private set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält die Rechnungsinformationen, wie Rechnungsnummer und Rechnungsdatum
|
||||
/// </summary>
|
||||
public SegmentSLLAREC SegmentSLLAREC { get; private set; }
|
||||
/// <summary>
|
||||
/// Abrechnungsfälle (INV - BES)
|
||||
/// </summary>
|
||||
public List<BlockKlient> BlockKlienten { get; set; }
|
||||
|
||||
|
||||
|
||||
public NachrichtSLLA()
|
||||
{
|
||||
SegmentSLLAFKT = new SegmentSLLAFKT();
|
||||
SegmentSLLAREC = new SegmentSLLAREC();
|
||||
public NachrichtSLLA()
|
||||
{
|
||||
SegmentSLLAFKT = new SegmentSLLAFKT();
|
||||
SegmentSLLAREC = new SegmentSLLAREC();
|
||||
|
||||
BlockKlienten = new List<BlockKlient>();
|
||||
}
|
||||
BlockKlienten = new List<BlockKlient>();
|
||||
}
|
||||
|
||||
public override List<Segment> GetAllSegments()
|
||||
{
|
||||
var list = new List<Segment>() { SegmentSLLAFKT, SegmentSLLAREC };
|
||||
public override List<Segment> GetAllSegments()
|
||||
{
|
||||
var list = new List<Segment>() { SegmentSLLAFKT, SegmentSLLAREC };
|
||||
|
||||
foreach (var block in BlockKlienten)
|
||||
{
|
||||
list.AddRange(block.GetSegments());
|
||||
}
|
||||
foreach (var block in BlockKlienten)
|
||||
{
|
||||
list.AddRange(block.GetSegments());
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public void Add(BlockKlient fall)
|
||||
{
|
||||
BlockKlienten.Add(fall);
|
||||
}
|
||||
public void Apply(InfoNachrichtSLLA info)
|
||||
{
|
||||
SegmentSLLAFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen);
|
||||
SegmentSLLAFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringer);
|
||||
SegmentSLLAFKT.IKKostenträgers.SetValue(info.IKKostentrager);
|
||||
SegmentSLLAFKT.IKKrankenkasse.SetValue(info.IKKrankenkasse);
|
||||
//SegmentSLLAFKT.IKRechnungsstellers.SetValue(info.IKAbsender);
|
||||
public void Add(BlockKlient fall)
|
||||
{
|
||||
BlockKlienten.Add(fall);
|
||||
}
|
||||
public void Apply(InfoNachrichtSLLA info)
|
||||
{
|
||||
SegmentSLLAFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen);
|
||||
SegmentSLLAFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringer);
|
||||
SegmentSLLAFKT.IKKostenträgers.SetValue(info.IKKostentrager);
|
||||
SegmentSLLAFKT.IKKrankenkasse.SetValue(info.IKKrankenkasse);
|
||||
//SegmentSLLAFKT.IKRechnungsstellers.SetValue(info.IKAbsender);
|
||||
|
||||
foreach (var infofall in info.Abrechnungsfalle.OrderBy(x => x.InfosAbrechnungsposition.Min(y => y.DatumDerLeistungserbringung)))
|
||||
{
|
||||
var block = new BlockKlient();
|
||||
foreach (var infofall in info.Abrechnungsfalle.OrderBy(x => x.InfosAbrechnungsposition.Min(y => y.DatumDerLeistungserbringung)))
|
||||
{
|
||||
var block = new BlockKlient();
|
||||
|
||||
block.Apply(infofall);
|
||||
block.Apply(infofall);
|
||||
|
||||
Add(block);
|
||||
}
|
||||
Add(block);
|
||||
}
|
||||
|
||||
SegmentSLLAREC.SammelRechnungsnummer.SetValue(info.Rechnungsnummer);
|
||||
SegmentSLLAREC.EinzelRechnungsnummer.SetValue("0");
|
||||
SegmentSLLAREC.Rechnungsdatum.SetValue(info.Rechnungsdatum);
|
||||
SegmentSLLAREC.Rechnungsart.SetValue(info.Rechnungsart);
|
||||
}
|
||||
}
|
||||
SegmentSLLAREC.SammelRechnungsnummer.SetValue(info.Rechnungsnummer);
|
||||
SegmentSLLAREC.EinzelRechnungsnummer.SetValue("0");
|
||||
SegmentSLLAREC.Rechnungsdatum.SetValue(info.Rechnungsdatum);
|
||||
SegmentSLLAREC.Rechnungsart.SetValue(info.Rechnungsart);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
29
Dakota/Models/Schlüssels/SchlüsselArtDerAnschrift.cs
Normal file
29
Dakota/Models/Schlüssels/SchlüsselArtDerAnschrift.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models.Schlüssels
|
||||
{
|
||||
public class SchlüsselArtDerAnschrift : Schlüssel
|
||||
{
|
||||
public SchlüsselArtDerAnschrift(string val) : base(val) { }
|
||||
|
||||
public static SchlüsselArtDerAnschrift Hausanschrift => new SchlüsselArtDerAnschrift("1");
|
||||
public static SchlüsselArtDerAnschrift Postfachanschrift => new SchlüsselArtDerAnschrift("2");
|
||||
public static SchlüsselArtDerAnschrift Großkundenanschrift => new SchlüsselArtDerAnschrift("3");
|
||||
|
||||
public static SchlüsselArtDerAnschrift Parse(string str)
|
||||
{
|
||||
var list = new SchlüsselArtDerAnschrift[] {
|
||||
Hausanschrift ,
|
||||
Postfachanschrift ,
|
||||
Großkundenanschrift};
|
||||
|
||||
var schlüssel = GetSchlüssel(list, str);
|
||||
|
||||
return schlüssel;
|
||||
}
|
||||
}
|
||||
}
|
||||
37
Dakota/Models/Segmente/KTD/SegmentKTDANS.cs
Normal file
37
Dakota/Models/Segmente/KTD/SegmentKTDANS.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
using Dakota.Models.Schlüssels;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace Dakota.Models.Segmente.KTD
|
||||
{
|
||||
[DebuggerDisplay("ANS+{Verarbeitungskennzeichen.Value}'")]
|
||||
internal class SegmentKTDANS : SegmentKTD
|
||||
{
|
||||
public SchlüsselArtDerAnschrift ArtDerAnschrift { get; set; }
|
||||
public string Postleitzahl { get; set; }
|
||||
public string Ort { get; set; }
|
||||
public string StraßeHausnummerOderPostfach { get; set; }
|
||||
|
||||
public static SegmentKTDANS Parse(string row)
|
||||
{
|
||||
var segment = new SegmentKTDANS();
|
||||
|
||||
var split = row.Trim(Segmentendezeichen).Split(Trennzeichen);
|
||||
|
||||
segment.ArtDerAnschrift = SchlüsselArtDerAnschrift.Parse(split[1]);
|
||||
segment.Postleitzahl = split[2];
|
||||
|
||||
if (split.Length <= 3)
|
||||
return segment;
|
||||
|
||||
segment.Ort = split[3];
|
||||
|
||||
if (split.Length <= 4)
|
||||
return segment;
|
||||
|
||||
segment.StraßeHausnummerOderPostfach = split[4];
|
||||
|
||||
return segment;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -193,10 +193,13 @@ namespace Host
|
||||
|
||||
if (response.Gefunden)
|
||||
{
|
||||
response.IKDatenannahmestelle = resolved.Item1;
|
||||
response.IKKostentrager = resolved.Item2;
|
||||
response.IKKrankenkasse = resolved.Item3;
|
||||
response.BezDatenannahmestelle = resolved.Item4;
|
||||
response.IKDatenannahmestelle = resolved.IKDatenannahmestelle;
|
||||
response.IKKostentrager = resolved.IKKostentrager;
|
||||
response.IKKrankenkasse = resolved.IKKrankenkasse;
|
||||
response.BezDatenannahmestelle = resolved.BezDatenannahmestelle;
|
||||
response.Hausanschrift = resolved.Hausanschrift;
|
||||
response.Postfachanschrift = resolved.Postfachanschrift;
|
||||
response.Großkundenanschrift = response.Großkundenanschrift;
|
||||
}
|
||||
|
||||
SendResponse(response);
|
||||
|
||||
@@ -238,9 +238,9 @@ namespace BeWo.Service.DCEntityMapper
|
||||
MapperFactory.ArbeitszeitDC_Arbeitszeit.MergeWithEntitys(pDataContract.Arbeitszeiten, pEntity.Arbeitszeiten);
|
||||
MapperFactory.FeiertagDC_Feiertag.MergeWithEntitys(pDataContract.Feiertage, pEntity.Feiertage);
|
||||
|
||||
MapperFactory.Address.MergeOrCreateWithEntity(pDataContract.HausanschriftDatenannahmestelle, pEntity.HausanschriftDatenannahmestelle);
|
||||
MapperFactory.Address.MergeOrCreateWithEntity(pDataContract.PostfachanschriftDatenannahmestelle, pEntity.PostfachanschriftDatenannahmestelle);
|
||||
MapperFactory.Address.MergeOrCreateWithEntity(pDataContract.GroßkundenanschriftDatenannahmestelle, pEntity.GroßkundenanschriftDatenannahmestelle);
|
||||
pEntity.HausanschriftDatenannahmestelle = MapperFactory.Address.MergeOrCreateWithEntity(pDataContract.HausanschriftDatenannahmestelle, pEntity.HausanschriftDatenannahmestelle);
|
||||
pEntity.PostfachanschriftDatenannahmestelle = MapperFactory.Address.MergeOrCreateWithEntity(pDataContract.PostfachanschriftDatenannahmestelle, pEntity.PostfachanschriftDatenannahmestelle);
|
||||
pEntity.GroßkundenanschriftDatenannahmestelle = MapperFactory.Address.MergeOrCreateWithEntity(pDataContract.GroßkundenanschriftDatenannahmestelle, pEntity.GroßkundenanschriftDatenannahmestelle);
|
||||
|
||||
return pEntity;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ using BeWo.Service.ServiceContracts;
|
||||
using BS.Shared;
|
||||
using BS.Shared.AppSender;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.DataContracts.GkvAbrechnung;
|
||||
using BS.Shared.DataContracts.Light;
|
||||
@@ -314,7 +315,10 @@ namespace BeWo.Service.ServiceImplementations
|
||||
IKKostentrager = app8res.IKKostentrager,
|
||||
IKKrankenkasse = app8res.IKKrankenkasse,
|
||||
Message = app8res.Message,
|
||||
Success = app8res.Success
|
||||
Success = app8res.Success,
|
||||
Hausanschrift = app8res.Hausanschrift ?? new AddressDC(),
|
||||
Postfachanschrift=app8res.Postfachanschrift ?? new AddressDC(),
|
||||
Großkundenanschrift =app8res.Großkundenanschrift ?? new AddressDC()
|
||||
};
|
||||
|
||||
// Schaue, ob IK Krankenkassen bereits bei einer anderen Organisation hinterlegt ist
|
||||
|
||||
@@ -24,5 +24,8 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
[DataMember] public string IKKostentrager { get; set; }
|
||||
[DataMember] public string IKDatenannahmestelle { get; set; }
|
||||
[DataMember] public string BezDatenannahmestelle { get; set; }
|
||||
[DataMember] public AddressDC Hausanschrift { get; set; }
|
||||
[DataMember] public AddressDC Postfachanschrift { get; set; }
|
||||
[DataMember] public AddressDC Großkundenanschrift { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BS.Shared.DataContracts.Invoicing.GkvAbrechnung
|
||||
{
|
||||
public class GkvKostentragerdateiSummary
|
||||
{
|
||||
public string IKDatenannahmestelle{ get; set; }
|
||||
public string BezDatenannahmestelle { get; set; }
|
||||
public string IKKostentrager { get; set; }
|
||||
public string IKKrankenkasse { get; set; }
|
||||
public AddressDC Hausanschrift { get; set; }
|
||||
public AddressDC Postfachanschrift { get; set; }
|
||||
public AddressDC Großkundenanschrift { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -18,5 +18,8 @@ namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
[DataMember] public string IKKostentrager { get; set; }
|
||||
[DataMember] public string IKDatenannahmestelle { get; set; }
|
||||
[DataMember] public string BezDatenannahmestelle { get; set; }
|
||||
[DataMember] public AddressDC Hausanschrift { get; set; }
|
||||
[DataMember] public AddressDC Postfachanschrift { get; set; }
|
||||
[DataMember] public AddressDC Großkundenanschrift { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,6 +202,7 @@
|
||||
<Compile Include="DataContracts\AppResponseDC.cs" />
|
||||
<Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvAbrechnungGetIKRequestDC.cs" />
|
||||
<Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvAbrechnungGetIKResponseDC.cs" />
|
||||
<Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvKostentragerdateiSummary.cs" />
|
||||
<Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvServerGetStatusRequestDC.cs" />
|
||||
<Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvServerGetStatusResponseDC.cs" />
|
||||
<Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvClientResultRequestDC.cs" />
|
||||
|
||||
Reference in New Issue
Block a user