Zwischenstand:

Schlüssel übersichtlich,
Segmente neu sortiert
PDFs eingeführt,
Beispiel Ansicht eingeführt,
This commit is contained in:
2023-08-21 14:45:00 +02:00
parent 88dbab0b24
commit d65ac37cc0
58 changed files with 3552 additions and 2393 deletions

View File

@@ -313,6 +313,10 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="View\Detail\Accounting\DigitalInvoiceOverview.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="View\Detail\DebugMessageLogView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -1052,6 +1056,9 @@
<Compile Include="View\Controls\ValueListEntryEditControl.xaml.cs">
<DependentUpon>ValueListEntryEditControl.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\Accounting\DigitalInvoiceOverview.xaml.cs">
<DependentUpon>DigitalInvoiceOverview.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\DebugMessageLogView.xaml.cs">
<DependentUpon>DebugMessageLogView.xaml</DependentUpon>
</Compile>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,94 @@
<localView:BeWoView x:Class="BeWo.View.Detail.Accounting.DigitalInvoiceOverview"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:localViewModel="clr-namespace:BeWo.ViewModel"
xmlns:localViewDetail="clr-namespace:BeWo.View.Detail.Accounting"
xmlns:val="clr-namespace:BeWo.Validation"
xmlns:proxy="clr-namespace:BeWo.ServiceProxy"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
Height="Auto" Width="Auto" HorizontalAlignment="Stretch"
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:r="clr-namespace:BeWo.Security"
VerticalAlignment="Stretch" Focusable="True"
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic">
<Grid>
<GroupBox x:Name="groupbox_editArea" Grid.Row="0" Header="Rechnungsübersicht" Style="{DynamicResource ObjectEditGroupBox}">
<Grid Grid.IsSharedSizeScope="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<localView:YearMonthFilter Margin="3 0 0 0" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Column="0" x:Name="yearMonthFilter" FilterSpanChanged="YearMonthFilter_FilterSpanChanged" />
<Button x:Name="button_reload" Grid.Column="1" Content="Aktualisieren" Margin="0,0,0,8" Click="ReloadButton_OnClick" Height="24" HorizontalAlignment="Left" VerticalAlignment="Bottom" Width="80" />
<dxg:GridControl Margin="3" Grid.ColumnSpan="2" Grid.Row="1" DataSource="{Binding VMList}" x:Name="datagrid_invoices" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<dxg:GridControl.Columns>
<dxg:GridColumn x:Name="ColumnButtons" AllowEditing="False" MinWidth="20" Width="22" FieldName="ReportLink" Header=" ">
<dxg:GridColumn.DisplayTemplate>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
<Button Margin="1" ToolTip="Codierung erzeugen" x:Name="btn_report" Height="20" Width="20" VerticalAlignment="Center">
<TextBlock Padding="0">
<Hyperlink TextDecorations="None" TargetName="_NewWindow" NavigateUri="{Binding DisplayText, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" RequestNavigate="Hyperlink_OnRequestNavigate">
<TextBlock Padding="0" Text="¥" Foreground="#FFFFFF" FontSize="15" FontFamily="Webdings" Height="17" Width="16" VerticalAlignment="Center" HorizontalAlignment="Left" />
</Hyperlink>
</TextBlock>
</Button>
</StackPanel>
</ControlTemplate>
</dxg:GridColumn.DisplayTemplate>
</dxg:GridColumn>
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="TypeString" Header="Art der Rechnung" Width="150" />
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="CustomerName" Header="{markup:Translate Klient/in}" Width="100" />
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="AccountingPeriodString" Header="Zeitraum" Width="100" />
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="InvoiceNumber" Header="Nummer" />
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="InvoiceDate" Header="Datum" EditSettings="{dxe:DateSettings DisplayFormat=d}" MinWidth="70" />
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="RecipientString" Header="{markup:Translate EmpfängerSingular}" />
<!--<dxg:GridColumn FieldName="AccountingPeriodString" Header="Abrechnungszeitraum" />-->
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="TotalAmount" Header="Betrag" MinWidth="70">
<!--<dxg:GridColumn.CellStyle>
<Style TargetType="dxg:LightweightCellEditor">
<Setter Property="TextBlock.FontWeight" Value="Bold"/>
</Style>
</dxg:GridColumn.CellStyle>-->
</dxg:GridColumn>
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Notice" Header="Bemerkung" MinWidth="200" >
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView NavigationStyle="Cell" Loaded="gridView_Loaded" x:Name="gridView" BestFitMode="Smart" AllowBestFit="True" ShowGroupPanel="False" ScrollingMode="Smart" SnapsToDevicePixels="True" Margin="3,22,3,3" />
</dxg:GridControl.View>
</dxg:GridControl>
<Grid Grid.Row="1" Grid.ColumnSpan="2" HorizontalAlignment="Stretch" VerticalAlignment="Top" Margin="5,2,5,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<WrapPanel>
<Label FontSize="14" Foreground="{StaticResource GridPrintMenuLightBrush}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10 0 0 0" Content="{Binding FilterResultAmountSum, Converter={StaticResource StringFormatConverter}, ConverterParameter='{}Summe aller Rechnungen: {0:c}'}" />
<Label FontSize="14" Foreground="{StaticResource GridPrintMenuLightBrush}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="0 0 0 0" Content=" | " />
<Label FontSize="14" x:Name="lblAmoutNotPaid" Foreground="{StaticResource GridPrintMenuLightBrush}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="0 0 0 0" Content="{Binding FilterResultAmountNotPaidSum, Converter={StaticResource StringFormatConverter}, ConverterParameter='{}Summe der noch offenen Rechnungen: {0:c}'}" />
</WrapPanel>
</Grid>
<TextBox x:Name="Output" Grid.Row="1" Grid.Column="2" Text="Test123\nn" IsReadOnly="True" AcceptsReturn="True" />
</Grid>
</GroupBox>
</Grid>
</localView:BeWoView>

View File

@@ -0,0 +1,138 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Media;
using System.Windows.Navigation;
using System.Windows.Threading;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Grid;
using Microsoft.Win32;
using Shared.Extensions;
namespace BeWo.View.Detail.Accounting
{
public partial class DigitalInvoiceOverview : BeWoView
{
private readonly EquityInvoiceItemEditView _EquityInvoiceItemEditView;
private readonly GeneralInvoiceItemEditView _GeneralInvoiceItemEditView;
private readonly SettlementInvoiceItemEditView _SettlementInvoiceItemEditView;
private readonly SettlementInvoiceItemEditView2 _SettlementInvoiceItemEditView2;
private readonly ServiceInvoiceItemEditView _ServiceInvoiceItemEditView;
private InvoiceBaseListVM _Viewmodel;
public DigitalInvoiceOverview()
{
this.InitializeComponent();
this.ViewModel = new InvoiceBaseListVM(null);
RefreshInvoiceList();
}
private void RefreshInvoiceList()
{
DateTime? start = null;
DateTime? end = null;
if (ViewModel.DateTimeSpanFilter != null)
{
start = ViewModel.DateTimeSpanFilter.StartDate;
end = ViewModel.DateTimeSpanFilter.EndDate;
}
ServiceFacade.DoAccountingServiceAsync(s => s.GetInvoiceBases(start, end), UpdateInvoiceList);
}
private void UpdateInvoiceList(IList<InvoiceBaseDC> dcList)
{
this.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
(Action)delegate
{
ViewModel.UpdateList(dcList.Where(DakotaExtensions.IsSozioTherapie).ToList());
this.gridView.BestFitColumns();
});
}
private InvoiceBaseListVM ViewModel
{
get
{
return this._Viewmodel;
}
set
{
this.DataContext = value;
this._Viewmodel = value;
}
}
private void RefreshItemInList(InvoiceBaseDC cb)
{
this.Dispatch(
delegate
{
var old = this.ViewModel.VMList.Single(i => i.DataContract.InvoiceBaseOid.Equals(cb.InvoiceBaseOid));
var lNew = new InvoiceBaseVM(cb);
this.ViewModel.VMList.Remove(old);
this.ViewModel.VMList.Add(lNew);
this.datagrid_invoices.RefreshData();
this.gridView.FocusedRow = lNew;
});
}
private void gridView_Loaded(object sender, RoutedEventArgs e)
{
this.gridView.BestFitColumns();
}
private void gridView_ShownEditor(object sender, EditorEventArgs e)
{
if (e.Editor is CheckEdit)
{
var ed = (CheckEdit)e.Editor;
ed.Tag = e.Row;
}
}
private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
{
var uri = ((Hyperlink)sender).NavigateUri;
string dcid = HttpUtility.ParseQueryString(uri.Query).Get("ibid");
var schaarf = ServiceFacade.DoOperationsServiceSync(x => x.GetDakotaFileFormat(dcid));
Output.Text = schaarf;
}
private void ReloadButton_OnClick(object sender, RoutedEventArgs e)
{
RefreshInvoiceList();
}
private void YearMonthFilter_FilterSpanChanged(object sender, EventArgs<DateTimeSpan> e)
{
this.ViewModel.DateTimeSpanFilter = e.Data;
RefreshInvoiceList();
}
}
}

View File

@@ -40,6 +40,7 @@
Selector.Selected="tabitem_collectiveinvoice_Selected" />
<TabItem Header="Allgemeine Rechnungen" Name="tabitem_otherinvoice" Selector.Selected="tabitem_otherinvoice_Selected" />
<TabItem Header="Rechnungsübersicht" Name="tabitem_overviewinvoice" Selector.Selected="tabitem_overviewinvoice_Selected" />
<TabItem Header="Digitale Abrechnung" Name="tabitem_digitaloverviewinvoice" Selector.Selected="tabitem_digitaloverviewinvoice_Selected" />
<TabItem Header="Bargeldverwaltung" Name="tabitem_bargeldverwaltung" Selector.Selected="tabitem_bargeldverwaltung_Selected"/>
<TabItem Header="Dokumente" Name="tabitem_documents" Selector.Selected="tabitem_documents_Selected" />
</TabControl>

View File

