- History für Abwesenheiten - History überarbeitet - Berichte für Einträge ohne Unterschriften
633 lines
26 KiB
C#
633 lines
26 KiB
C#
using BeWo.Data;
|
|
using BS.Shared.DataContracts;
|
|
using DevExpress.Pdf;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace BeWo.Service.Import.Perseh
|
|
{
|
|
public class PersehReader
|
|
{
|
|
public HilfeplanImportDC ReadPdfDocument(byte[] daten)
|
|
{
|
|
HilfeplanImportDC result = new HilfeplanImportDC();
|
|
result.Gruppen = new List<HilfeplanImportItemDC>();
|
|
result.Ziele = new List<HilfeplanImportZielDC>();
|
|
|
|
|
|
var tenant = MultitenancyOperationContextExt.Current?.Tenant;
|
|
if ("9876543210".Equals(tenant)) // || "demo".Equals(tenant))
|
|
{
|
|
//Hack für Simpsons DB um die Präsi zu vereinfachen
|
|
|
|
var gruppe1 = new HilfeplanImportItemDC { Label = "Stammdaten", Items = new List<HilfeplanImportItemDC>() };
|
|
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Name", Content = "Ned Flanders", FieldName = "LastnameFirstname" });
|
|
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "Geburtsdatum", Content = "09.11.2015", FieldName = "Birthdate" });
|
|
gruppe1.Items.Add(new HilfeplanImportItemDC { Label = "GP-Nummer/Az", Content = "123456789", FieldName = "CustomerReferenceNumber" });
|
|
result.Gruppen.Add(gruppe1);
|
|
//result.Ziele.Add(CreateZiel(
|
|
// "Lebensbereich Bedeutende Lebensbereiche",
|
|
// "Ich entwickle eine berufliche Perspektive.",
|
|
// "1. Motivierende Gesprächsführung zur Auseinandersetzung mit beruflicher Zukunft."));
|
|
|
|
result.Ziele.Add(CreateZiel("Lebensbereich Lernen und Wissensanwendung",
|
|
"Ich treffe selbstbestimmt Entscheidungen und setze diese in die Tat um.",
|
|
"1. Reflektierende Gespräche führen.\r\n2. Anleitung: Eine Liste mit Tätigkeiten erstellen die förderlich sind.\r\n3. Reflektion welche Handlung in welchem Moment förderlich oder hilfreich ist.\r\n4. Bestärken und loben wenn Entscheidungen selbstständig getroffen und umgesetzt wurden.\r\n5. Motivieren selbstständig Entscheidungen zu treffen."));
|
|
|
|
result.Ziele.Add(CreateZiel(
|
|
"Lebensbereich Allgemeine Aufgaben und Anforderungen",
|
|
"Ich entwickle Strategien zur Stressbewältigung.",
|
|
"1. Krisenplan und Krisenintervention\r\n2. Anleitung Stress frühzeitig zu erkennen um einer Krise vorzubeugen.\r\n3. Herausarbeiten von stressreduzierenden Aktivitäten/Beschäftigungen.\r\n4. Reflektion Anwendung der Strategien.\r\n5. Positive Bestärkung bei Erreichen von kleinsten Zielen."));
|
|
|
|
result.Ziele.Add(CreateZiel(
|
|
"Lebensbereich Selbstversorgung",
|
|
"Ich möchte mich gesünder ernähren und mein Gewicht reduzieren.",
|
|
"1. Klare Regeln und Absprachen bei welchem Gewicht welche Maßnahme erfolgt.\r\n2. Kontinuierliche Annäherung und Auseinandersetzung mit dem Thema Ernährung.\r\n3. Niedrigschwelligen Standard erarbeiten und halten."));
|
|
|
|
result.Ziele.Add(CreateZiel(
|
|
"Lebensbereich Selbstversorgung",
|
|
"Ich bereite mir regelmäßig mich selbst eine Mahlzeit zu.",
|
|
"1. Motivieren, Anleiten, Unterstützung und Beratung.\r\n2. Begleitung zu Einkäufen.\r\n3. Planung und Betreuung bei der Umsetzung.\r\n4. Überprüfung ob die Umsetzung klappt."));
|
|
|
|
result.Ziele.Add(CreateZiel(
|
|
"Lebensbereich Häusliches Leben",
|
|
"Ich finde eine eigene Wohnung.",
|
|
"1. Anleitung, Beratung, Motivation und Unterstützung bei der Wohnungssuche.\r\n2. Gemeinsame Planung des Umzuges bzw. Einzuges.\r\n3. Begleitung zu Besichtigungsterminen.\r\n4. Unterstützung, Beratung und Anleitung bei der Beschaffung des Mobiliars.\r\n5.Unterstützung, Anleitung bei Renovierungs- oder Restaurierungsarbeiten."));
|
|
|
|
result.Ziele.Add(CreateZiel(
|
|
"Lebensbereich Häusliches Leben",
|
|
"Ich entwickele einen Putzplan und halte meine Wohnung sauber.",
|
|
"1. Unterstützung bei der Entwicklung eines Haushaltsplans.\r\n2. Erarbeitung und Implementierung eines Putzplans.\r\n3. Motivierende Gesprächsführung und Anleitung.\r\n4. Wenn benötigt, anfängliche Unterstützung.\r\n5. Reflektieren was gut funktioniert und was nicht gelingt."));
|
|
|
|
result.Ziele.Add(CreateZiel(
|
|
"Lebensbereich Bedeutende Lebensbereiche",
|
|
"Ich entwickle eine berufliche Perspektive.",
|
|
"1. Motivierende Gesprächsführung zur Auseinandersetzung mit beruflicher Zukunft.\r\n2. Unterstützung bei der Anbindung an hilfreiche Stellen, Behördenangeboten"));
|
|
|
|
return result;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
using (var processor = new PdfDocumentProcessor())
|
|
{
|
|
using (var ms = new MemoryStream(daten))
|
|
{
|
|
processor.LoadDocument(ms);
|
|
|
|
var pdfText = processor.Text;
|
|
|
|
var customerGruppe = ErstelleKlientenStammdatenGruppe(pdfText);
|
|
|
|
if (customerGruppe == null)
|
|
{
|
|
customerGruppe = ErstelleGruppeMitNamenUndAktenzeichen(pdfText);
|
|
}
|
|
if (customerGruppe != null)
|
|
{
|
|
result.Gruppen.Add(customerGruppe);
|
|
}
|
|
|
|
result.Ziele = ErstelleAlleZiele(pdfText);
|
|
if (result.Ziele.Count == 0) // Keine Ziele gefunden, versuche andere PDF Version
|
|
{
|
|
result.Ziele = ErstelleAlleZiele2(pdfText);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
return result;
|
|
}
|
|
|
|
private HilfeplanImportZielDC CreateZiel(string bereich, string ziel, string massnahme)
|
|
{
|
|
var z = new HilfeplanImportZielDC { Bereich = bereich, ZielName = ziel, DoImport = true};
|
|
z.Massnahmen = new List<HilfeplanImportZielDC>();
|
|
z.Massnahmen.Add(new HilfeplanImportZielDC { ZielName = massnahme, DoImport = true });
|
|
return z;
|
|
}
|
|
|
|
private void ReplaceContent(HilfeplanImportItemDC sd, string fieldname, string content)
|
|
{
|
|
if (sd.Items != null)
|
|
{
|
|
var item = sd.Items.FirstOrDefault(i => i.FieldName == fieldname);
|
|
if (item != null)
|
|
{
|
|
item.Content = content;
|
|
}
|
|
}
|
|
}
|
|
|
|
private IList<HilfeplanImportZielDC> ErstelleAlleZiele(string pdfText)
|
|
{
|
|
var ziele = new List<HilfeplanImportZielDC>();
|
|
//Suche Zeile "Zielplanung". So beginnt hinten im Dokument der Bereich mit der Zusammenfassung der Ziele
|
|
|
|
var zeilen = pdfText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
|
var startIdx = -1;
|
|
var endIdx = -1;
|
|
var uebersichtLeistungsplanungIdx = -1;
|
|
var gesamtUebersichtIdx = -1;
|
|
var zielplanungStart = -1;
|
|
var lastLebensbereichIdx = -1;
|
|
|
|
StringBuilder gesamtTextMitZielen = new StringBuilder();
|
|
|
|
for (int i = zeilen.Length - 1; i >= 0; i--)
|
|
{
|
|
var z = zeilen[i];
|
|
|
|
if (z == "Zielplanung")
|
|
{
|
|
zielplanungStart = i;
|
|
startIdx = i;
|
|
}
|
|
if (z.StartsWith("Übersicht der Leistungsplanung "))
|
|
{
|
|
uebersichtLeistungsplanungIdx = i;
|
|
}
|
|
if (z.StartsWith("Lebensbereich ") && lastLebensbereichIdx == -1)
|
|
{
|
|
lastLebensbereichIdx = i;
|
|
}
|
|
if (z.StartsWith("Gesamtübersicht Stunden pro Woche"))
|
|
{
|
|
gesamtUebersichtIdx = i;
|
|
}
|
|
}
|
|
|
|
endIdx = uebersichtLeistungsplanungIdx;
|
|
if (lastLebensbereichIdx > endIdx && gesamtUebersichtIdx > lastLebensbereichIdx)
|
|
{
|
|
endIdx = gesamtUebersichtIdx;
|
|
}
|
|
else
|
|
{
|
|
endIdx = zeilen.Length - 1;
|
|
}
|
|
|
|
//if (endIdx < startIdx)
|
|
//{
|
|
// for (int i = zeilen.Length - 1; i >= 0; i--)
|
|
// {
|
|
// var z = zeilen[i];
|
|
// if (z.StartsWith("Gesamtübersicht Stunden pro Woche"))
|
|
// {
|
|
// endIdx = i;
|
|
// }
|
|
// }
|
|
//}
|
|
|
|
|
|
if (startIdx >= 0)
|
|
{
|
|
for (int i = startIdx; i < endIdx; i++)
|
|
{
|
|
gesamtTextMitZielen.AppendLine(zeilen[i]);
|
|
}
|
|
zeilen = gesamtTextMitZielen.ToString().Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
|
startIdx = 0;
|
|
while (startIdx >= 0)
|
|
{
|
|
var ta = TextAbschnittReader.LeseBisText(zeilen, startIdx, "Lebensbereich ", true, false, false);
|
|
if (ta.Success)
|
|
{
|
|
ziele.AddRange(ErstelleBereichMitZielen(zeilen, ta));
|
|
startIdx = ta.ZeilenIndex + 1;
|
|
}
|
|
else
|
|
{
|
|
startIdx = -1;
|
|
}
|
|
|
|
}
|
|
}
|
|
if (zielplanungStart >= 0)
|
|
{
|
|
ErstelleMassnahmen(pdfText, zielplanungStart, ziele);
|
|
}
|
|
return ziele;
|
|
|
|
}
|
|
|
|
private IList<HilfeplanImportZielDC> ErstelleAlleZiele2(string pdfText)
|
|
{
|
|
var ziele = new List<HilfeplanImportZielDC>();
|
|
//Suche Zeile "Zielplanung". So beginnt hinten im Dokument der Bereich mit der Zusammenfassung der Ziele
|
|
|
|
var zeilen = pdfText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
|
var startIdx = -1;
|
|
var endIdx = -1;
|
|
var zielplanungStart = -1;
|
|
StringBuilder gesamtTextMitZielen = new StringBuilder();
|
|
|
|
for (int i = zeilen.Length - 1; i >= 0; i--)
|
|
{
|
|
var z = zeilen[i];
|
|
|
|
if (z == "Zielplanung")
|
|
{
|
|
zielplanungStart = i;
|
|
startIdx = i;
|
|
}
|
|
if (z.StartsWith("Übersicht der Leistungsplanung "))
|
|
{
|
|
endIdx = i;
|
|
}
|
|
}
|
|
if (endIdx < startIdx)
|
|
{
|
|
for (int i = zeilen.Length - 1; i >= 0; i--)
|
|
{
|
|
var z = zeilen[i];
|
|
if (z.StartsWith("Gesamtübersicht Stunden pro Woche"))
|
|
{
|
|
endIdx = i;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if (startIdx >= 0)
|
|
{
|
|
for (int i = startIdx; i < endIdx; i++)
|
|
{
|
|
gesamtTextMitZielen.AppendLine(zeilen[i]);
|
|
}
|
|
zeilen = gesamtTextMitZielen.ToString().Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
|
startIdx = 0;
|
|
while (startIdx >= 0)
|
|
{
|
|
var ta = TextAbschnittReader.LeseBisText(zeilen, startIdx, "Lebensbereich ", true, false, false);
|
|
if (ta.Success)
|
|
{
|
|
ziele.AddRange(ErstelleBereichMitZielen(zeilen, ta));
|
|
startIdx = ta.ZeilenIndex + 1;
|
|
}
|
|
else
|
|
{
|
|
startIdx = -1;
|
|
}
|
|
|
|
}
|
|
}
|
|
if (zielplanungStart >= 0)
|
|
{
|
|
ErstelleMassnahmen(pdfText, zielplanungStart, ziele);
|
|
}
|
|
return ziele;
|
|
|
|
}
|
|
|
|
private void ErstelleMassnahmen(string pdfText, int endIndex, List<HilfeplanImportZielDC> ziele)
|
|
{
|
|
var zeilen = pdfText.ToString().Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
|
foreach (var item in ziele)
|
|
{
|
|
item.Massnahmen = new List<HilfeplanImportZielDC>();
|
|
|
|
int zeilenIndex = 0;
|
|
foreach (var zeile in zeilen)
|
|
{
|
|
if (zeilenIndex < endIndex && zeile.StartsWith("Ziel "))
|
|
{
|
|
if (item.ZielName.StartsWith(zeile.Substring(5)))
|
|
{
|
|
int massnahmenStartIndex = -1;
|
|
var ta = TextAbschnittReader.LeseBisText(zeilen, zeilenIndex, "Beschreibung der Maßnahme", true, false, false);
|
|
if (ta.Success)
|
|
{
|
|
massnahmenStartIndex = ta.ZeilenIndex;
|
|
}
|
|
else
|
|
{
|
|
ta = TextAbschnittReader.LeseBisText(zeilen, ta.ZeilenIndex + 1, "Beschreibung der", true, false, false);
|
|
if (ta.Success)
|
|
{
|
|
var ta2 = TextAbschnittReader.LeseBisText(zeilen, ta.ZeilenIndex + 1, "Maßnahme", true, false, false);
|
|
if (ta2.Success && ta2.ZeilenIndex == ta.ZeilenIndex + 1)
|
|
{
|
|
massnahmenStartIndex = ta2.ZeilenIndex;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
if (massnahmenStartIndex > 0)
|
|
{
|
|
ta = TextAbschnittReader.LeseBisText(zeilen, massnahmenStartIndex, "Wer soll das tun?", true, false, false);
|
|
|
|
if (ta.Success)
|
|
{
|
|
var text = ta.Text;
|
|
|
|
ErstelleMassnahmenFuerZiel(item, text);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
zeilenIndex++;
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
public virtual void ErstelleMassnahmenFuerZiel(HilfeplanImportZielDC item, string text)
|
|
{
|
|
var zeilen = text.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
|
var sb = new StringBuilder();
|
|
|
|
//Entferne Zeilenumbrüche und unnötige Zeilen (wie Kopf und Fußzeilen)
|
|
//Letzte Zeile nicht mitnehmen, da steht drin "wer soll das tun?"
|
|
for (int i = 0; i < zeilen.Length - 1; i++)
|
|
{
|
|
String zeile = zeilen[i];
|
|
if (i == 0)
|
|
{
|
|
if (zeile.StartsWith("Beschreibung der Maßnahmen"))
|
|
{
|
|
zeile = zeile.Substring(26);
|
|
}
|
|
else if (zeile.StartsWith("Beschreibung der Maßnahme"))
|
|
{
|
|
zeile = zeile.Substring(25);
|
|
}
|
|
if (zeile.StartsWith("Maßnahmen"))
|
|
{
|
|
zeile = zeile.Substring(9);
|
|
}
|
|
else if (zeile.StartsWith("Maßnahme"))
|
|
{
|
|
zeile = zeile.Substring(8);
|
|
}
|
|
zeile = zeile.Trim();
|
|
}
|
|
|
|
if (!String.IsNullOrWhiteSpace(zeile) && !IgnoriereZeile(zeile))
|
|
{
|
|
sb.Append(zeile);
|
|
sb.Append(" ");
|
|
}
|
|
}
|
|
|
|
item.Massnahmen = ErstelleMassnahmenDCs(sb.ToString());
|
|
}
|
|
|
|
public virtual IList<HilfeplanImportZielDC> ErstelleMassnahmenDCs(string text)
|
|
{
|
|
var result = new List<HilfeplanImportZielDC>();
|
|
|
|
//Finde Auflistung die mit einer Zahl und einem Punkt beginnen (1. erste Zeile, 2. zweite Zeile etc.)
|
|
if (!String.IsNullOrEmpty(text) && text.StartsWith("1. "))
|
|
{
|
|
string pattern = @"(\d+\.\s.*?)(?=\s*\d+\.\s|$)";
|
|
|
|
MatchCollection matches = Regex.Matches(text, pattern);
|
|
|
|
var sb = new StringBuilder();
|
|
foreach (var match in matches)
|
|
{
|
|
sb.AppendLine(match.ToString());
|
|
}
|
|
|
|
var massnahme = new HilfeplanImportZielDC();
|
|
massnahme.DoImport = true;
|
|
massnahme.ZielName = sb.ToString();
|
|
|
|
result.Add(massnahme);
|
|
}
|
|
if (result.Count == 0 && !String.IsNullOrEmpty(text))
|
|
{
|
|
var massnahme = new HilfeplanImportZielDC();
|
|
massnahme.DoImport = true;
|
|
massnahme.ZielName = text;
|
|
|
|
result.Add(massnahme);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
private IList<HilfeplanImportZielDC> ErstelleBereichMitZielen(string[] zeilen, TextAbschnitt ta)
|
|
{
|
|
var ziele = new List<HilfeplanImportZielDC>();
|
|
|
|
String bereich = zeilen[ta.ZeilenIndex];
|
|
int idxBereichStart = ta.ZeilenIndex + 1;
|
|
int idxBereichtEnde = zeilen.Length;
|
|
|
|
var taEnde = TextAbschnittReader.LeseBisText(zeilen, ta.ZeilenIndex + 1, "Lebensbereich ", true, false, false);
|
|
if (taEnde.Success)
|
|
{
|
|
idxBereichtEnde = taEnde.ZeilenIndex;
|
|
}
|
|
|
|
HilfeplanImportZielDC ziel = null;
|
|
for (int i = idxBereichStart; i < idxBereichtEnde; i++)
|
|
{
|
|
String zeile = zeilen[i];
|
|
if (zeile.StartsWith("Ziele • ") || zeile.StartsWith("• "))
|
|
{
|
|
ziel = new HilfeplanImportZielDC();
|
|
ziel.DoImport = true;
|
|
ziel.Bereich = bereich;
|
|
ziel.ZielName = zeile.Replace("Ziele • ", "").Replace("• ", "").Trim();
|
|
|
|
ziele.Add(ziel);
|
|
}
|
|
else if (ziel != null)
|
|
{
|
|
if (!IgnoriereZeile(zeile))
|
|
{
|
|
ziel.ZielName += " " + zeile.Trim();
|
|
ziel.ZielBeschreibung = "Beschreibung:\n" + zeile;
|
|
}
|
|
|
|
}
|
|
}
|
|
return ziele;
|
|
}
|
|
|
|
private bool IgnoriereZeile(string zeile)
|
|
{
|
|
if (zeile.StartsWith("(c) Landschaftsverband") || zeile.StartsWith("Gesprächsleitfaden - "))
|
|
{
|
|
return true;
|
|
}
|
|
if (zeile.StartsWith("V1") || zeile.StartsWith("V2") || zeile.StartsWith("V3"))
|
|
{
|
|
return true;
|
|
}
|
|
//Ignoriert das Aktenzeichen
|
|
if (StartetMitNZiffern(zeile, 10))
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private bool StartetMitNZiffern(string zeile, int anzahlZiffern)
|
|
{
|
|
string pattern = String.Format("{0:0}", anzahlZiffern);
|
|
pattern = "\\d{" + pattern + "}";
|
|
MatchCollection matches = Regex.Matches(zeile, pattern);
|
|
|
|
if (matches.Count > 0 && matches[0].Index == 0)
|
|
{
|
|
return true;
|
|
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private HilfeplanImportItemDC ErstelleKlientenStammdatenGruppe(string pdfText)
|
|
{
|
|
if (pdfText.Contains("Individuelle Bedarfsermittlung - Element Basisdaten"))
|
|
{
|
|
var customerGruppe = new HilfeplanImportItemDC { Label = "Stammdaten", Items = new List<HilfeplanImportItemDC>() };
|
|
customerGruppe.Items = LeseKlientenStammdaten(pdfText);
|
|
|
|
return customerGruppe;
|
|
|
|
}
|
|
return null;
|
|
}
|
|
|
|
private HilfeplanImportItemDC ErstelleGruppeMitNamenUndAktenzeichen(string pdfText)
|
|
{
|
|
String aktenzeichen = "";
|
|
String name = "";
|
|
String datum = "";
|
|
|
|
var zeilen = pdfText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
|
//Der Name sollte oben auf der ersten Seite stehen. Suche innerhalb der ersten 10 Zeilen danach:
|
|
var ta = TextAbschnittReader.LeseBisText(zeilen, 0, "Name ", true, false, false);
|
|
if (ta.Success && ta.ZeilenIndex <= 10)
|
|
{
|
|
|
|
var zeile = zeilen[ta.ZeilenIndex].Replace("Name ", "");
|
|
|
|
if (zeile.Contains("GP-Nr./Az. "))
|
|
{
|
|
aktenzeichen = zeile.Substring(zeile.IndexOf("GP-Nr./Az. ") + 10).Trim();
|
|
}
|
|
var pattern = @"\d{2}\.\d{2}\.\d{4}";
|
|
MatchCollection matches = Regex.Matches(zeile, pattern);
|
|
|
|
|
|
if (matches.Count > 0)
|
|
{
|
|
|
|
datum = matches[0].Value;
|
|
|
|
if (zeile.IndexOf(datum) > 0)
|
|
{
|
|
name = zeile.Substring(0, zeile.IndexOf(datum)).Trim();
|
|
}
|
|
}
|
|
}
|
|
|
|
if (String.IsNullOrEmpty(aktenzeichen))
|
|
{
|
|
var pattern = @"\d{10}";
|
|
MatchCollection matches = Regex.Matches(pdfText, pattern);
|
|
|
|
if (matches.Count > 0)
|
|
{
|
|
|
|
aktenzeichen = matches[0].Value;
|
|
}
|
|
}
|
|
|
|
if (!String.IsNullOrEmpty(aktenzeichen) || !String.IsNullOrEmpty(name) || !String.IsNullOrEmpty(datum))
|
|
{
|
|
var customerGruppe = new HilfeplanImportItemDC { Label = "Stammdaten", Items = new List<HilfeplanImportItemDC>() };
|
|
|
|
if (!String.IsNullOrEmpty(name))
|
|
{
|
|
customerGruppe.Items.Add(new HilfeplanImportItemDC { Label = "Name", FieldName = "LastnameFirstname", Content = name });
|
|
}
|
|
if (!String.IsNullOrEmpty(datum))
|
|
{
|
|
customerGruppe.Items.Add(new HilfeplanImportItemDC { Label = "Geburtsdatum", FieldName = "Birthdate", Content = datum });
|
|
}
|
|
if (!String.IsNullOrEmpty(aktenzeichen))
|
|
{
|
|
customerGruppe.Items.Add(new HilfeplanImportItemDC { Label = "GP-Nummer/Az", FieldName = "CustomerReferenceNumber", Content = aktenzeichen });
|
|
}
|
|
return customerGruppe;
|
|
|
|
}
|
|
return null;
|
|
}
|
|
|
|
private List<HilfeplanImportItemDC> LeseKlientenStammdaten(string pdfText)
|
|
{
|
|
var liste = new List<HilfeplanImportItemDC>();
|
|
var zeilen = pdfText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
|
var ta = TextAbschnittReader.LeseBisText(zeilen, 0, "BEI_NRW für den Zeitraum vom ", true, false, false);
|
|
|
|
if (ta.Success)
|
|
{
|
|
var idx = ta.ZeilenIndex;
|
|
liste.Add(ErstelleStammdatenFeld("BEI_NRW für den Zeitraum vom", "ApprovalPeriod", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("GP-Nummer/Az", "CustomerReferenceNumber", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("Name", "Lastname", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("Vorname", "Firstname", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("Titel", "Titel", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("Geburtsdatum", "Birthdate", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("Geschlecht", "Sex", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("Nationalität", "Nationality", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("Beruf", "Job", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("Familienstand", "FamilyStatus", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("Anzahl und Alter der Kinder", "Children", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("PLZ", "PostalCode", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("Ort", "Town", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("Straße", "Street", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("Telefon", "Phone", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("Fax", "Fax", zeilen, idx, out idx));
|
|
liste.Add(ErstelleStammdatenFeld("E-Mail", "EMail", zeilen, idx, out idx));
|
|
}
|
|
|
|
|
|
|
|
return liste;
|
|
}
|
|
|
|
private HilfeplanImportItemDC ErstelleStammdatenFeld(string label, string fieldname, string[] zeilen, int startIndex, out int foundIdx)
|
|
{
|
|
var item = new HilfeplanImportItemDC { Label = label, FieldName = fieldname };
|
|
|
|
var ta = TextAbschnittReader.LeseBisText(zeilen, startIndex, label, true, false, false);
|
|
foundIdx = 0;
|
|
if (ta.Success)
|
|
{
|
|
item.Content = zeilen[ta.ZeilenIndex].Replace(label, "").Trim();
|
|
if (item.Label.Contains("_"))
|
|
{
|
|
item.Label = label.Replace("_", "__");
|
|
}
|
|
foundIdx = ta.ZeilenIndex;
|
|
}
|
|
return item;
|
|
}
|
|
|
|
}
|
|
}
|