@@ -233,6 +233,16 @@ namespace BeWo.View.Master
}
}
private void tabitem_digitaloverviewinvoice_Selected(object sender, RoutedEventArgs e)
{
if (!_OpenViews.ContainsKey(tabitem_digitaloverviewinvoice) || _SavePerformed)
{
AddView(tabitem_digitaloverviewinvoice, new DigitalInvoiceOverview());
//VMFactory.CreateInvoiceOverviewListVM(cb => this.Dispatch(delegate { this.AddView(this.tabitem_overviewinvoice, new InvoiceOverview(cb)); }));
}
}
//Dokument Selection
private void tabitem_documents_Selected(object sender, RoutedEventArgs e)
{

View File

@@ -43,9 +43,10 @@
<ItemGroup>
<Compile Include="DakotaConfig.cs" />
<Compile Include="DakotaEnums.cs" />
<Compile Include="DakotaFileGenerator.cs" />
<Compile Include="DakotaFile.cs" />
<Compile Include="DakotaValidator.cs" />
<Compile Include="Models\Abrechnungsposition.cs" />
<Compile Include="DakotaFileInfo.cs" />
<Compile Include="Models\Datei\BlockKostenträger.cs" />
<Compile Include="Models\Datei\BlockKrankenkarteVerordnung.cs" />
<Compile Include="Models\Datei\SozioTherapieEinzelnachweis.cs" />
@@ -58,36 +59,46 @@
<Compile Include="Models\Nachricht\NachrichtSLGA2.cs" />
<Compile Include="Models\Nachricht\NachrichtSLLA2.cs" />
<Compile Include="Models\Nachricht\NachrichtSLLA.cs" />
<Compile Include="Models\Segmente\SegmentSLLABES.cs" />
<Compile Include="Models\Segmente\SegmentSLLADIA.cs" />
<Compile Include="Models\Segmente\SegmentSLLAMWS.cs" />
<Compile Include="Models\Segmente\SegmentSLLAENF.cs" />
<Compile Include="Models\Segmente\SegmentSLLASKZ.cs" />
<Compile Include="Models\Segmente\SegmentSLLASUT.cs" />
<Compile Include="Models\Segmente\SegmentSLLATXT.cs" />
<Compile Include="Models\Segmente\SegmentSLLAZUV.cs" />
<Compile Include="Models\Segmente\SegmentSLLAZUZ.cs" />
<Compile Include="Models\Schlüssel\Schlüssel.cs" />
<Compile Include="Models\Schlüssel\SchlüsselRechnungsart.cs" />
<Compile Include="Models\Schlüssel\SchlüsselSummenstatus.cs" />
<Compile Include="Models\Schlüssel\SchlüsselTestindikator.cs" />
<Compile Include="Models\Schlüssel\SchlüsselVerarbeitungskennzeichen.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLABES.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLADIA.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLAMWS.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLAENF.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLASKZ.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLASUT.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLATXT.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLAZUV.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLAZUZ.cs" />
<Compile Include="Models\Datei\Nutzdatendatei.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Models\Segmente\Segment.cs" />
<Compile Include="Models\Segmente\SegmentSLGAFKT.cs" />
<Compile Include="Models\Segmente\SegmentSLGAGES.cs" />
<Compile Include="Models\Segmente\SegmentSLGANAM.cs" />
<Compile Include="Models\Segmente\SegmentSLGAREC.cs" />
<Compile Include="Models\Segmente\SegmentSLGASKO.cs" />
<Compile Include="Models\Segmente\SegmentSLLAFKT.cs" />
<Compile Include="Models\Segmente\SegmentSLLAINV.cs" />
<Compile Include="Models\Segmente\SegmentSLLANAD.cs" />
<Compile Include="Models\Segmente\SegmentSLLAREC.cs" />
<Compile Include="Models\Segmente\SegmentSLLAURI.cs" />
<Compile Include="Models\Segmente\SegmentSLLAIMG.cs" />
<Compile Include="Models\Segmente\SLGA\SegmentSLGAFKT.cs" />
<Compile Include="Models\Segmente\SLGA\SegmentSLGAGES.cs" />
<Compile Include="Models\Segmente\SLGA\SegmentSLGANAM.cs" />
<Compile Include="Models\Segmente\SLGA\SegmentSLGAREC.cs" />
<Compile Include="Models\Segmente\SLGA\SegmentSLGASKO.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLAFKT.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLAINV.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLANAD.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLAREC.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLAURI.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLAIMG.cs" />
<Compile Include="Models\Segmente\SegmentUNB.cs" />
<Compile Include="Models\Segmente\SegmentUNH.cs" />
<Compile Include="Models\Segmente\SegmentUNT.cs" />
<Compile Include="Models\Segmente\SegmentUNZ.cs" />
<Compile Include="Models\Segmente\SegmentSLGAUST.cs" />
<Compile Include="Models\Segmente\SLGA\SegmentSLGAUST.cs" />
<Compile Include="Models\Datei\SozioTherapieDatei.cs" />
</ItemGroup>
<ItemGroup />
<ItemGroup>
<ProjectReference Include="..\Shared\Shared.csproj">
<Project>{2F50B83D-A3F0-4EC4-979A-3F9B7E3D8ED4}</Project>
<Name>Shared</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -5,19 +5,18 @@ using Dakota.Models.Nachricht;
using Dakota.Models.Segmente;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota
{
public class DakotaFileGenerator
/// <summary>
/// Interne Logik
/// </summary>
public class DakotaFile : IRowable
{
internal SozioTherapieEinzelnachweis SozioTherapieEinzelnachweis { get; set; }
internal DateTime Created { get; private set; }
internal int DatenaustauschreferenzCounter { get; private set; }
internal int NachrichtenreferenzCounter { get; private set; }
internal int NachrichtenCounter { get; set; }
internal int AnzahlUNHCounter { get; set; }
internal int SegmentSLGACounter { get; set; }
internal int SegmentSLLACounter { get; set; }
@@ -37,59 +36,48 @@ namespace Dakota
// UNZ
internal SegmentUNZ SegmentUNZ => SozioTherapieEinzelnachweis.UNZ;
public string UNBAbsenderbezeichnung => string.Empty;
public string UNBEmpfangerbezeichnung => string.Empty;
public string UNBAnwendungsreferenz => string.Empty;
public string SLGAFKTIKRechnungssteller => string.Empty;
public string SLGAFKTIKKostentrager => string.Empty;
public string SLGAFKTIKKrankenkasse => string.Empty;
public DakotaFileGenerator(int counter)
public DakotaFile()
{
SozioTherapieEinzelnachweis = new SozioTherapieEinzelnachweis();
Created = DateTime.Now;
DatenaustauschreferenzCounter = counter;
NachrichtenreferenzCounter = 1;
NachrichtenCounter = 1;
AnzahlUNHCounter = 0;
SegmentSLGACounter = 0;
SegmentSLLACounter = 0;
}
public void Generate()
public void Generate(DakotaFileInfo info)
{
GenerateUNB();
GenerateBlockSLGA();
GenerateBlockSLLA();
GenerateUNZ();
IncrementCounter();
GenerateUNB(info);
GenerateBlockSLGA(info);
GenerateBlockSLLA(info);
GenerateUNZ(info);
}
public void GenerateUNB()
public void GenerateUNB(DakotaFileInfo info)
{
SegmentUNB.SyntaxKennung.SetValue("UNOC");
SegmentUNB.SyntaxVersionsnummer.SetValue("3");
SegmentUNB.Absenderdatei.SetValue(UNBAbsenderbezeichnung);
SegmentUNB.Empfangdatei.SetValue(UNBEmpfangerbezeichnung);
SegmentUNB.Absenderdatei.SetValue(info.Absenderbezeichnung);
SegmentUNB.Empfangdatei.SetValue(info.Empfangerbezeichnung);
SegmentUNB.Datum.SetValue(Created.ToString("yyyyMMdd"));
SegmentUNB.Uhrzeit.SetValue(Created.ToString("HHmm"));
SegmentUNB.Datenaustauschreferenz.SetFilledIntValue(DatenaustauschreferenzCounter++, 5);
SegmentUNB.Datenaustauschreferenz.SetFilledIntValue(info.Datenaustauschreferenz, 5);
SegmentUNB.Leistungsbereich.SetValue("O");
SegmentUNB.Anwengundsreferenz.SetValue(UNBAnwendungsreferenz);
SegmentUNB.Testindikator.SetValue("0");
SegmentUNB.Anwengundsreferenz.SetValue(info.Anwendungsreferenz);
SegmentUNB.Testindikator.SetValue(info.Testindikator.Value);
}
public void GenerateBlockSLGA()
public void GenerateBlockSLGA(DakotaFileInfo info)
{
//UNH, UNT, FKT, REC
SegmentSLGACounter += 2;
AnzahlUNHCounter++;
//UNH, UNT, FKT, REC, GES00, GES, NAM
SegmentSLGACounter += 7;
var nachrichtenreferenznummer = NachrichtenreferenzCounter++;
var nachrefnum = ++AnzahlUNHCounter;
// Head
BlockSLGAUNH.Nachrichtenreferenznummer.SetFilledIntValue(nachrichtenreferenznummer, 5);
BlockSLGAUNH.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
BlockSLGAUNH.NachrichtenTypKennung.SetValue("SLGA");
BlockSLGAUNH.Verionsnummer.SetValue("18");
BlockSLGAUNH.FreigabeNrDesTypes.SetValue("0");
@@ -97,16 +85,16 @@ namespace Dakota
// Body
// FKT
BlockSLGANachricht.SegmentFKT.Verarbeitungskennzeichen.SetValue("01");
BlockSLGANachricht.SegmentFKT.IKLeistungserbringers.SetValue(SLGAFKTIKRechnungssteller);
BlockSLGANachricht.SegmentFKT.IKKostenträger.SetValue(SLGAFKTIKKostentrager);
BlockSLGANachricht.SegmentFKT.IKKrankenkasse.SetValue(SLGAFKTIKKrankenkasse);
BlockSLGANachricht.SegmentFKT.IKAbsender.SetValue(UNBAbsenderbezeichnung);
BlockSLGANachricht.SegmentFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen.Value);
BlockSLGANachricht.SegmentFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringers);
BlockSLGANachricht.SegmentFKT.IKKostenträger.SetValue(info.IKKostenträger);
BlockSLGANachricht.SegmentFKT.IKKrankenkasse.SetValue(info.IKKrankenkasse);
BlockSLGANachricht.SegmentFKT.IKAbsender.SetValue(info.Absenderbezeichnung);
// REC
BlockSLGANachricht.SegmentREC.SammelRechnungsnummer.SetValue(string.Empty);
BlockSLGANachricht.SegmentREC.EinzelRechnungsnummer.SetValue(string.Empty);
BlockSLGANachricht.SegmentREC.Datum.SetValue(string.Empty);
BlockSLGANachricht.SegmentREC.Rechnungsart.SetValue("1");
BlockSLGANachricht.SegmentREC.SammelRechnungsnummer.SetValue(info.Rechnungsnummer);
BlockSLGANachricht.SegmentREC.EinzelRechnungsnummer.SetValue("0");
BlockSLGANachricht.SegmentREC.Datum.SetValue(info.Rechnungsdatum.ToString("yyyyMMdd"));
BlockSLGANachricht.SegmentREC.Rechnungsart.SetValue(info.Rechnungsart.Value);
// UST - wird nicht gebraucht
//BlockSLGANachricht.SegmentUST.Steuernummer.SetValue(string.Empty);
//BlockSLGANachricht.SegmentUST.Kennung.SetValue(string.Empty);
@@ -114,35 +102,35 @@ namespace Dakota
//BlockSLGANachricht.SegmentSKO.SkontoProzent.SetValue(string.Empty);
//BlockSLGANachricht.SegmentSKO.Zahlungsziel.SetValue(string.Empty);
// GES00
BlockSLGANachricht.SegmentGES00.Status.SetValue(string.Empty);
BlockSLGANachricht.SegmentGES00.Gesamtrechnungsbetrag.SetValue(string.Empty);
BlockSLGANachricht.SegmentGES00.Gesamtbruttobetrag.SetValue(string.Empty);
BlockSLGANachricht.SegmentGES00.GesamtbetragZuzahlung.SetValue(string.Empty);
BlockSLGANachricht.SegmentGES00.Status.SetValue("00");
BlockSLGANachricht.SegmentGES00.Gesamtrechnungsbetrag.SetDecimalValue(info.Gesamtrechnungsbetrag) ;
BlockSLGANachricht.SegmentGES00.Gesamtbruttobetrag.SetDecimalValue(info.Gesamtbruttobetrag);
BlockSLGANachricht.SegmentGES00.GesamtbetragZuzahlung.SetDecimalValue(info.GesamtbetragZuzahlung);
// GES
BlockSLGANachricht.SegmentGES.Status.SetValue(string.Empty);
BlockSLGANachricht.SegmentGES.Gesamtrechnungsbetrag.SetValue(string.Empty);
BlockSLGANachricht.SegmentGES.Gesamtbruttobetrag.SetValue(string.Empty);
BlockSLGANachricht.SegmentGES.GesamtbetragZuzahlung.SetValue(string.Empty);
BlockSLGANachricht.SegmentGES.Status.SetValue(info.Summenstatus.Value);
BlockSLGANachricht.SegmentGES.Gesamtrechnungsbetrag.SetDecimalValue(info.Gesamtrechnungsbetrag);
BlockSLGANachricht.SegmentGES.Gesamtbruttobetrag.SetDecimalValue(info.Gesamtbruttobetrag);
BlockSLGANachricht.SegmentGES.GesamtbetragZuzahlung.SetDecimalValue(info.GesamtbetragZuzahlung);
// NAM
BlockSLGANachricht.SegmentNAM.Name1.SetValue(string.Empty);
BlockSLGANachricht.SegmentNAM.Name2.SetValue(string.Empty);
BlockSLGANachricht.SegmentNAM.Name3.SetValue(string.Empty);
BlockSLGANachricht.SegmentNAM.Name4.SetValue(string.Empty);
BlockSLGANachricht.SegmentNAM.Name1.SetValue(info.Name1);
BlockSLGANachricht.SegmentNAM.Name2.SetValue(info.Name2);
BlockSLGANachricht.SegmentNAM.Name3.SetValue(info.Name3);
BlockSLGANachricht.SegmentNAM.Name4.SetValue(info.Name4);
// End
BlockSLGAUNT.AnzahlEinheiten.SetFilledIntValue(SegmentSLGACounter, 6);
BlockSLGAUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrichtenreferenznummer, 5);
BlockSLGAUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
}
public void GenerateBlockSLLA()
public void GenerateBlockSLLA(DakotaFileInfo info)
{
SegmentSLLACounter++;
AnzahlUNHCounter++;
var nachrichtenreferenznummer = NachrichtenreferenzCounter++;
var nachrefnum = ++AnzahlUNHCounter;
// Head
BlockSLLAUNH.Nachrichtenreferenznummer.SetFilledIntValue(NachrichtenreferenzCounter, 5);
BlockSLLAUNH.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
BlockSLLAUNH.NachrichtenTypKennung.SetValue("SLLA");
BlockSLLAUNH.Verionsnummer.SetValue("18");
BlockSLLAUNH.FreigabeNrDesTypes.SetValue("0");
@@ -150,22 +138,21 @@ namespace Dakota
// Body
// FKT Funktion
BlockSLLANachricht.SegmentSLLAFKT.Verarbeitungskennzeichen.SetValue("01");
BlockSLLANachricht.SegmentSLLAFKT.IKLeistungserbringers.SetValue(string.Empty);
BlockSLLANachricht.SegmentSLLAFKT.IKKostenträgers.SetValue(string.Empty);
BlockSLLANachricht.SegmentSLLAFKT.IKKrankenkasse.SetValue(string.Empty);
BlockSLLANachricht.SegmentSLLAFKT.IKRechnungsstellers.SetValue(string.Empty);
BlockSLLANachricht.SegmentSLLAFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen.Value);
BlockSLLANachricht.SegmentSLLAFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringers);
BlockSLLANachricht.SegmentSLLAFKT.IKKostenträgers.SetValue(info.IKKostenträger);
BlockSLLANachricht.SegmentSLLAFKT.IKKrankenkasse.SetValue(info.IKKrankenkasse);
//BlockSLLANachricht.SegmentSLLAFKT.IKRechnungsstellers.SetValue(string.Empty);
// REC
var slgarec = BlockSLGANachricht.SegmentREC;
BlockSLLANachricht.SegmentSLLAREC.SammelRechnungsnummer.SetValue(slgarec.SammelRechnungsnummer.GetValue());
BlockSLLANachricht.SegmentSLLAREC.EinzelRechnungsnummer.SetValue(slgarec.EinzelRechnungsnummer.GetValue());
BlockSLLANachricht.SegmentSLLAREC.Datum.SetValue(slgarec.Datum.GetValue());
BlockSLLANachricht.SegmentSLLAREC.Rechnungsart.SetValue(slgarec.Rechnungsart.GetValue());
BlockSLLANachricht.SegmentSLLAREC.SammelRechnungsnummer.SetValue(info.Rechnungsnummer);
BlockSLLANachricht.SegmentSLLAREC.EinzelRechnungsnummer.SetValue("0");
BlockSLLANachricht.SegmentSLLAREC.Datum.SetValue(info.Rechnungsdatum.ToString("yyyyMMdd"));
BlockSLLANachricht.SegmentSLLAREC.Rechnungsart.SetValue(info.Rechnungsart.Value);
// INV
// Information Versicherte
BlockSLLANachricht.SegmentSLLAINV.VersichertenNummer.SetValue(string.Empty);
BlockSLLANachricht.SegmentSLLAINV.Versichertenstatus.SetValue(string.Empty);
BlockSLLANachricht.SegmentSLLAINV.Beleginformation.SetValue(string.Empty);
BlockSLLANachricht.SegmentSLLAINV.Beleginformation.SetValue("0");
BlockSLLANachricht.SegmentSLLAINV.Belegnummer.SetValue(string.Empty);
BlockSLLANachricht.SegmentSLLAINV.KennzeichenBesondereVersorgungsform.SetValue(string.Empty);
// URI
@@ -207,8 +194,8 @@ namespace Dakota
// TXT
pos.SegmentSLLATXT.Text.SetValue(string.Empty);
// MWS
pos.SegmentSLLAMWS.Mehrwertsteuersatz.SetValue(string.Empty);
pos.SegmentSLLAMWS.BetragMehrwertsteuer.SetValue(string.Empty);
//pos.SegmentSLLAMWS.Mehrwertsteuersatz.SetValue(string.Empty);
//pos.SegmentSLLAMWS.BetragMehrwertsteuer.SetValue(string.Empty);
BlockSLLANachricht.AddPosition(pos);
}
@@ -231,22 +218,74 @@ namespace Dakota
// End
BlockSLLAUNT.AnzahlEinheiten.SetFilledIntValue(SegmentSLLACounter, 6);
BlockSLLAUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrichtenreferenznummer, 5);
BlockSLLAUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
}
public void GenerateUNZ()
public void GenerateUNZ(DakotaFileInfo info)
{
SegmentUNZ.AnzahlNachrichten.SetFilledIntValue(AnzahlUNHCounter, 6);
var datenaustauschreferenz = SegmentUNB.Datenaustauschreferenz.GetValue();
SegmentUNZ.Datenaustauschreferenz.SetValue(datenaustauschreferenz);
SegmentUNZ.Datenaustauschreferenz.SetFilledIntValue(info.Datenaustauschreferenz, 5);
}
public void IncrementCounter()
public void foo(long? invoiceBaseOid)
{
if (DatenaustauschreferenzCounter == 99999)
DatenaustauschreferenzCounter = 0;
//var serviceInvoice = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(invoiceBaseOid.Value);
DatenaustauschreferenzCounter++;
//if (!serviceInvoice.Oid.HasValue)
// return;
//if (serviceInvostring.IsNullOrEmpty(serviceInvoiceOid))
// return;
//var serviceInvoiceOid = serviceInvoice.Oid.Value;
//var serviceInvoiceOid2CostbearerId = new Dictionary<long, string>();
//var dcList = new List<ServiceInvoiceDC>();
// var oid = long.Parse(oidStr);
// // Lade ServiceInvoice
// var invoice = DAOFactory.GenericDAO.LoadByID<ServiceInvoice>(oid);
// var dc = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(invoice);
// // Füge dcListe hinzu
// dcList.Add(dc);
// // Falls ServiceInvoice Oid bereits in serviceInvoiceOid2CostbearerOid List (S2C List) ist, überspringe
// if (serviceInvoiceOid2CostbearerId.ContainsKey(oid))
// continue;
// // ServiceInvoice Oid ist noch nicht in S2C List
// // Frage, ob InvoiceId existiert
// if (!String.IsNullOrEmpty(invoice.InvoiceBase.InvoiceId))
// // Falls InvoiceId existiert
// serviceInvoiceOid2CostbearerId.Add(oid, invoice.InvoiceBase.InvoiceId);
//}
//IBeWoReport<ServiceInvoiceRO> allReports = null;
//foreach (var iDC in dcList)
//{
// String reportId = null;
// if (serviceInvoiceOid2CostbearerId.ContainsKey(iDC.ServiceInvoiceOid.Value))
// reportId = serviceInvoiceOid2CostbearerId[iDC.ServiceInvoiceOid.Value];
// IBeWoReport<ServiceInvoiceRO> singleReport = FindReportImp<ServiceInvoiceRO>(reportId);
// singleReport.SetReportDataSource(ServiceInvoiceRO.Create(iDC));
// ((XtraReport)singleReport).CreateDocument();
// if (allReports == null)
// allReports = singleReport;
// else
// ((XtraReport)allReports).Pages.AddRange(((XtraReport)singleReport).Pages);
//}
//return allReports as XtraReport;
}
public string GetRows()
{
return SozioTherapieEinzelnachweis.GetRows();
}
}
}

178
Dakota/DakotaFileInfo.cs Normal file
View File

@@ -0,0 +1,178 @@
using Dakota.Models.Schlüssel;
using System;
namespace Dakota
{
/// <summary>
/// Klasse zum Erzeugen von Dakota Files
/// </summary>
public class DakotaFileInfo
{
private int _Datenaustauschreferenz;
/// <summary>
/// IK des Absenders ( Abrechnungsstelle mit oder ohne Inkassobefugnis oder LE)
/// Genutzt werden die ersten 9 Stellen;
/// einzutragen ist das IK der absendenden Stelle.
/// Diese Angabe muss übereinstimmen mit SLGA.FKT.IK Absender der Datei.
/// </summary>
public string Absenderbezeichnung { get; set; }
/// <summary>
/// IK des Empfängers (d.h. Datenannahmestelle mit Entschlüsselungsbefugnis);
/// genutzt werden die ersten 9 Stellen;
/// einzutragen ist das IK der empfangenden Stelle
/// </summary>
public string Empfangerbezeichnung { get; set; }
/// <summary>
/// Ab Version 12 ist die Datenaustauschreferenz zwingend zu füllen.
/// Genutzt werden die ersten 5 Stellen;
/// einzutragen ist die fortlaufende
/// Nummer der Lieferungen zwischen
/// Absender und Empfänger mit führenden Nullen.
/// Bei Überlauf der Datenaustauschreferenz („99999“) ist wieder
/// bei Eins(„00001“) zu beginnen
/// </summary>
public int Datenaustauschreferenz
{
get { return _Datenaustauschreferenz; }
set
{
if (value < 1)
throw new ArgumentOutOfRangeException("Datenaustauschreferenz", "Referenz darf nicht negativ sein");
else if (value == 0)
throw new ArgumentOutOfRangeException("Datenaustauschreferenz", "Referenz darf nicht gleich null sein");
else if (value > 100000)
throw new ArgumentOutOfRangeException("Datenaustauschreferenz", "Referenz darf nicht größer als 99999 sein");
else if (value == 100000)
value = 1;
_Datenaustauschreferenz = value;
}
}
/// <summary>
/// Genutzt werden die ersten 11 Stellen;
/// einzutragen ist der logische Dateiname s.Anhang 1 zur Anlage 1
/// zum Kapitel 4.
/// </summary>
public string Anwendungsreferenz { get; set; }
/// <summary>
/// Inhalt = 0 wenn Testdatei
/// Inhalt = 1 wenn Erprobungsdatei
/// Inhalt = 2 wenn Echtdatei
/// </summary>
public SchlüsselTestindikator Testindikator { get; set; }
/// <summary>
/// Es ist das IK des Leistungserbringers
/// anzugeben mit folgender Ausnahme:
/// Erfolgt die Abrechnung über eine
/// Abrechnungsstelle mit Inkassovollmacht, so ist in der Sammelrechnungs-SLGA das IK der Abrechnungsstelle anzugeben.
/// </summary>
public string IKLeistungserbringers { get; set; }
/// <summary>
/// Einzutragen ist das IK des Kostenträ-
/// gers auf den das IK der KV-Karte in
/// der Kostenträgerdatei verweist; diese
/// Angabe ist identisch mit dem IK des
/// Kostenträgers im FKT-Segment der
/// zugehörigen SLLA-Nachricht.
/// </summary>
public string IKKostenträger { get; set; }
/// <summary>
/// IK der Krankenkasse von der KVKarte bzw. der ärztlichen Verordnung
/// ist zwingend anzugeben, außer es
/// handelt sich um eine Sammelrechnung-SLGA.Bei allen SLGA-Nachrichten als Gesamtrechnung ist diese
/// Angabe identisch mit SLLA.FKT.IK der
/// Krankenkasse der zugehörigen SLLANachricht.
/// </summary>
public string IKKrankenkasse { get; set; }
/// <summary>
/// Die Einzel-Rechnungsnummer ist zusätzlich zur Sammel-Rechnungsnummer anzugeben, wenn eine SLGANachricht als Sammelrechnung zusätzlich in der Nutzdatendatei übermittelt
/// wird, ansonsten wird lediglich das Datenelement Sammel-Rechnungsnummer gefüllt und die Einzel-Rechnungsnummer auf „0“ gesetzt(zum Beispiel
/// 00234567:0
/// </summary>
public string Rechnungsnummer { get; set; }
/// <summary>
/// Rechnungsdatum JJJJMMTT
/// </summary>
public DateTime Rechnungsdatum { get; set; }
/// <summary>
/// Siehe Schlüssel Summenstatus
/// Anlage 3 Abschnitt 8.1.6
/// </summary>
public SchlüsselSummenstatus Summenstatus { get; set; }
/// <summary>
/// Bei Verarbeitungskennzeichen „01“,
/// „02“ und „04“:
/// Gesamtrechnungsbetrag(ggf.inklusive Mehrwertsteuer)
/// Berechnungsregel:
/// GES.Gesamtbruttobetrag minus
/// GES.Gesamtbetrag Zuzahlung und/oder Eigenanteil und/oder Pauschale
/// Korrekturbetrag.
/// Bei Verarbeitungskennzeichen „03“:
/// Entspricht dem Wert aus GES.Gesamtbetrag Zuzahlung und/oder Eigenanteil und/oder Pauschale Korrekturbetrag.
/// </summary>
public decimal Gesamtrechnungsbetrag { get; set; }
/// <summary>
/// Bei Verarbeitungskennzeichen „01“,
/// „02“ und „04“:
/// Summe der Gesamtbruttobeträge der
/// Abrechnungsfälle(inklusive gesetzlicher Zuzahlungsbeträge oder Eigenanteil und/oder Pauschale Korrekturbetrag sowie ggf.Mehrwertsteuer)
/// aus BES.
/// Bei Verarbeitungskennzeichen „03“:
/// Ist der Gesamtbruttobetrag mit 0,00
/// zu übermitteln.
/// </summary>
public decimal Gesamtbruttobetrag { get; set; }
/// <summary>
/// Bei Verarbeitungskennzeichen „01“
/// und „02“:
/// Summe der gesetzlichen Zuzahlungen und/oder der Eigenanteile der
/// Abrechnungsfälle aus BES
/// Berechnungsregel:
/// Summe aller Abrechnungsfälle(BES.Gesambetrag gesetzliche Zuzahlung + BES.Gesamtbetrag Eigenanteil).
/// Bei Verarbeitungskennzeichen „03“:
/// Summe der gesetzlichen Zuzahlungen und/oder der Eigenanteile der
/// Abrechnungsfälle aus GZF
/// Berechnungsregel:
/// Summe aller Abrechnungsfälle(GZF.Gesambetrag gesetzliche Zuzahlung + GZF.Gesamtbetrag Eigenanteil).
/// Bei Verarbeitungskennzeichen „04“:
/// Summe der gesetzlichen Zuzahlungen und/oder der Eigenanteile der
/// Abrechnungsfälle aus BES
/// Berechnungsregel:
/// Summe aller Abrechnungsfälle(BES.Gesambetrag gesetzliche Zuzahlung + BES.Gesamtbetrag Eigenanteil + BES.Pauschale Korrekturbetrag).
/// </summary>
public decimal GesamtbetragZuzahlung { get; set; }
/// <summary>
/// Name bzw. Firmenbezeichnung des
/// Rechnungsstellers(Leistungserbringer oder Abrechnungsstelle
/// </summary>
/// /// <summary>
/// Siehe Schlüssel Rechnungsart
/// Anlage 3 Abschnitt 8.1.4.
/// Dieser Schlüsselwert muss in der
/// Sammelrechnungs-SLGA und allen
/// zugehörigen SLGA-und SLLA-Nachrichten gleich sein.
/// </summary>
public SchlüsselRechnungsart Rechnungsart { get; set; }
public string Name1 { get; set; }
/// <summary>
/// ggf. Ansprechpartner und Telefonnummer.
/// </summary>
public string Name2 { get; set; }
/// <summary>
/// ggf. Ansprechpartner und Telefonnummer.
/// </summary>
public string Name3 { get; set; }
/// <summary>
/// E-Mail-Adresse;
/// zugelassen sind Buchstaben und Ziffern, ausgenommen Umlaute
/// </summary>
public string Name4 { get; set; }
/// <summary>
/// Siehe Schlüssel Verarbeitungskennzeichen Anlage 3 Abschnitt 8.1.7.
/// </summary>
public SchlüsselVerarbeitungskennzeichen Verarbeitungskennzeichen { get; set; }
}
}

View File

@@ -25,11 +25,8 @@ namespace Dakota.Models
/// <summary>
/// Mit diesem Segment kann zu jeder abzurechnenden Position
/// Mehrwertsteuer angegeben werden.Benutzt werden soll das
/// Segment nur dann, wenn dem in ENF genannten Einzelbetrag
/// die Mehrwertsteuer hinzuzurechnen ist.
/// </summary>
public SegmentSLLAMWS SegmentSLLAMWS { get; private set; }
/// <summary>
/// Segment nur dann, wenn dem in ENF genannten Einzelbetrag
/// die Mehrwertsteuer hinzuzurechnen ist.
/// </summary>
///public SegmentSLLAMWS SegmentSLLAMWS { get; private set; }
@@ -37,12 +34,14 @@ namespace Dakota.Models
public Abrechnungsposition()
{
SegmentSLLAENF = new SegmentSLLAENF();
SegmentSLLAENF = new SegmentSLLAENF();
SegmentSLLASUT = new SegmentSLLASUT();
SegmentSLLATXT = new SegmentSLLATXT();
//SegmentSLLAMWS = new SegmentSLLAMWS();
}
public List<Segment> GetSegments()
{
return new List<Segment>() { SegmentSLLAENF, SegmentSLLASUT, SegmentSLLATXT,
};
//SegmentSLLAMWS };

View File

@@ -28,7 +28,7 @@ namespace Dakota.Models.Datei
public string GetRows()
{
return UNH.GetValue() + NachrichtSLGA.GetRows() + UNT.GetValue() + string.Join("", BlockKrankenkarteVerordnung.Select(x => x.GetRows()));
return UNH.GetRows() + NachrichtSLGA.GetRows() + UNT.GetRows() + string.Join("", BlockKrankenkarteVerordnung.Select(x => x.GetRows()));
}
}
}

View File

@@ -32,8 +32,8 @@ namespace Dakota.Models.Datei
public string GetRows()
{
return SLGAUNH.GetValue() + SLGANachricht2.GetRows() + SLGAUNT.GetValue() +
SLLAUNH.GetValue() + SLLANachricht2.GetRows() + SLLAUNT.GetValue();
return SLGAUNH.GetRows() + SLGANachricht2.GetRows() + SLGAUNT.GetRows() +
SLLAUNH.GetRows() + SLLANachricht2.GetRows() + SLLAUNT.GetRows();
}
}
}

View File

@@ -20,7 +20,7 @@ namespace Dakota.Models.Datei
public string GetRows()
{
return UNB.GetValue() + string.Join(string.Empty, BlockKostenträger.Select(x => x.GetRows())) + UNZ.GetValue();
return UNB.GetRows() + string.Join(string.Empty, BlockKostenträger.Select(x => x.GetRows())) + UNZ.GetRows();
}
}
}

View File

@@ -22,7 +22,7 @@ namespace Dakota.Models.Datei
public string GetRows()
{
return UNB.GetValue() + string.Join(string.Empty, BlockKrankenkarteVerordnung.GetRows() + UNZ.GetValue());
return UNB.GetRows() + string.Join(string.Empty, BlockKrankenkarteVerordnung.GetRows() + UNZ.GetRows());
}
}
}

View File

@@ -10,6 +10,8 @@ namespace Dakota.Models
{
public abstract string GetValue();
public string Title { get; set; }
public bool HasValue()
{
return GetValue() is string;

View File

@@ -12,19 +12,21 @@ namespace Dakota.Models
public Feldart Feldart { get; set; }
public Datenelement()
public Datenelement(string title)
{
Title = title;
_IsDecimal = false;
}
public Datenelement(int min, int max, Feldart art) : this()
public Datenelement(string title, int min, int max, Feldart art) : this(title)
{
MinStellen = min;
MaxStellen = max;
Feldart = art;
}
public Datenelement(int count, Feldart art) : this(count, count, art)
public Datenelement(string title, int count, Feldart art) : this(title, count, count, art)
{
}
@@ -69,12 +71,12 @@ namespace Dakota.Models
{
if (value.Length < MinStellen || value.Length > MaxStellen)
{
throw new NotImplementedException("Error Code: 3483091097894");
throw new ArgumentOutOfRangeException(Title, value, $"Wertebereich: min:max = ({MinStellen}:{MaxStellen})");
}
}
else
{
throw new NotImplementedException("Error Code: 3483091097893");
throw new ArgumentOutOfRangeException(Title, value, "value ist kein string");
}
DakotaValidator.ClearTextString(value);

View File

@@ -10,11 +10,13 @@ namespace Dakota.Models
{
public Datenelement[] Datenelemente { get; set; }
public Datenelementgruppe(int count)
public Datenelementgruppe(string title, int count)
{
if (count < 2)
throw new ArgumentOutOfRangeException("#37493218741616891269821");
Title = title;
Datenelemente = new Datenelement[count];
}

View File

@@ -48,10 +48,15 @@ namespace Dakota.Models.Nachricht
/// Imagearchiven durch den Absender.
/// </summary>
public SegmentSLLAIMG SegmentSLLAIMG { get; private set; }
/// <summary>
/// Das Segment dient zur Abrechnung der einzelnen Positionen,
/// die für den abzurechnenden Fall angefallen sind.
/// Es ist so oft
/// wiederholbar, wie Abrechnungspositionen vorkommen.
/// </summary>
public List<Abrechnungsposition> Abrechnungspositions { get; set; }
/// Das Segment enthält allgemeine Angaben zum Abrechnungsfall (Verordnung) und ist zu übermitteln, wenn eine ärztliche
/// Verordnung, ein Reparatur- oder Berechtigungsschein oder
/// <summary>
/// Das Segment enthält Angaben über die Zuzahlung. Das Segment ist bis auf weiteres nicht zu übermitteln. Das Segment ist
/// für spätere Ausprägungen reserviert.
/// </summary>
public SegmentSLLAZUV SegmentSLLAZUV { get; private set; }

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssel
{
public abstract class Schlüssel
{
public string Value { get; set; }
public Schlüssel(string val)
{
Value = val;
}
}
}

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssel
{
public class SchlüsselRechnungsart : Schlüssel
{
public SchlüsselRechnungsart(string val) : base(val) { }
public static SchlüsselRechnungsart DerzeitNichtBelegt => new SchlüsselRechnungsart("0");
public static SchlüsselRechnungsart AbrechnungVonLeistungserbringer => new SchlüsselRechnungsart("1");
public static SchlüsselRechnungsart AbrechnungÜberAbrechnungsstelleOhnInkassovollmacht => new SchlüsselRechnungsart("2");
public static SchlüsselRechnungsart AbrechnungÜberAbrechnungsstelleMitInkassovollmacht => new SchlüsselRechnungsart("3");
}
}

View File

@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssel
{
public class SchlüsselSummenstatus : Schlüssel
{
public SchlüsselSummenstatus(string val) : base(val) { }
public static SchlüsselSummenstatus Gesamtsumme => new SchlüsselSummenstatus("00");
public static SchlüsselSummenstatus Mitglieder => new SchlüsselSummenstatus("11");
public static SchlüsselSummenstatus Angehörige => new SchlüsselSummenstatus("31");
public static SchlüsselSummenstatus Rentner => new SchlüsselSummenstatus("51");
public static SchlüsselSummenstatus NichtZugehörigerStatus => new SchlüsselSummenstatus("99");
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssel
{
public class SchlüsselTestindikator : Schlüssel
{
public SchlüsselTestindikator(string val) : base(val) { }
public static SchlüsselTestindikator Testdatei => new SchlüsselTestindikator("0");
public static SchlüsselTestindikator Erprobungsdatei => new SchlüsselTestindikator("1");
public static SchlüsselTestindikator Echtdatei => new SchlüsselTestindikator("2");
}
}

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssel
{
public class SchlüsselVerarbeitungskennzeichen : Schlüssel
{
public SchlüsselVerarbeitungskennzeichen(string val) : base(val) { }
public static SchlüsselVerarbeitungskennzeichen AbrechnungOhneBesonderheit => new SchlüsselVerarbeitungskennzeichen("01");
public static SchlüsselVerarbeitungskennzeichen Nachforderung => new SchlüsselVerarbeitungskennzeichen("02");
public static SchlüsselVerarbeitungskennzeichen Zuzahlungsforderung => new SchlüsselVerarbeitungskennzeichen("03");
public static SchlüsselVerarbeitungskennzeichen Korrekturrechnung => new SchlüsselVerarbeitungskennzeichen("04");
}
}

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLGA
{
/// <summary>
/// Das Segment ist je Nachricht einmal
@@ -52,12 +52,12 @@ namespace Dakota.Models.Segmente
public SegmentSLGAFKT()
{
Verarbeitungskennzeichen = new Datenelement(2, Feldart.Muss);
Sammelrechnung = new Datenelement(1, Feldart.Kann);
IKLeistungserbringers = new Datenelement(9, Feldart.Muss);
IKKostenträger = new Datenelement(9, Feldart.Muss);
IKKrankenkasse = new Datenelement(9, Feldart.Kann);
IKAbsender = new Datenelement(9, Feldart.Muss);
Verarbeitungskennzeichen = new Datenelement("Verarbeitungskennzeichen", 2, Feldart.Muss);
Sammelrechnung = new Datenelement("Sammelrechnung", 1, Feldart.Kann);
IKLeistungserbringers = new Datenelement("IKLeistungserbringers", 9, Feldart.Muss);
IKKostenträger = new Datenelement("IKKostenträger", 9, Feldart.Muss);
IKKrankenkasse = new Datenelement("IKKrankenkasse", 9, Feldart.Kann);
IKAbsender = new Datenelement("IKAbsender", 9, Feldart.Muss);
}
public override string GetHead() => "FKT";

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLGA
{
/// <summary>
/// Das Segment muss je Nachricht mindestens zweimal und kann höchstens
@@ -69,10 +69,10 @@ namespace Dakota.Models.Segmente
public SegmentSLGAGES()
{
Status = new Datenelement(2, Feldart.Muss);
Gesamtrechnungsbetrag = new Datenelement(3, 13, Feldart.Muss);
Gesamtbruttobetrag = new Datenelement(3, 13, Feldart.Muss);
GesamtbetragZuzahlung = new Datenelement(3, 13, Feldart.Kann);
Status = new Datenelement("Status", 2, Feldart.Muss);
Gesamtrechnungsbetrag = new Datenelement("Gesamtrechnungsbetrag", 3, 13, Feldart.Muss);
Gesamtbruttobetrag = new Datenelement("Gesamtbruttobetrag", 3, 13, Feldart.Muss);
GesamtbetragZuzahlung = new Datenelement("GesamtbetragZuzahlung", 3, 13, Feldart.Kann);
}
public override string GetHead() => "GES";

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLGA
{
/// <summary>
/// Das Segment ist je Nachricht einmal
@@ -33,10 +33,10 @@ namespace Dakota.Models.Segmente
public SegmentSLGANAM()
{
Name1 = new Datenelement(0, 30, Feldart.Muss);
Name2 = new Datenelement(0, 30, Feldart.Kann);
Name3 = new Datenelement(0, 30, Feldart.Kann);
Name4 = new Datenelement(0, 70, Feldart.Kann);
Name1 = new Datenelement("Name1", 0, 30, Feldart.Muss);
Name2 = new Datenelement("Name2", 0, 30, Feldart.Kann);
Name3 = new Datenelement("Name3", 0, 30, Feldart.Kann);
Name4 = new Datenelement("Name4", 0, 70, Feldart.Kann);
}
public override string GetHead() => "NAM";

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLGA
{
/// <summary>
/// Das Segment ist je Nachricht einmal zu
@@ -69,11 +69,11 @@ namespace Dakota.Models.Segmente
public SegmentSLGAREC()
{
Rechnungsnummer = new Datenelementgruppe(2);
SammelRechnungsnummer = Rechnungsnummer.Datenelemente[0] = new Datenelement(0, 14, Feldart.Muss);
EinzelRechnungsnummer = Rechnungsnummer.Datenelemente[1] = new Datenelement(0, 6, Feldart.Muss);
Datum = new Datenelement(8, Feldart.Muss);
Rechnungsart = new Datenelement(1, Feldart.Muss);
Rechnungsnummer = new Datenelementgruppe("Rechnungsnummer", 2);
SammelRechnungsnummer = Rechnungsnummer.Datenelemente[0] = new Datenelement("SammelRechnungsnummer", 0, 14, Feldart.Muss);
EinzelRechnungsnummer = Rechnungsnummer.Datenelemente[1] = new Datenelement("EinzelRechnungsnummer", 0, 6, Feldart.Muss);
Datum = new Datenelement("Datum", 8, Feldart.Muss);
Rechnungsart = new Datenelement("Rechnungsart", 1, Feldart.Muss);
}
public override List<Dateneinheit> GetBody()

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLGA
{
/// <summary>
/// Das Segment kann je Nachricht
@@ -31,8 +31,8 @@ namespace Dakota.Models.Segmente
public SegmentSLGASKO()
{
SkontoProzent = new Datenelement(3, 5, Feldart.Muss);
Zahlungsziel = new Datenelement(0, 3, Feldart.Muss);
SkontoProzent = new Datenelement("SkontoProzent", 3, 5, Feldart.Muss);
Zahlungsziel = new Datenelement("Zahlungsziel", 0, 3, Feldart.Muss);
}
public override string GetHead() => "SKO";

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLGA
{
/// <summary>
/// Das Segment kann je Nachricht einmal übermittelt werden. Es ist nicht
@@ -25,8 +25,8 @@ namespace Dakota.Models.Segmente
public SegmentSLGAUST()
{
Steuernummer = new Datenelement(0, 20, Feldart.Muss);
Kennung = new Datenelement(1, Feldart.Kann);
Steuernummer = new Datenelement("Steuernummer", 0, 20, Feldart.Muss);
Kennung = new Datenelement("Kennung", 1, Feldart.Kann);
}
public override string GetHead() => "UST";

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
/// Das Segment ist je Abrechnungsfall
@@ -46,11 +46,11 @@ namespace Dakota.Models.Segmente
public SegmentSLLABES()
{
GesamtbetragBrutto = new Datenelement(3, 13, Feldart.Muss);
GesamtbetragGesetzlicheZuzahlung = new Datenelement(3, 13, Feldart.Kann);
GesamtbetragProzentualeZuzahlung = new Datenelement(3, 13, Feldart.Kann);
PauschalerZuzahlungsbetrag = new Datenelement(3, 13, Feldart.Kann);
GesamtbetragEigenanteil = new Datenelement(3, 13, Feldart.Kann);
GesamtbetragBrutto = new Datenelement("GesamtbetragBrutto", 3, 13, Feldart.Muss);
GesamtbetragGesetzlicheZuzahlung = new Datenelement("GesamtbetragGesetzlicheZuzahlung", 3, 13, Feldart.Kann);
GesamtbetragProzentualeZuzahlung = new Datenelement("GesamtbetragProzentualeZuzahlung", 3, 13, Feldart.Kann);
PauschalerZuzahlungsbetrag = new Datenelement("PauschalerZuzahlungsbetrag", 3, 13, Feldart.Kann);
GesamtbetragEigenanteil = new Datenelement("GesamtbetragEigenanteil", 3, 13, Feldart.Kann);
}
public override string GetHead() => "BES";

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
/// Das Segment ist 1 mal je Diagnose
@@ -25,8 +25,8 @@ namespace Dakota.Models.Segmente
public SegmentSLLADIA()
{
Diagnoseschlüssel = new Datenelement(0, 12, Feldart.Kann);
Diagnosetext = new Datenelement(0, 70, Feldart.Kann);
Diagnoseschlüssel = new Datenelement("Diagnoseschlüssel", 0, 12, Feldart.Kann);
Diagnosetext = new Datenelement("Diagnosetext", 0, 70, Feldart.Kann);
}
public override string GetHead() => "DIA";

View File

@@ -1,6 +1,6 @@
using System.Collections.Generic;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
/// Das Segment ist für jede Abrechnungsposition, bezogen auf den Tag /// der Leistungserbringung, einmal zu /// übermitteln
@@ -88,15 +88,15 @@ namespace Dakota.Models.Segmente
public SegmentSLLAENF()
{
Identifikationsnummer = new Datenelement(0, 3, Feldart.Kann);
Leistungserbringergruppe = new Datenelementgruppe(2);
Abrechnungscode = Leistungserbringergruppe.Datenelemente[0] = new Datenelement(2, Feldart.Muss);
Tarifkennzeichen = Leistungserbringergruppe.Datenelemente[1] = new Datenelement(5, Feldart.Muss);
ArtLeistung = new Datenelement(0, 10, Feldart.Muss);
AnzahlMenge = new Datenelement(3, 7, Feldart.Muss);
EinzelbetragAbrechnungsposition = new Datenelement(3, 13, Feldart.Muss);
DatumLeistungserbringung = new Datenelement(8, Feldart.Muss);
BetragZuzahlung = new Datenelement(3, 13, Feldart.Kann);
Identifikationsnummer = new Datenelement("Identifikationsnummer", 0, 3, Feldart.Kann);
Leistungserbringergruppe = new Datenelementgruppe("Leistungserbringergruppe", 2);
Abrechnungscode = Leistungserbringergruppe.Datenelemente[0] = new Datenelement("Abrechnungscode", 2, Feldart.Muss);
Tarifkennzeichen = Leistungserbringergruppe.Datenelemente[1] = new Datenelement("Tarifkennzeichen", 5, Feldart.Muss);
ArtLeistung = new Datenelement("ArtLeistung", 0, 10, Feldart.Muss);
AnzahlMenge = new Datenelement("AnzahlMenge", 3, 7, Feldart.Muss);
EinzelbetragAbrechnungsposition = new Datenelement("EinzelbetragAbrechnungsposition", 3, 13, Feldart.Muss);
DatumLeistungserbringung = new Datenelement("DatumLeistungserbringung", 8, Feldart.Muss);
BetragZuzahlung = new Datenelement("BetragZuzahlung", 3, 13, Feldart.Kann);
}
public override string GetHead() => "ENF";

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
/// Das Segment ist je Nachricht einmal zu übermitteln.
@@ -51,12 +51,12 @@ namespace Dakota.Models.Segmente
public SegmentSLLAFKT()
{
Verarbeitungskennzeichen = new Datenelement(2, Feldart.Muss);
Freifeld = new Datenelement(1, Feldart.Kann);
IKLeistungserbringers = new Datenelement(9, Feldart.Muss);
IKKostenträgers = new Datenelement(9, Feldart.Muss);
IKKrankenkasse = new Datenelement(9, Feldart.Muss);
IKRechnungsstellers = new Datenelement(9, Feldart.Kann);
Verarbeitungskennzeichen = new Datenelement("Verarbeitungskennzeichen", 2, Feldart.Muss);
Freifeld = new Datenelement("Freifeld", 1, Feldart.Kann);
IKLeistungserbringers = new Datenelement("IKLeistungserbringers", 9, Feldart.Muss);
IKKostenträgers = new Datenelement("IKKostenträgers", 9, Feldart.Muss);
IKKrankenkasse = new Datenelement("IKKrankenkasse", 9, Feldart.Muss);
IKRechnungsstellers = new Datenelement("IKRechnungsstellers", 9, Feldart.Kann);
}
public override string GetHead() => "FKT";

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
/// Das Segment kann für jeden Abrechnungsfall einmal übermittelt
@@ -27,9 +27,9 @@ namespace Dakota.Models.Segmente
public SegmentSLLAIMG()
{
Abrechnungsjahr = new Datenelement(4, Feldart.Muss);
Abrechnungsmonat = new Datenelement(2, Feldart.Muss);
Identifikationsmerkmal = new Datenelement(9, Feldart.Muss);
Abrechnungsjahr = new Datenelement("Abrechnungsjahr", 4, Feldart.Muss);
Abrechnungsmonat = new Datenelement("Abrechnungsmonat", 2, Feldart.Muss);
Identifikationsmerkmal = new Datenelement("Identifikationsmerkmal", 9, Feldart.Muss);
}
public override string GetHead() => "IMG";

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
/// Das Segment ist je Abrechnungsfall
@@ -41,11 +41,11 @@ namespace Dakota.Models.Segmente
public SegmentSLLAINV()
{
VersichertenNummer = new Datenelement(0, 12, Feldart.Kann);
Versichertenstatus = new Datenelement(5, Feldart.Kann);
Beleginformation = new Datenelement(1, Feldart.Kann);
Belegnummer = new Datenelement(0, 10, Feldart.Muss);
KennzeichenBesondereVersorgungsform = new Datenelement(0, 25, Feldart.Kann);
VersichertenNummer = new Datenelement("VersichertenNummer", 0, 12, Feldart.Kann);
Versichertenstatus = new Datenelement("Versichertenstatus", 5, Feldart.Kann);
Beleginformation = new Datenelement("Beleginformation", 1, Feldart.Kann);
Belegnummer = new Datenelement("Belegnummer", 0, 10, Feldart.Muss);
KennzeichenBesondereVersorgungsform = new Datenelement("KennzeichenBesondereVersorgungsform", 0, 25, Feldart.Kann);
}
public override string GetHead() => "INV";

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
/// Das Segment ist nur dann zu übermitteln, wenn für die abrechnungsfähige Einzelposition (ENF) zusätzlich Mehrwertsteuer vertraglich vereinbart ist.
@@ -25,8 +25,8 @@ namespace Dakota.Models.Segmente
public SegmentSLLAMWS()
{
Mehrwertsteuersatz = new Datenelement(3, 8, Feldart.Muss);
BetragMehrwertsteuer = new Datenelement(3, 13, Feldart.Muss);
Mehrwertsteuersatz = new Datenelement("Mehrwertsteuersatz", 3, 8, Feldart.Muss);
BetragMehrwertsteuer = new Datenelement("BetragMehrwertsteuer", 3, 13, Feldart.Muss);
}
public override string GetHead() => "MWS";

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
/// Das Segment ist je Abrechnungsfall
@@ -51,13 +51,13 @@ namespace Dakota.Models.Segmente
public SegmentSLLANAD()
{
Nachname = new Datenelement(0, 47, Feldart.Muss);
Vorname = new Datenelement(0, 30, Feldart.Muss);
Geburtsdatum = new Datenelement(8, Feldart.Muss);
StraßeNr = new Datenelement(0, 30, Feldart.Kann);
PLZ = new Datenelement(0, 7, Feldart.Kann);
Wohnort = new Datenelement(0, 25, Feldart.Kann);
Länderkennzeichen = new Datenelement(0, 3, Feldart.Kann);
Nachname = new Datenelement("Nachname", 0, 47, Feldart.Muss);
Vorname = new Datenelement("Vorname", 0, 30, Feldart.Muss);
Geburtsdatum = new Datenelement("Geburtsdatum", 8, Feldart.Muss);
StraßeNr = new Datenelement("StraßeNr", 0, 30, Feldart.Kann);
PLZ = new Datenelement("PLZ", 0, 7, Feldart.Kann);
Wohnort = new Datenelement("Wohnort", 0, 25, Feldart.Kann);
Länderkennzeichen = new Datenelement("Länderkennzeichen", 0, 3, Feldart.Kann);
}
public override string GetHead() => "NAD";

View File

@@ -1,10 +1,11 @@
using System;
using Dakota.Models.Segmente.SLGA;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
/// Das Segment ist je Nachricht einmal zu

View File

@@ -1,6 +1,6 @@
using System.Collections.Generic;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
/// Das Segment ist je Abrechnungsfall /// einmal zu übermitteln, wenn eine
@@ -24,9 +24,9 @@ namespace Dakota.Models.Segmente
public SegmentSLLASKZ()
{
Genehmigungskennzeichen = new Datenelement(0, 20, Feldart.Muss);
DatumGenehmigung = new Datenelement(8, Feldart.Muss);
ArtGenehmigung = new Datenelement(2, Feldart.Muss);
Genehmigungskennzeichen = new Datenelement("Genehmigungskennzeichen", 0, 20, Feldart.Muss);
DatumGenehmigung = new Datenelement("DatumGenehmigung", 8, Feldart.Muss);
ArtGenehmigung = new Datenelement("ArtGenehmigung", 2, Feldart.Muss);
}
public override string GetHead() => "SKZ";

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
/// Das Segment kann je Abrechnungsposition (ENF) einmal übermittelt
@@ -44,12 +44,12 @@ namespace Dakota.Models.Segmente
public SegmentSLLASUT()
{
GefahreneKilometer = new Datenelement(0, 6, Feldart.Kann);
Uhrzeit = new Datenelement(4, Feldart.Kann);
UhrzeitBis = new Datenelement(4, Feldart.Kann);
Dauer = new Datenelement(0, 4, Feldart.Kann);
VersorgungszeitraumVon = new Datenelement(8, Feldart.Kann);
VersorgungszeitraumBis = new Datenelement(8, Feldart.Kann);
GefahreneKilometer = new Datenelement("GefahreneKilometer", 0, 6, Feldart.Kann);
Uhrzeit = new Datenelement("Uhrzeit", 4, Feldart.Kann);
UhrzeitBis = new Datenelement("UhrzeitBis", 4, Feldart.Kann);
Dauer = new Datenelement("Dauer", 0, 4, Feldart.Kann);
VersorgungszeitraumVon = new Datenelement("VersorgungszeitraumVon", 8, Feldart.Kann);
VersorgungszeitraumBis = new Datenelement("VersorgungszeitraumBis", 8, Feldart.Kann);
}
public override string GetHead() => "SUT";

View File

@@ -1,6 +1,6 @@
using System.Collections.Generic;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
/// Das Segment kann je Abrechnungspositionsnummer einmal übermittelt
@@ -16,7 +16,7 @@ namespace Dakota.Models.Segmente
public SegmentSLLATXT()
{
Text = new Datenelement(0, 70, Feldart.Muss);
Text = new Datenelement("Text", 0, 70, Feldart.Muss);
}
public override string GetHead() => "TXT";

View File

@@ -1,6 +1,6 @@
using System.Collections.Generic;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
///
@@ -44,12 +44,12 @@ namespace Dakota.Models.Segmente
public SegmentSLLAURI()
{
UrsprünglichesIKdesLeistungserbringers = new Datenelement(9, Feldart.Muss);
UrsprünglicheRechnungsnummer = new Datenelementgruppe(2);
UrsprünglicheSammelRechnungsnummer = UrsprünglicheRechnungsnummer.Datenelemente[0] = new Datenelement(0, 14, Feldart.Muss);
UrsprünglicheEinzelRechnungsnummer = UrsprünglicheRechnungsnummer.Datenelemente[1] = new Datenelement(0, 6, Feldart.Muss);
UrsprünglichesRechnungsdatum = new Datenelement(8, Feldart.Muss);
UrsprünglicheBelegnummer = new Datenelement(0, 10, Feldart.Muss);
UrsprünglichesIKdesLeistungserbringers = new Datenelement("UrsprünglichesIKdesLeistungserbringers", 9, Feldart.Muss);
UrsprünglicheRechnungsnummer = new Datenelementgruppe("UrsprünglicheRechnungsnummer", 2);
UrsprünglicheSammelRechnungsnummer = UrsprünglicheRechnungsnummer.Datenelemente[0] = new Datenelement("UrsprünglicheSammelRechnungsnummer", 0, 14, Feldart.Muss);
UrsprünglicheEinzelRechnungsnummer = UrsprünglicheRechnungsnummer.Datenelemente[1] = new Datenelement("UrsprünglicheEinzelRechnungsnummer", 0, 6, Feldart.Muss);
UrsprünglichesRechnungsdatum = new Datenelement("UrsprünglichesRechnungsdatum", 8, Feldart.Muss);
UrsprünglicheBelegnummer = new Datenelement("UrsprünglicheBelegnummer", 0, 10, Feldart.Muss);
}
public override string GetHead() => "URI";

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
/// Das Segment ist/kann je Abrechnungsfall einmal übermittelt werden.
@@ -49,13 +49,13 @@ namespace Dakota.Models.Segmente
public SegmentSLLAZUV()
{
Betriebsstättennummer = new Datenelement(0, 9, Feldart.Muss);
LebenslangeArztnummer = new Datenelement(0, 9, Feldart.Muss);
VerordnungsAusstellEinsatzdatum = new Datenelement(8, Feldart.Kann);
Zuzahlungskennzeichen = new Datenelement(1, Feldart.Muss);
Unfallkennzeichen = new Datenelement(1, Feldart.Kann);
KennzeichenBVGSonstiges = new Datenelement(1, Feldart.Kann);
KennzeichenVerordnungsbesonderheiten = new Datenelement(1, Feldart.Kann);
Betriebsstättennummer = new Datenelement("Betriebsstättennummer", 0, 9, Feldart.Muss);
LebenslangeArztnummer = new Datenelement("LebenslangeArztnummer", 0, 9, Feldart.Muss);
VerordnungsAusstellEinsatzdatum = new Datenelement("VerordnungsAusstellEinsatzdatum", 8, Feldart.Kann);
Zuzahlungskennzeichen = new Datenelement("Zuzahlungskennzeichen", 1, Feldart.Muss);
Unfallkennzeichen = new Datenelement("Unfallkennzeichen", 1, Feldart.Kann);
KennzeichenBVGSonstiges = new Datenelement("KennzeichenBVGSonstiges", 1, Feldart.Kann);
KennzeichenVerordnungsbesonderheiten = new Datenelement("KennzeichenVerordnungsbesonderheiten", 1, Feldart.Kann);
}
public override string GetHead() => "ZUV";

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Segmente
namespace Dakota.Models.Segmente.SLLA
{
/// <summary>
/// Das Segment ist bei der Abrechnung /// des Leistungserbringergruppensammelschlüssels G - N bis auf weiteres /// nicht zu übermitteln.Das Segment
@@ -48,12 +48,12 @@ namespace Dakota.Models.Segmente
public SegmentSLLAZUZ()
{
Identifikationsnummer = new Datenelement(0, 3, Feldart.Muss);
Bruttobetrag = new Datenelement(3, 13, Feldart.Muss);
Zuzahlungsart = new Datenelement(2, Feldart.Kann);
BetragGesetzlicheZuzahlung = new Datenelement(3, 13, Feldart.Kann);
BetragEigenanteil = new Datenelement(3, 13, Feldart.Kann);
Versorgungszeitraum = new Datenelement(0, 2, Feldart.Kann);
Identifikationsnummer = new Datenelement("Identifikationsnummer", 0, 3, Feldart.Muss);
Bruttobetrag = new Datenelement("Bruttobetrag", 3, 13, Feldart.Muss);
Zuzahlungsart = new Datenelement("Zuzahlungsart", 2, Feldart.Kann);
BetragGesetzlicheZuzahlung = new Datenelement("BetragGesetzlicheZuzahlung", 3, 13, Feldart.Kann);
BetragEigenanteil = new Datenelement("BetragEigenanteil", 3, 13, Feldart.Kann);
Versorgungszeitraum = new Datenelement("Versorgungszeitraum", 0, 2, Feldart.Kann);
}
public override string GetHead() => "ZUZ";

View File

@@ -6,14 +6,14 @@ using System.Threading.Tasks;
namespace Dakota.Models.Segmente
{
internal abstract class Segment : Dateneinheit
internal abstract class Segment : IRowable
{
//public List<Datenelement> Datenelemente { get; set; }
public abstract string GetHead();
public abstract List<Dateneinheit> GetBody();
public override string GetValue()
public string GetRows()
{
Dateneinheit lastzero = null;
var body = GetBody();

View File

@@ -79,18 +79,18 @@ namespace Dakota.Models.Segmente
public SegmentUNB()
{
Syntax = new Datenelementgruppe(2);
SyntaxKennung = Syntax.Datenelemente[0] = new Datenelement(4, Feldart.Muss);
SyntaxVersionsnummer = Syntax.Datenelemente[1] = new Datenelement(1, Feldart.Muss);
Absenderdatei = new Datenelement(0, 35, Feldart.Muss);
Empfangdatei = new Datenelement(0, 35, Feldart.Muss);
DatumUhrzeit = new Datenelementgruppe(2);
Datum = DatumUhrzeit.Datenelemente[0] = new Datenelement(8, Feldart.Muss);
Uhrzeit = DatumUhrzeit.Datenelemente[1] = new Datenelement(4, Feldart.Muss);
Datenaustauschreferenz = new Datenelement(0, 14, Feldart.Muss);
Leistungsbereich = new Datenelement(1, Feldart.Muss);
Anwengundsreferenz = new Datenelement(0, 14, Feldart.Muss);
Testindikator = new Datenelement(1, Feldart.Muss);
Syntax = new Datenelementgruppe("Syntax", 2);
SyntaxKennung = Syntax.Datenelemente[0] = new Datenelement("SyntaxKennung", 4, Feldart.Muss);
SyntaxVersionsnummer = Syntax.Datenelemente[1] = new Datenelement("SyntaxVersionsnummer", 1, Feldart.Muss);
Absenderdatei = new Datenelement("Absenderdatei", 0, 35, Feldart.Muss);
Empfangdatei = new Datenelement("Empfangdatei", 0, 35, Feldart.Muss);
DatumUhrzeit = new Datenelementgruppe("DatumUhrzeit", 2);
Datum = DatumUhrzeit.Datenelemente[0] = new Datenelement("Datum", 8, Feldart.Muss);
Uhrzeit = DatumUhrzeit.Datenelemente[1] = new Datenelement("Uhrzeit", 4, Feldart.Muss);
Datenaustauschreferenz = new Datenelement("Datenaustauschreferenz", 0, 14, Feldart.Muss);
Leistungsbereich = new Datenelement("Leistungsbereich", 1, Feldart.Muss);
Anwengundsreferenz = new Datenelement("Anwengundsreferenz", 0, 14, Feldart.Muss);
Testindikator = new Datenelement("Testindikator", 1, Feldart.Muss);
}
public override string GetHead() => "UNB";

View File

@@ -58,12 +58,12 @@ namespace Dakota.Models.Segmente
public SegmentUNH()
{
Nachrichtenreferenznummer = new Datenelement(0, 14, Feldart.Muss);
Nachrichtenerkennung = new Datenelementgruppe(4);
NachrichtenTypKennung = Nachrichtenerkennung.Datenelemente[0] = new Datenelement(0, 6, Feldart.Muss);
Verionsnummer = Nachrichtenerkennung.Datenelemente[1] = new Datenelement(0, 3, Feldart.Muss);
FreigabeNrDesTypes = Nachrichtenerkennung.Datenelemente[2] = new Datenelement(0, 3, Feldart.Muss);
VerwaltendeOrganisation = Nachrichtenerkennung.Datenelemente[3] = new Datenelement(0, 2, Feldart.Muss);
Nachrichtenreferenznummer = new Datenelement("Nachrichtenreferenznummer", 0, 14, Feldart.Muss);
Nachrichtenerkennung = new Datenelementgruppe("Nachrichtenerkennung", 4);
NachrichtenTypKennung = Nachrichtenerkennung.Datenelemente[0] = new Datenelement("NachrichtenTypKennung", 0, 6, Feldart.Muss);
Verionsnummer = Nachrichtenerkennung.Datenelemente[1] = new Datenelement("Verionsnummer", 0, 3, Feldart.Muss);
FreigabeNrDesTypes = Nachrichtenerkennung.Datenelemente[2] = new Datenelement("FreigabeNrDesTypes", 0, 3, Feldart.Muss);
VerwaltendeOrganisation = Nachrichtenerkennung.Datenelemente[3] = new Datenelement("VerwaltendeOrganisation", 0, 2, Feldart.Muss);
}
public override string GetHead() => "UNH";

View File

@@ -23,8 +23,8 @@ namespace Dakota.Models.Segmente
public SegmentUNT()
{
AnzahlEinheiten = new Datenelement(6, Feldart.Muss);
Nachrichtenreferenznummer = new Datenelement(0, 14, Feldart.Muss);
AnzahlEinheiten = new Datenelement("AnzahlEinheiten", 6, Feldart.Muss);
Nachrichtenreferenznummer = new Datenelement("Nachrichtenreferenznummer", 0, 14, Feldart.Muss);
}
public override string GetHead() => "UNT";

View File

@@ -23,8 +23,8 @@ namespace Dakota.Models.Segmente
public SegmentUNZ()
{
AnzahlNachrichten = new Datenelement(6, Feldart.Muss);
Datenaustauschreferenz = new Datenelement(0, 14, Feldart.Muss);
AnzahlNachrichten = new Datenelement("AnzahlNachrichten", 6, Feldart.Muss);
Datenaustauschreferenz = new Datenelement("Datenaustauschreferenz", 0, 14, Feldart.Muss);
}
public override string GetHead() => "UNZ";

Binary file not shown.

Binary file not shown.

View File

@@ -272,14 +272,13 @@ namespace BeWo.Report
// ServiceInvoice Oid ist noch nicht in S2C List
// Frage, ob ServiceInvoice - InvoiceBase - InvoiceId nicht leer ist
// Frage, ob InvoiceId existiert
if (!String.IsNullOrEmpty(invoice.InvoiceBase.InvoiceId))
// Falls ServiceInvoice - InvoiceBase - InvoiceId nicht leer ist, füge in S2C Liste ein
// Falls InvoiceId existiert
serviceInvoiceOid2CostbearerId.Add(oid, invoice.InvoiceBase.InvoiceId);
else
// Ab wann? Welcher Sinn?
{
// Falls ServiceInvoice - InvoiceBase - InvoiceId leer ist
// Falls InvoiceId nicht existiert
// Gehe jede peroide von ServiceInvoice - ServiceInvoicePeriodList durch
foreach (var period in invoice.ServiceInvoicePeriodList)
{

View File

@@ -478,6 +478,7 @@
<Compile Include="ServiceUtils\DistanceCalculator\GoogleDistanceMatrixAPI.cs" />
<Compile Include="ServiceUtils\DistanceCalculator\IDistanceAPI.cs" />
<Compile Include="ServiceUtils\DistanceCalculator\OpenrouteServiceAPI.cs" />
<Compile Include="ServiceUtils\Generell\DakotaFileCreator.cs" />
<Compile Include="UnitOfWork\HibernateSessionEndpointBehavior.cs" />
<Compile Include="UnitOfWork\HibernateSessionBehaviorExtension.cs" />
<Compile Include="UnitOfWork\HibernateSessionContextInitializer.cs" />
@@ -486,6 +487,10 @@
<Compile Include="XAMLInformation\InfoViaXAMLManager.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Dakota\Dakota.csproj">
<Project>{47331732-dd96-4075-869f-83aa9f3f9937}</Project>
<Name>Dakota</Name>
</ProjectReference>
<ProjectReference Include="..\Data\Data.csproj">
<Project>{b0d73e3d-4ae7-4024-93a6-db1f46d7ccee}</Project>
<Name>Data</Name>
@@ -514,7 +519,6 @@
</ItemGroup>
<ItemGroup>
<Folder Include="ServiceUtils\API\" />
<Folder Include="ServiceUtils\Generell\" />
<Folder Include="Utils\" />
</ItemGroup>
<ItemGroup>

View File

@@ -1299,5 +1299,9 @@ namespace BeWo.Service.ServiceContracts
[FaultContract(typeof(BeWoFault))]
[OperationContract]
SchedulerAppointmentDC GetRootAppointment(string recurrenceId);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
string GetDakotaFileFormat(object param);
}
}

View File

@@ -15,6 +15,7 @@ using BeWo.Service.Plugins;
using BeWo.Service.SBD;
using BeWo.Service.Security;
using BeWo.Service.ServiceContracts;
using BeWo.Service.ServiceUtils.Generell;
using BeWo.Service.Vorlagen;
using BS.Shared;
using BS.Shared.Core;
@@ -23,6 +24,7 @@ using BS.Shared.DataContracts.Compact;
using BS.Shared.DataContracts.Reports;
using BS.Shared.Extensions;
using BS.Shared.Services;
using Dakota;
using Newtonsoft.Json;
using RestSharp;
using System;
@@ -7698,5 +7700,25 @@ namespace BeWo.Service.ServiceImplementations
throw Utils.CreateBeWoFaultException(e);
}
}
public string GetDakotaFileFormat(object param)
{
try
{
var baseoid = long.Parse((string)param);
var accounting = new AccountingServiceImp();
var invoice = accounting.GetServiceInvoiceByInvoiceBaseOid(baseoid);
var code = DakotaFileCreator.GetAsciiCode(invoice);
return code;
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
}
}

View File

@@ -0,0 +1,64 @@
using BS.Shared.DataContracts;
using Dakota;
using Dakota.Models.Schlüssel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Service.ServiceUtils.Generell
{
public static class DakotaFileCreator
{
public static string GetAsciiCode(ServiceInvoiceDC dc)
{
var info = LoadInfo(dc);
var file = new DakotaFile();
file.Generate(info);
return file.GetRows();
}
public static DakotaFileInfo LoadInfo(ServiceInvoiceDC dc)
{
var res = new DakotaFileInfo();
res.Absenderbezeichnung = "123456789";
res.Empfangerbezeichnung = "987654321";
res.Datenaustauschreferenz = 1;
res.Anwendungsreferenz = "abovollkra.txt";
res.Testindikator = SchlüsselTestindikator.Testdatei;
res.IKLeistungserbringers = "abovollkrass.txt";
res.IKKostenträger = "abovollkrass.txt";
res.IKKrankenkasse = "abovollkrass.txt";
res.Rechnungsnummer = dc.InvoiceBase.InvoiceNumber;
// Einheitlich monatlich
res.Rechnungsdatum = dc.InvoiceBase.InvoiceDate.Value;
res.Summenstatus = SchlüsselSummenstatus.Mitglieder;
res.Gesamtrechnungsbetrag = 3.5m;
res.Gesamtbruttobetrag = 3.5m;
res.GesamtbetragZuzahlung = 3.5m;
res.Rechnungsart = SchlüsselRechnungsart.AbrechnungVonLeistungserbringer;
res.Name1 = "nam7";
res.Name2 = "nam4";
res.Name3 = "nam3";
res.Name4 = "nam1";
res.Verarbeitungskennzeichen = SchlüsselVerarbeitungskennzeichen.AbrechnungOhneBesonderheit;
res.IKKrankenkasse = "abovollkrass.txt";
res.IKKrankenkasse = "abovollkrass.txt";
res.IKKrankenkasse = "abovollkrass.txt";
res.IKKrankenkasse = "abovollkrass.txt";
res.IKKrankenkasse = "abovollkrass.txt";
res.IKKrankenkasse = "abovollkrass.txt";
return res;
}
}
}

View File

@@ -0,0 +1,34 @@
using BS.Shared.DataContracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shared.Extensions
{
public static class DakotaExtensions
{
public static bool IsSozioTherapie(this ServiceInvoiceDC serviceDC)
=> IsSozioTherapie(serviceDC?.InvoiceBase);
public static bool IsSozioTherapie(this InvoiceBaseDC invoiceBase)
{
try
{
if (invoiceBase.InvoiceTitle.ToLower().Contains("soziotherapie"))
return true;
if (invoiceBase.InvoiceId.ToLower().Contains("soziotherapie"))
return true;
}
catch(Exception e)
{
}
return false;
}
}
}

View File

@@ -292,6 +292,7 @@
<Compile Include="DataContracts\Reports\AuslastungAnalysisSupportConceptDC.cs" />
<Compile Include="DataContracts\ServiceRecordHistoryDC.cs" />
<Compile Include="DataContracts\SupportPinDC.cs" />
<Compile Include="Extensions\DakotaExtensions.cs" />
<Compile Include="Extensions\EnumExtensions.cs" />
<Compile Include="Extensions\GridExtensions.cs" />
<Compile Include="Extensions\ICollectionExtensions.cs" />