Commit b73085c4 by 唐仲阳

流水库

parent 8d6658a9
...@@ -44,7 +44,7 @@ public AnalysisController(IMemoryCache cache, AnalysisQueries aQueries, HomeQuer ...@@ -44,7 +44,7 @@ public AnalysisController(IMemoryCache cache, AnalysisQueries aQueries, HomeQuer
public async Task ParseInquireAsync(Sys_cs sys_) public async Task ParseInquireAsync(Sys_cs sys_)
{ {
int id = _aQueries.JX_SCJXJL(sys_.hosid, sys_.zxr);//1.生成解析记录 int id = _aQueries.JX_SCJXJL(sys_.hosid, sys_.zxr);//1.生成解析记录
_aQueries.updateztZ(id, sys_.hosid, "等待执行"); _aQueries.updateztZ(id, sys_.hosid, "等待执行");
await semaphore.WaitAsync(); await semaphore.WaitAsync();
try try
......
...@@ -67,7 +67,7 @@ public DrugqueryController(DrugqueryQueries drugqueryQueries, HomeQueries homeQu ...@@ -67,7 +67,7 @@ public DrugqueryController(DrugqueryQueries drugqueryQueries, HomeQueries homeQu
icd_or_diseaseCondition = icd_or_diseaseCondition.Substring(2, icd_or_diseaseCondition.Length - 2); icd_or_diseaseCondition = icd_or_diseaseCondition.Substring(2, icd_or_diseaseCondition.Length - 2);
if (notdisease.Length > 0) if (notdisease.Length > 0)
icd_or_diseaseCondition = "(" + icd_or_diseaseCondition + ")" + notdisease; icd_or_diseaseCondition = "(" + icd_or_diseaseCondition + ")" + notdisease;
} }
//药品 //药品
...@@ -90,7 +90,6 @@ public DrugqueryController(DrugqueryQueries drugqueryQueries, HomeQueries homeQu ...@@ -90,7 +90,6 @@ public DrugqueryController(DrugqueryQueries drugqueryQueries, HomeQueries homeQu
drugs = drugs.Substring(2, drugs.Length - 2); drugs = drugs.Substring(2, drugs.Length - 2);
if (notdrugs.Length > 0) if (notdrugs.Length > 0)
drugs = "(" + drugs + ")" + notdrugs; drugs = "(" + drugs + ")" + notdrugs;
} }
//材料 //材料
if (sYS_Drugquery.materialName != null) if (sYS_Drugquery.materialName != null)
...@@ -103,7 +102,7 @@ public DrugqueryController(DrugqueryQueries drugqueryQueries, HomeQueries homeQu ...@@ -103,7 +102,7 @@ public DrugqueryController(DrugqueryQueries drugqueryQueries, HomeQueries homeQu
} }
else else
{ {
notmaterialName = notmaterialName + $"and item_name not like '%{materialname.Replace("!", "").Replace("!", "")}%'"; notmaterialName = notmaterialName + $"and unitprice>=450 and item_name not like '%{materialname.Replace("!", "").Replace("!", "")}%'";
} }
} }
} }
...@@ -112,7 +111,7 @@ public DrugqueryController(DrugqueryQueries drugqueryQueries, HomeQueries homeQu ...@@ -112,7 +111,7 @@ public DrugqueryController(DrugqueryQueries drugqueryQueries, HomeQueries homeQu
materialNames = materialNames.Substring(2, materialNames.Length - 2); materialNames = materialNames.Substring(2, materialNames.Length - 2);
if (notmaterialName.Length > 0) if (notmaterialName.Length > 0)
materialNames = "(" + materialNames + ")" + notmaterialName; materialNames = "(" + materialNames + ")" + notmaterialName;
} }
...@@ -159,20 +158,28 @@ private void asynsDrugquery(SYS_Drugquery sYS_Drugquery, string icd_or_diseaseCo ...@@ -159,20 +158,28 @@ private void asynsDrugquery(SYS_Drugquery sYS_Drugquery, string icd_or_diseaseCo
} }
else if (type == 2) else if (type == 2)
{ {
var tasks = new List<Task>(); try
tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.Drugquery(sYS_Drugquery.typefee, sYS_Drugquery.type1_2, drugs, sYS_Drugquery.drugName, num, 1, zxr))); {
tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.Drugquery(sYS_Drugquery.typefee, sYS_Drugquery.type1_2, drugs, sYS_Drugquery.drugName, num, 2, zxr))); var tasks = new List<Task>();
tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.Drugquery(sYS_Drugquery.typefee, sYS_Drugquery.type1_2, drugs, sYS_Drugquery.drugName, num, 3, zxr))); tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.Drugquery(sYS_Drugquery.typefee, sYS_Drugquery.type1_2, drugs, sYS_Drugquery.drugName, num, 1, zxr)));
tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.Drugquery(sYS_Drugquery.typefee, sYS_Drugquery.type1_2, drugs, sYS_Drugquery.drugName, num, 4, zxr))); tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.Drugquery(sYS_Drugquery.typefee, sYS_Drugquery.type1_2, drugs, sYS_Drugquery.drugName, num, 4, zxr)));
Task.WaitAll(tasks.ToArray()); tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.Drugquery(sYS_Drugquery.typefee, sYS_Drugquery.type1_2, drugs, sYS_Drugquery.drugName, num, 3, zxr)));
tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.Drugquery(sYS_Drugquery.typefee, sYS_Drugquery.type1_2, drugs, sYS_Drugquery.drugName, num,5, zxr)));
Task.WaitAll(tasks.ToArray());
}
catch (Exception ex)
{
throw;
}
} }
else if (type == 3) else if (type == 3)
{ {
var tasks = new List<Task>(); var tasks = new List<Task>();
tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.材料query(sYS_Drugquery.type1_2, materialNames, sYS_Drugquery.materialName, num, 1, zxr))); tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.材料query(1,sYS_Drugquery.type1_2, materialNames, sYS_Drugquery.materialName, num, 1, zxr)));
tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.材料query(sYS_Drugquery.type1_2, materialNames, sYS_Drugquery.materialName, num, 2, zxr))); tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.材料query(1,sYS_Drugquery.type1_2, materialNames, sYS_Drugquery.materialName, num, 2, zxr)));
tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.材料query(sYS_Drugquery.type1_2, materialNames, sYS_Drugquery.materialName, num, 3, zxr))); tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.材料query(1, sYS_Drugquery.type1_2, materialNames, sYS_Drugquery.materialName, num, 3, zxr)));
tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.材料query(sYS_Drugquery.type1_2, materialNames, sYS_Drugquery.materialName, num, 4, zxr))); tasks.Add(Task.Factory.StartNew(() => _drugqueryQueries.材料query(1, sYS_Drugquery.type1_2, materialNames, sYS_Drugquery.materialName, num, 4, zxr)));
Task.WaitAll(tasks.ToArray()); Task.WaitAll(tasks.ToArray());
} }
else else
......
using Microsoft.AspNetCore.Authorization; using com.sun.org.glassfish.external.statistics;
using java.lang;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
...@@ -8,6 +10,8 @@ ...@@ -8,6 +10,8 @@
using QueryPlatform.Api.Infrastructure.Queries; using QueryPlatform.Api.Infrastructure.Queries;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net.Http; using System.Net.Http;
using System.Net.Http.Headers; using System.Net.Http.Headers;
using System.Threading; using System.Threading;
...@@ -21,13 +25,16 @@ namespace QueryPlatform.Api.Controllers ...@@ -21,13 +25,16 @@ namespace QueryPlatform.Api.Controllers
public class HomeController : Controller public class HomeController : Controller
{ {
private readonly HomeQueries _homeQueries; private readonly HomeQueries _homeQueries;
private static System.Diagnostics.Process process;
private readonly IWebHostEnvironment _environment; private readonly IWebHostEnvironment _environment;
private readonly IHubContext<NotificationHub> _hubContext; private readonly IHubContext<NotificationHub> _hubContext;
public HomeController(HomeQueries homeQueries, IWebHostEnvironment environment, IHubContext<NotificationHub> hubContext) private readonly DirectoryTree _directoryTree;
public HomeController(HomeQueries homeQueries, IWebHostEnvironment environment, IHubContext<NotificationHub> hubContext, DirectoryTree directoryTree)
{ {
_homeQueries = homeQueries; _homeQueries = homeQueries;
_environment = environment; _environment = environment;
_hubContext = hubContext; _hubContext = hubContext;
_directoryTree = directoryTree;
} }
/// <summary> /// <summary>
/// 查询所有项目记录 /// 查询所有项目记录
...@@ -267,7 +274,7 @@ public IActionResult SendMail(string title, string content, string zxr = "") ...@@ -267,7 +274,7 @@ public IActionResult SendMail(string title, string content, string zxr = "")
{ {
export = _homeQueries.Excelex(ExportTableName, _environment.WebRootPath); ; export = _homeQueries.Excelex(ExportTableName, _environment.WebRootPath); ;
} }
catch (Exception e) catch (System.Exception e)
{ {
export = e.ToString(); export = e.ToString();
...@@ -304,24 +311,26 @@ public IActionResult AutomaticCursor() ...@@ -304,24 +311,26 @@ public IActionResult AutomaticCursor()
} }
#endregion #endregion
[HttpPost("Cursor")]
[HttpPost("ceshi")]
[AllowAnonymous] [AllowAnonymous]
public IActionResult ceshi() public List<string> Cursor([FromBody] CursorModel Sql)
{ {
return Ok(_homeQueries.ceshi()); return _homeQueries.Cursor(Sql);
} }
[HttpGet("wjj")]
[HttpPost("Cursor")]
[AllowAnonymous] [AllowAnonymous]
public List<string> Cursor([FromBody] CursorModel Sql) public IActionResult GetDirectoryTree(string rootPath = "D:\\工作文档\\文档\\精细化分析平台")
{ {
return _homeQueries.Cursor(Sql); try
{
var tree = _directoryTree.GetDirectoryTree(rootPath);
return Ok(tree);
}
catch (System.Exception ex)
{
return StatusCode(StatusCodes.Status500InternalServerError, ex.Message);
}
} }
} }
} }
\ No newline at end of file
using Dapper; using Dapper;
using HtmlAgilityPack;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
...@@ -10,9 +11,15 @@ ...@@ -10,9 +11,15 @@
using QueryPlatform.Infra; using QueryPlatform.Infra;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using ZXing;
using ZXing.Common;
using ZXing.Rendering;
namespace QueryPlatform.Api.Controllers namespace QueryPlatform.Api.Controllers
{ {
...@@ -82,7 +89,7 @@ public async Task<(IEnumerable<dynamic>, IEnumerable<dynamic>, string, string, I ...@@ -82,7 +89,7 @@ public async Task<(IEnumerable<dynamic>, IEnumerable<dynamic>, string, string, I
[AllowAnonymous] [AllowAnonymous]
public async Task<string> DownloadFileAsync([FromBody] SYS_Cs sYS_Cs) public async Task<string> DownloadFileAsync([FromBody] SYS_Cs sYS_Cs)
{ {
var dz = await resourceQueries.ProjectReport1(sYS_Cs.id, sYS_Cs.MEDIC_AREA, sYS_Cs.item_name, sYS_Cs.GENERIC_NAME, sYS_Cs.PROJECT_NAME, sYS_Cs.icd, sYS_Cs.DISEASE_NAME, _webHostEnvironment.WebRootPath, 1); var dz = await resourceQueries.ProjectReport1(sYS_Cs.id, sYS_Cs.MEDIC_AREA, sYS_Cs.item_name, sYS_Cs.GENERIC_NAME, sYS_Cs.PROJECT_NAME, sYS_Cs.icd, sYS_Cs.DISEASE_NAME, _webHostEnvironment.WebRootPath, 1);
return dz.Item7; return dz.Item7;
} }
...@@ -155,13 +162,13 @@ public IEnumerable<dynamic> ShowLog(long indexs, string tableName) ...@@ -155,13 +162,13 @@ public IEnumerable<dynamic> ShowLog(long indexs, string tableName)
private static SemaphoreSlim semaphore = new SemaphoreSlim(1, 1); private static SemaphoreSlim semaphore = new SemaphoreSlim(1, 1);
[HttpPost("PullData")] [HttpPost("PullData")]
[AllowAnonymous] [AllowAnonymous]
public async Task PullDataAsync(long indexs, string DatabaseName, string tableName, string zxr) public async Task PullDataAsync(long indexs, string DatabaseName, string tableName, string zxr,int dbz=0)
{ {
resourceQueries.pullstate(indexs, tableName); resourceQueries.pullstate(indexs, tableName);
await semaphore.WaitAsync(); await semaphore.WaitAsync();
try try
{ {
resourceQueries.PullData(indexs, DatabaseName, tableName); resourceQueries.PullData(indexs, DatabaseName, tableName, dbz);
homeQueries.SendMail("流水库拉取提醒", @$"流水库:{DatabaseName}拉取结束,请查看日志。有没有需要特殊处理的医院", zxr); homeQueries.SendMail("流水库拉取提醒", @$"流水库:{DatabaseName}拉取结束,请查看日志。有没有需要特殊处理的医院", zxr);
} }
catch (Exception e) catch (Exception e)
...@@ -277,7 +284,14 @@ public IEnumerable<dynamic> lingchuanglujingjiancha(string name) ...@@ -277,7 +284,14 @@ public IEnumerable<dynamic> lingchuanglujingjiancha(string name)
var DemandQuery = homeQueries.lingchuanglujingjiancha(name); var DemandQuery = homeQueries.lingchuanglujingjiancha(name);
return DemandQuery; return DemandQuery;
} }
[HttpGet("ATC")]
[AllowAnonymous]
public async void ATC(string atccode = "", string url = "https://atcddd.fhi.no/atc_ddd_index/")
{
drugqueryQueries.ATC(atccode, url);
}
} }
} }
...@@ -32,6 +32,7 @@ protected override void Load(ContainerBuilder builder) ...@@ -32,6 +32,7 @@ protected override void Load(ContainerBuilder builder)
builder.Register(c => new DrugqueryQueries(Connection156, configConnectionString)).InstancePerLifetimeScope(); builder.Register(c => new DrugqueryQueries(Connection156, configConnectionString)).InstancePerLifetimeScope();
builder.Register(c => new HomeQueries(configConnectionString, Connection156)).InstancePerLifetimeScope(); builder.Register(c => new HomeQueries(configConnectionString, Connection156)).InstancePerLifetimeScope();
builder.Register(c => new AnalysisQueries(Connection156, configConnectionString)).InstancePerLifetimeScope(); builder.Register(c => new AnalysisQueries(Connection156, configConnectionString)).InstancePerLifetimeScope();
builder.Register(c => new DirectoryTree()).InstancePerLifetimeScope();
} }
} }
} }
......
...@@ -208,164 +208,165 @@ public void JX_GXID(int id, int hos_id) ...@@ -208,164 +208,165 @@ public void JX_GXID(int id, int hos_id)
updatezt(id, hos_id, "判断MASTER_INDEX是否修改" + sql.Replace("'", "''"), null); updatezt(id, hos_id, "判断MASTER_INDEX是否修改" + sql.Replace("'", "''"), null);
if (JX_zx_int(sql, hos_id, id, hos) > 0 && hos.ExecDatabase.Length == 13) if (JX_zx_int(sql, hos_id, id, hos) > 0 && hos.ExecDatabase.Length == 13)
{ {
// sql = $@" IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'PATIENT') sql = $@" IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'PATIENT')
//DROP TABLE [{hos.ExecDatabase}].dbo.PATIENT DROP TABLE [{hos.ExecDatabase}].dbo.PATIENT
//IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'PATIENT_NOTNULL') IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'PATIENT_NOTNULL')
//DROP TABLE [{hos.ExecDatabase}].dbo.PATIENT_NOTNULL DROP TABLE [{hos.ExecDatabase}].dbo.PATIENT_NOTNULL
//IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'PATIENT_STORE1') IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'PATIENT_STORE1')
//DROP TABLE [{hos.ExecDatabase}].dbo.PATIENT_STORE1 DROP TABLE [{hos.ExecDatabase}].dbo.PATIENT_STORE1
//IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'PATIENT_STORE2') IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'PATIENT_STORE2')
//DROP TABLE [{hos.ExecDatabase}].dbo.PATIENT_STORE2 DROP TABLE [{hos.ExecDatabase}].dbo.PATIENT_STORE2
//CREATE TABLE [{hos.ExecDatabase}].dbo.PATIENT (PERSON_ID int,ID_CARD NVARCHAR(max),CARD_ID NVARCHAR(max),NEWPERSON_ID int) CREATE TABLE [{hos.ExecDatabase}].dbo.PATIENT (PERSON_ID int,ID_CARD NVARCHAR(max),CARD_ID NVARCHAR(max),NEWPERSON_ID int)
//CREATE TABLE [{hos.ExecDatabase}].dbo.PATIENT_NOTNULL(PERSON_ID int,CODE NVARCHAR(50),NEWPERSON_ID int) CREATE TABLE [{hos.ExecDatabase}].dbo.PATIENT_NOTNULL(PERSON_ID int,CODE NVARCHAR(50),NEWPERSON_ID int)
//CREATE TABLE [{hos.ExecDatabase}].dbo.PATIENT_STORE1(PERSON_ID int,CODE NVARCHAR(50),NEWPERSON_ID int) CREATE TABLE [{hos.ExecDatabase}].dbo.PATIENT_STORE1(PERSON_ID int,CODE NVARCHAR(50),NEWPERSON_ID int)
//CREATE TABLE [{hos.ExecDatabase}].dbo.PATIENT_STORE2(PERSON_ID int,CODE NVARCHAR(50),NEWPERSON_ID int) CREATE TABLE [{hos.ExecDatabase}].dbo.PATIENT_STORE2(PERSON_ID int,CODE NVARCHAR(50),NEWPERSON_ID int)
// CREATE NONCLUSTERED INDEX [INDEX_PATIENT_NOTNULL] ON [{hos.ExecDatabase}].[dbo].[PATIENT_NOTNULL] ([CODE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) CREATE NONCLUSTERED INDEX [INDEX_PATIENT_NOTNULL] ON [{hos.ExecDatabase}].[dbo].[PATIENT_NOTNULL] ([CODE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
//CREATE NONCLUSTERED INDEX [INDEX_PATIENT_STORE1] ON [{hos.ExecDatabase}].[dbo].[PATIENT_STORE1] ([CODE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) CREATE NONCLUSTERED INDEX [INDEX_PATIENT_STORE1] ON [{hos.ExecDatabase}].[dbo].[PATIENT_STORE1] ([CODE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
//CREATE NONCLUSTERED INDEX [INDEX_PATIENT_STORE2] ON [{hos.ExecDatabase}].[dbo].[PATIENT_STORE2] ([CODE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) CREATE NONCLUSTERED INDEX [INDEX_PATIENT_STORE2] ON [{hos.ExecDatabase}].[dbo].[PATIENT_STORE2] ([CODE] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
//CREATE NONCLUSTERED INDEX [INDEX1_PATIENT_NOTNULL] ON [{hos.ExecDatabase}].[dbo].[PATIENT_NOTNULL]([PERSON_ID] ASC, [CODE] ASC, [NEWPERSON_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) CREATE NONCLUSTERED INDEX [INDEX1_PATIENT_NOTNULL] ON [{hos.ExecDatabase}].[dbo].[PATIENT_NOTNULL]([PERSON_ID] ASC, [CODE] ASC, [NEWPERSON_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
//CREATE NONCLUSTERED INDEX [INDEX1_PATIENT_STORE1] ON [{hos.ExecDatabase}].[dbo].[PATIENT_STORE1] ([PERSON_ID] ASC, [CODE] ASC, [NEWPERSON_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) CREATE NONCLUSTERED INDEX [INDEX1_PATIENT_STORE1] ON [{hos.ExecDatabase}].[dbo].[PATIENT_STORE1] ([PERSON_ID] ASC, [CODE] ASC, [NEWPERSON_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
//CREATE NONCLUSTERED INDEX [INDEX1_PATIENT_STORE2] ON [{hos.ExecDatabase}].[dbo].[PATIENT_STORE2] ([PERSON_ID] ASC, [CODE] ASC, [NEWPERSON_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) CREATE NONCLUSTERED INDEX [INDEX1_PATIENT_STORE2] ON [{hos.ExecDatabase}].[dbo].[PATIENT_STORE2] ([PERSON_ID] ASC, [CODE] ASC, [NEWPERSON_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
//CREATE NONCLUSTERED INDEX [INDEX2_PATIENT] ON [{hos.ExecDatabase}].[dbo].[PATIENT] ([PERSON_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) CREATE NONCLUSTERED INDEX [INDEX2_PATIENT] ON [{hos.ExecDatabase}].[dbo].[PATIENT] ([PERSON_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
//CREATE NONCLUSTERED INDEX [INDEX2_PATIENT_NOTNULL] ON [{hos.ExecDatabase}].[dbo].[PATIENT_NOTNULL] ([PERSON_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) CREATE NONCLUSTERED INDEX [INDEX2_PATIENT_NOTNULL] ON [{hos.ExecDatabase}].[dbo].[PATIENT_NOTNULL] ([PERSON_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
//CREATE NONCLUSTERED INDEX [INDEX2_PATIENT_STORE1] ON [{hos.ExecDatabase}].[dbo].[PATIENT_STORE1] ([PERSON_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) CREATE NONCLUSTERED INDEX [INDEX2_PATIENT_STORE1] ON [{hos.ExecDatabase}].[dbo].[PATIENT_STORE1] ([PERSON_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
//CREATE NONCLUSTERED INDEX [INDEX2_PATIENT_STORE2] ON [{hos.ExecDatabase}].[dbo].[PATIENT_STORE2] ([PERSON_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)"; CREATE NONCLUSTERED INDEX [INDEX2_PATIENT_STORE2] ON [{hos.ExecDatabase}].[dbo].[PATIENT_STORE2] ([PERSON_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)";
// updatezt(id, hos_id, "创建需要使用的表" + sql.Replace("'", "''"), null); updatezt(id, hos_id, "创建需要使用的表" + sql.Replace("'", "''"), null);
// JX_zx(sql, hos_id, id, hos);
// //判断病人表中主索引列是否有值
// sql = @$" SELECT CASE WHEN MAX(MASTER_INDEX) IS NULL THEN 0 ELSE MAX(MASTER_INDEX) END id FROM [{hos.ExecDatabase}].[DBO].PUB_PATIENT where MASTER_INDEX is not null; ";
// updatezt(id, hos_id, "判断病人表中主索引列是否有值" + sql.Replace("'", "''"), null);
// int COUNT = JX_zx_int(sql, hos_id, id, hos);
// sql = @$" SELECT COUNT(1) id FROM [{hos.ExecDatabase}].[DBO].PUB_PATIENT where MASTER_INDEX is null ";
// int COUNT_ROW = JX_zx_int(sql, hos_id, id, hos);
// if (COUNT_ROW != 0)
// {
// //将病人的医保号和身份证号集中放在一张表中
// sql = $@"truncate TABLE [{hos.ExecDatabase}].[DBO].PATIENT
// truncate TABLE [{hos.ExecDatabase}].[DBO].PATIENT_NOTNULL
// truncate TABLE [{hos.ExecDatabase}].[DBO].PATIENT_STORE1
// truncate TABLE [{hos.ExecDatabase}].[DBO].PATIENT_STORE2
// insert into [{hos.ExecDatabase}].[DBO].PATIENT(PERSON_ID,ID_CARD,CARD_ID,NEWPERSON_ID)
// SELECT TAB.PERSON_ID, CAST(ID_CARD AS NVARCHAR(100))ID_CARD, CARD_ID ,NULL NEWPERSON_ID FROM
// (SELECT PERSON_ID,ID_CARD FROM [{hos.ExecDatabase}].[DBO].PUB_PATIENT WHERE [MASTER_INDEX] IS NULL ) TAB
// LEFT JOIN (SELECT PERSON_ID, CARD_ID FROM (SELECT DJ.PERSON_ID, CARD_ID FROM [{hos.ExecDatabase}].[DBO].[OUT_REG_INFO] DJ GROUP BY DJ.PERSON_ID, CARD_ID
// UNION
// SELECT DJ.PERSON_ID, CARD_ID FROM [{hos.ExecDatabase}].[DBO].[INPAT_REG_INFO] DJ GROUP BY DJ.PERSON_ID,CARD_ID) TA ) TAB1
// ON TAB.PERSON_ID=TAB1.PERSON_ID GROUP BY TAB.PERSON_ID,ID_CARD,CARD_ID;";
// updatezt(id, hos_id, "将病人的医保号和身份证号集中放在一张表中" + sql.Replace("'", "''"), null);
// JX_zx(sql, hos_id, id, hos);
// //获取最大的master_index的值
// sql = @$" select case when max(NEWPERSON_ID) is null then 0 else max(NEWPERSON_ID) end id from [{hos.ExecDatabase}].[dbo].[PATIENT]";
// updatezt(id, hos_id, "获取最大的master_index的值" + sql.Replace("'", "''"), null);
// int mark = JX_zx_int(sql, hos_id, id, hos);
// //置空不符合规范的身份证号和医保号
// //更新无医保号且无身份证号的病人
// sql = $@"IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'tablea')
// DROP TABLE [{hos.ExecDatabase}].dbo.tablea
// UPDATE [{hos.ExecDatabase}].[dbo].PATIENT SET ID_CARD = NULL WHERE ID_CARD NOT LIKE '[0-9]%' OR LEN(ID_CARD)<=15 OR ID_CARD LIKE '%8888%' OR ID_CARD LIKE '%00000%'
// UPDATE [{hos.ExecDatabase}].[dbo].PATIENT SET CARD_ID = NULL WHERE CARD_ID NOT LIKE '[0-9]%' OR LEN(CARD_ID)<6
// create table [{hos.ExecDatabase}].[dbo].tablea (id int primary key identity({COUNT + mark + 1},1),[code] nvarchar(200))
// insert into [{hos.ExecDatabase}].[dbo].tablea(code)
// select distinct person_id from [{hos.ExecDatabase}].[dbo].[PATIENT] WHERE ID_CARD IS NULL AND CARD_ID IS NULL
// update [{hos.ExecDatabase}].[dbo].[PATIENT] set NEWPERSON_ID = b.id from [{hos.ExecDatabase}].[dbo].tablea b where [{hos.ExecDatabase}].[dbo].[PATIENT].PERSON_ID = b.code
// insert into [{hos.ExecDatabase}].[dbo].PATIENT_NOTNULL(PERSON_ID,CODE,NEWPERSON_ID)
// select PERSON_ID,ID_CARD CODE, NEWPERSON_ID from [{hos.ExecDatabase}].[dbo].PATIENT WHERE NEWPERSON_ID IS NULL
// UNION ALL
// select PERSON_ID,CARD_ID CODE, NEWPERSON_ID from [{hos.ExecDatabase}].[dbo].PATIENT WHERE NEWPERSON_ID IS NULL
// drop table [{hos.ExecDatabase}].[dbo].tablea";
// updatezt(id, hos_id, "置空不符合规范的身份证号和医保号&&更新无医保号且无身份证号的病人" + sql.Replace("'", "''"), null);
// JX_zx(sql, hos_id, id, hos);
// //递归更新身份证或者医保号相同的主索引
// mark = (mark == 0) ? COUNT : mark;
// sql = $@"IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'table2')
// DROP TABLE [{hos.ExecDatabase}].dbo.table2
// create table [{hos.ExecDatabase}].[DBO].table2 (id int primary key identity({mark + 1},1),[code] nvarchar(200))
// insert into [{hos.ExecDatabase}].[DBO].PATIENT_STORE1(PERSON_ID,CODE,NEWPERSON_ID)select PERSON_ID,CODE, NEWPERSON_ID from [{hos.ExecDatabase}].[DBO].PATIENT_NOTNULL
// DECLARE @COUNT int WHILE 1=1
// BEGIN
// truncate table [{hos.ExecDatabase}].[DBO].PATIENT_STORE2
// insert into [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 (PERSON_ID,CODE,NEWPERSON_ID) select A.PERSON_ID,B.CODE,B.PERSON_ID NEWPERSON_ID from [{hos.ExecDatabase}].[DBO].PATIENT_STORE1 A JOIN [{hos.ExecDatabase}].[DBO].PATIENT_NOTNULL B ON A.CODE = B.CODE GROUP BY A.PERSON_ID,B.PERSON_ID,b.CODE
// insert into [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 (PERSON_ID,CODE,NEWPERSON_ID) select A.PERSON_ID,B.CODE,B.PERSON_ID NEWPERSON_ID from [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 A JOIN [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 B ON A.NEWPERSON_ID = B.PERSON_ID GROUP BY A.PERSON_ID,B.PERSON_ID,b.CODE
// SELECT @COUNT=COUNT(1) FROM [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 A LEFT JOIN [{hos.ExecDatabase}].[DBO].PATIENT_STORE1 B ON A.PERSON_ID = B.PERSON_ID and A.NEWPERSON_ID = B.NEWPERSON_ID AND A.CODE = B.CODE WHERE B.PERSON_ID IS NULL
// IF @COUNT=0 BREAK
// truncate table [{hos.ExecDatabase}].[DBO].PATIENT_STORE1
// INSERT intO [{hos.ExecDatabase}].[DBO].PATIENT_STORE1 (PERSON_ID,CODE,NEWPERSON_ID) SELECT PERSON_ID,CODE,NEWPERSON_ID FROM [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 GROUP BY PERSON_ID,CODE,NEWPERSON_ID
// END
// insert into [{hos.ExecDatabase}].[DBO].table2(code) SELECT DISTINCT A.NEWPERSON_ID FROM [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 A ORDER BY NEWPERSON_ID
// UPDATE [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 SET NEWPERSON_ID = b.id from [{hos.ExecDatabase}].[DBO].table2 b where [{hos.ExecDatabase}].[DBO].[PATIENT_STORE2].NEWPERSON_ID = b.code
// update [{hos.ExecDatabase}].[DBO].[PATIENT] set NEWPERSON_ID = b.NEWPERSON_ID from (SELECT PERSON_ID,MIN(NEWPERSON_ID) NEWPERSON_ID FROM [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 GROUP BY PERSON_ID) b where [{hos.ExecDatabase}].[DBO].[PATIENT].PERSON_ID = b.PERSON_ID
// drop table [{hos.ExecDatabase}].dbo.table2";
// updatezt(id, hos_id, "递归更新身份证或者医保号相同的主索引" + sql.Replace("'", "''"), null);
// JX_zx(sql, hos_id, id, hos);
// sql = $@"UPDATE [{hos.ExecDatabase}].dbo.PATIENT SET NEWPERSON_ID = B.MASTER_INDEX FROM (SELECT A.NEWPERSON_ID,B.MASTER_INDEX FROM [{hos.ExecDatabase}].dbo.PATIENT A JOIN [{hos.ExecDatabase}].dbo.PUB_PATIENT B ON A.ID_CARD = B.ID_CARD WHERE B.MASTER_INDEX IS NOT NULL AND B.ID_CARD LIKE '[0-9]%' AND LEN(B.ID_CARD)>=15 AND B.ID_CARD NOT LIKE '%8888%' AND B.ID_CARD NOT LIKE '%0000%' GROUP BY A.NEWPERSON_ID,B.MASTER_INDEX) B WHERE PATIENT.NEWPERSON_ID = B.NEWPERSON_ID
// UPDATE [{hos.ExecDatabase}].dbo.PATIENT SET NEWPERSON_ID = B.MASTER_INDEX FROM (SELECT A.NEWPERSON_ID,B.MASTER_INDEX FROM [{hos.ExecDatabase}].dbo.PATIENT A JOIN ( SELECT B.CARD_ID,MASTER_INDEX FROM [{hos.ExecDatabase}].dbo.[PUB_PATIENT] A LEFT JOIN [{hos.ExecDatabase}].dbo.OUT_REG_INFO B ON A.PERSON_CODE = B.PERSON_CODE WHERE A.MASTER_INDEX IS NOT NULL AND A.ID_CARD LIKE '[0-9]%' AND LEN(A.ID_CARD)>=15 AND A.ID_CARD NOT LIKE '%8888%' AND A.ID_CARD NOT LIKE '%0000%' AND B.CARD_ID LIKE '[0-9]%' AND LEN(B.CARD_ID)>=6 AND B.CARD_ID IS NOT NULL UNION SELECT B.CARD_ID,MASTER_INDEX FROM [{hos.ExecDatabase}].dbo.[PUB_PATIENT] A LEFT JOIN [{hos.ExecDatabase}].dbo.INPAT_REG_INFO B ON A.PERSON_CODE = B.PERSON_CODE WHERE A.MASTER_INDEX IS NOT NULL AND A.ID_CARD LIKE '[0-9]%' AND LEN(A.ID_CARD)>=15 AND A.ID_CARD NOT LIKE '%8888%' AND A.ID_CARD NOT LIKE '%0000%' AND B.CARD_ID LIKE '[0-9]%' AND LEN(B.CARD_ID)>=6 AND B.CARD_ID IS NOT NULL ) B ON A.CARD_ID = B.CARD_ID GROUP BY A.NEWPERSON_ID,B.MASTER_INDEX ) B WHERE PATIENT.NEWPERSON_ID = B.NEWPERSON_ID";
// updatezt(id, hos_id, "同步ID_CARD或医保号相同的病人主索引.." + sql.Replace("'", "''"), null);
// JX_zx(sql, hos_id, id, hos);
// sql = $@"UPDATE [{hos.ExecDatabase}].dbo.PUB_PATIENT SET MASTER_INDEX=NEWPERSON_ID FROM (SELECT [PERSON_ID],NEWPERSON_ID FROM [{hos.ExecDatabase}].dbo.PATIENT GROUP BY [PERSON_ID], NEWPERSON_ID) TAB,[{hos.ExecDatabase}].dbo.PUB_PATIENT B WHERE B.PERSON_ID=TAB.PERSON_ID;
// ";
// updatezt(id, hos_id, "将数据更新回病人登记表.." + sql.Replace("'", "''"), null);
// JX_zx(sql, hos_id, id, hos);
// sql = $@"DROP TABLE[{ hos.ExecDatabase}].dbo.PATIENT
// DROP TABLE[{ hos.ExecDatabase}].dbo.PATIENT_NOTNULL
// DROP TABLE[{ hos.ExecDatabase}].dbo.PATIENT_STORE1
// DROP TABLE[{ hos.ExecDatabase}].dbo.PATIENT_STORE2";
// updatezt(id, hos_id, "删除临时表.." + sql.Replace("'", "''"), null);
// JX_zx(sql, hos_id, id, hos);
sql = $@"
select *into #id_card解码 from(
SELECT null MASTER_INDEX, PERSON_ID, CAST(ID_CARD as nvarchar) ID_CARD1 FROM [dbo].[PUB_PATIENT]
union
select null MASTER_INDEX, PERSON_ID, CAST(CAST(ID_CARD as varchar)as nvarchar) ID_CARD2 FROM [dbo].[PUB_PATIENT])A
select MASTER_INDEX,PERSON_ID,max(ID_CARD)ID_CARD into #id_card解码2 from(
select MASTER_INDEX,PERSON_ID,case when ID_CARD1 is not null and len(ID_CARD1)>=15 and len(ID_CARD1)<=18 then ID_CARD1
else null end ID_CARD From #id_card解码 )a group by MASTER_INDEX,PERSON_ID
select distinct MASTER_INDEX,PERSON_ID,
case when ID_CARD NOT LIKE '[0-9]%' OR LEN(ID_CARD)<=15 OR ID_CARD LIKE '%8888%' OR ID_CARD LIKE '%00000%' then null
else case when len(ID_CARD) >15 then ID_CARD when len(ID_CARD) >15 then ID_CARD end
end ID_CARD into #解码后 from #id_card解码2
select * into #已经分配的MASTER_INDEX from #解码后 where MASTER_INDEX is not null and ID_CARD is not null
select PERSON_ID,a.ID_CARD,case when a.MASTER_INDEX is not null then a.MASTER_INDEX else b.MASTER_INDEX end MASTER_INDEX into #身份证映射MASTER_INDEX from #解码后 a
left join (select ID_CARD, max(MASTER_INDEX)MASTER_INDEX from #已经分配的MASTER_INDEX GROUP BY ID_CARD )b on a.ID_CARD=b.ID_CARD
DECLARE @maxMASTER_INDEX int =(select isnull(max(MASTER_INDEX),0) FROM [dbo].[PUB_PATIENT] )
select*, @maxMASTER_INDEX+( ROW_NUMBER() OVER(PARTITION BY getdate() ORDER BY getdate() ) )MASTER_INDEX into #有身份证MASTER_INDEX空生成MASTER_INDEX from(
select distinct ID_CARD from #身份证映射MASTER_INDEX where ID_CARD is not null and MASTER_INDEX is null)a
update #身份证映射MASTER_INDEX set MASTER_INDEX = b.MASTER_INDEX
from #身份证映射MASTER_INDEX a join #有身份证MASTER_INDEX空生成MASTER_INDEX b on a.ID_CARD=b.ID_CARD where a.MASTER_INDEX is null
DECLARE @maxMASTER_INDEX1 int =(select isnull(max(MASTER_INDEX),0) FROM #身份证映射MASTER_INDEX)
select PERSON_ID, @maxMASTER_INDEX1+( ROW_NUMBER() OVER(PARTITION BY getdate() ORDER BY getdate() ) )MASTER_INDEX into #无身份证MASTER_INDEX空生成MASTER_INDEX from(
select distinct PERSON_ID from #身份证映射MASTER_INDEX where MASTER_INDEX is null)a
update #身份证映射MASTER_INDEX set MASTER_INDEX = b.MASTER_INDEX
from #身份证映射MASTER_INDEX a join #无身份证MASTER_INDEX空生成MASTER_INDEX b on a.PERSON_ID=b.PERSON_ID where a.MASTER_INDEX is null
update [dbo].[PUB_PATIENT] set MASTER_INDEX=b.MASTER_INDEX
from [dbo].[PUB_PATIENT] a
join #身份证映射MASTER_INDEX b on a.PERSON_ID=b.PERSON_ID where a.MASTER_INDEX is null
";
updatezt(id, hos_id, "MASTER_INDEX更新", null);
JX_zx(sql, hos_id, id, hos); JX_zx(sql, hos_id, id, hos);
//判断病人表中主索引列是否有值
sql = @$" SELECT CASE WHEN MAX(MASTER_INDEX) IS NULL THEN 0 ELSE MAX(MASTER_INDEX) END id FROM [{hos.ExecDatabase}].[DBO].PUB_PATIENT where MASTER_INDEX is not null; ";
updatezt(id, hos_id, "判断病人表中主索引列是否有值" + sql.Replace("'", "''"), null);
int COUNT = JX_zx_int(sql, hos_id, id, hos);
sql = @$" SELECT COUNT(1) id FROM [{hos.ExecDatabase}].[DBO].PUB_PATIENT where MASTER_INDEX is null ";
int COUNT_ROW = JX_zx_int(sql, hos_id, id, hos);
if (COUNT_ROW != 0)
{
//将病人的医保号和身份证号集中放在一张表中
sql = $@"truncate TABLE [{hos.ExecDatabase}].[DBO].PATIENT
truncate TABLE [{hos.ExecDatabase}].[DBO].PATIENT_NOTNULL
truncate TABLE [{hos.ExecDatabase}].[DBO].PATIENT_STORE1
truncate TABLE [{hos.ExecDatabase}].[DBO].PATIENT_STORE2
insert into [{hos.ExecDatabase}].[DBO].PATIENT(PERSON_ID,ID_CARD,CARD_ID,NEWPERSON_ID)
SELECT TAB.PERSON_ID, CAST(ID_CARD AS NVARCHAR(100))ID_CARD, CARD_ID ,NULL NEWPERSON_ID FROM
(SELECT PERSON_ID,ID_CARD FROM [{hos.ExecDatabase}].[DBO].PUB_PATIENT WHERE [MASTER_INDEX] IS NULL ) TAB
LEFT JOIN (SELECT PERSON_ID, CARD_ID FROM (SELECT DJ.PERSON_ID, CARD_ID FROM [{hos.ExecDatabase}].[DBO].[OUT_REG_INFO] DJ GROUP BY DJ.PERSON_ID, CARD_ID
UNION
SELECT DJ.PERSON_ID, CARD_ID FROM [{hos.ExecDatabase}].[DBO].[INPAT_REG_INFO] DJ GROUP BY DJ.PERSON_ID,CARD_ID) TA ) TAB1
ON TAB.PERSON_ID=TAB1.PERSON_ID GROUP BY TAB.PERSON_ID,ID_CARD,CARD_ID;";
updatezt(id, hos_id, "将病人的医保号和身份证号集中放在一张表中" + sql.Replace("'", "''"), null);
JX_zx(sql, hos_id, id, hos);
//获取最大的master_index的值
sql = @$" select case when max(NEWPERSON_ID) is null then 0 else max(NEWPERSON_ID) end id from [{hos.ExecDatabase}].[dbo].[PATIENT]";
updatezt(id, hos_id, "获取最大的master_index的值" + sql.Replace("'", "''"), null);
int mark = JX_zx_int(sql, hos_id, id, hos);
//置空不符合规范的身份证号和医保号
//更新无医保号且无身份证号的病人
sql = $@"IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'tablea')
DROP TABLE [{hos.ExecDatabase}].dbo.tablea
UPDATE [{hos.ExecDatabase}].[dbo].PATIENT SET ID_CARD = NULL WHERE ID_CARD NOT LIKE '[0-9]%' OR LEN(ID_CARD)<=15 OR ID_CARD LIKE '%8888%' OR ID_CARD LIKE '%00000%'
UPDATE [{hos.ExecDatabase}].[dbo].PATIENT SET CARD_ID = NULL WHERE CARD_ID NOT LIKE '[0-9]%' OR LEN(CARD_ID)<6
create table [{hos.ExecDatabase}].[dbo].tablea (id int primary key identity({COUNT + mark + 1},1),[code] nvarchar(200))
insert into [{hos.ExecDatabase}].[dbo].tablea(code)
select distinct person_id from [{hos.ExecDatabase}].[dbo].[PATIENT] WHERE ID_CARD IS NULL AND CARD_ID IS NULL
update [{hos.ExecDatabase}].[dbo].[PATIENT] set NEWPERSON_ID = b.id from [{hos.ExecDatabase}].[dbo].tablea b where [{hos.ExecDatabase}].[dbo].[PATIENT].PERSON_ID = b.code
insert into [{hos.ExecDatabase}].[dbo].PATIENT_NOTNULL(PERSON_ID,CODE,NEWPERSON_ID)
select PERSON_ID,ID_CARD CODE, NEWPERSON_ID from [{hos.ExecDatabase}].[dbo].PATIENT WHERE NEWPERSON_ID IS NULL
UNION ALL
select PERSON_ID,CARD_ID CODE, NEWPERSON_ID from [{hos.ExecDatabase}].[dbo].PATIENT WHERE NEWPERSON_ID IS NULL
drop table [{hos.ExecDatabase}].[dbo].tablea";
updatezt(id, hos_id, "置空不符合规范的身份证号和医保号&&更新无医保号且无身份证号的病人" + sql.Replace("'", "''"), null);
JX_zx(sql, hos_id, id, hos);
//递归更新身份证或者医保号相同的主索引
mark = (mark == 0) ? COUNT : mark;
sql = $@"IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'table2')
DROP TABLE [{hos.ExecDatabase}].dbo.table2
create table [{hos.ExecDatabase}].[DBO].table2 (id int primary key identity({mark + 1},1),[code] nvarchar(200))
insert into [{hos.ExecDatabase}].[DBO].PATIENT_STORE1(PERSON_ID,CODE,NEWPERSON_ID)select PERSON_ID,CODE, NEWPERSON_ID from [{hos.ExecDatabase}].[DBO].PATIENT_NOTNULL
DECLARE @COUNT int WHILE 1=1
BEGIN
truncate table [{hos.ExecDatabase}].[DBO].PATIENT_STORE2
insert into [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 (PERSON_ID,CODE,NEWPERSON_ID) select A.PERSON_ID,B.CODE,B.PERSON_ID NEWPERSON_ID from [{hos.ExecDatabase}].[DBO].PATIENT_STORE1 A JOIN [{hos.ExecDatabase}].[DBO].PATIENT_NOTNULL B ON A.CODE = B.CODE GROUP BY A.PERSON_ID,B.PERSON_ID,b.CODE
insert into [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 (PERSON_ID,CODE,NEWPERSON_ID) select A.PERSON_ID,B.CODE,B.PERSON_ID NEWPERSON_ID from [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 A JOIN [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 B ON A.NEWPERSON_ID = B.PERSON_ID GROUP BY A.PERSON_ID,B.PERSON_ID,b.CODE
SELECT @COUNT=COUNT(1) FROM [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 A LEFT JOIN [{hos.ExecDatabase}].[DBO].PATIENT_STORE1 B ON A.PERSON_ID = B.PERSON_ID and A.NEWPERSON_ID = B.NEWPERSON_ID AND A.CODE = B.CODE WHERE B.PERSON_ID IS NULL
IF @COUNT=0 BREAK
truncate table [{hos.ExecDatabase}].[DBO].PATIENT_STORE1
INSERT intO [{hos.ExecDatabase}].[DBO].PATIENT_STORE1 (PERSON_ID,CODE,NEWPERSON_ID) SELECT PERSON_ID,CODE,NEWPERSON_ID FROM [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 GROUP BY PERSON_ID,CODE,NEWPERSON_ID
END
insert into [{hos.ExecDatabase}].[DBO].table2(code) SELECT DISTINCT A.NEWPERSON_ID FROM [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 A ORDER BY NEWPERSON_ID
UPDATE [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 SET NEWPERSON_ID = b.id from [{hos.ExecDatabase}].[DBO].table2 b where [{hos.ExecDatabase}].[DBO].[PATIENT_STORE2].NEWPERSON_ID = b.code
update [{hos.ExecDatabase}].[DBO].[PATIENT] set NEWPERSON_ID = b.NEWPERSON_ID from (SELECT PERSON_ID,MIN(NEWPERSON_ID) NEWPERSON_ID FROM [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 GROUP BY PERSON_ID) b where [{hos.ExecDatabase}].[DBO].[PATIENT].PERSON_ID = b.PERSON_ID
drop table [{hos.ExecDatabase}].dbo.table2";
updatezt(id, hos_id, "递归更新身份证或者医保号相同的主索引" + sql.Replace("'", "''"), null);
JX_zx(sql, hos_id, id, hos);
sql = $@"UPDATE [{hos.ExecDatabase}].dbo.PATIENT SET NEWPERSON_ID = B.MASTER_INDEX FROM (SELECT A.NEWPERSON_ID,B.MASTER_INDEX FROM [{hos.ExecDatabase}].dbo.PATIENT A JOIN [{hos.ExecDatabase}].dbo.PUB_PATIENT B ON A.ID_CARD = B.ID_CARD WHERE B.MASTER_INDEX IS NOT NULL AND B.ID_CARD LIKE '[0-9]%' AND LEN(B.ID_CARD)>=15 AND B.ID_CARD NOT LIKE '%8888%' AND B.ID_CARD NOT LIKE '%0000%' GROUP BY A.NEWPERSON_ID,B.MASTER_INDEX) B WHERE PATIENT.NEWPERSON_ID = B.NEWPERSON_ID
UPDATE [{hos.ExecDatabase}].dbo.PATIENT SET NEWPERSON_ID = B.MASTER_INDEX FROM (SELECT A.NEWPERSON_ID,B.MASTER_INDEX FROM [{hos.ExecDatabase}].dbo.PATIENT A JOIN ( SELECT B.CARD_ID,MASTER_INDEX FROM [{hos.ExecDatabase}].dbo.[PUB_PATIENT] A LEFT JOIN [{hos.ExecDatabase}].dbo.OUT_REG_INFO B ON A.PERSON_CODE = B.PERSON_CODE WHERE A.MASTER_INDEX IS NOT NULL AND A.ID_CARD LIKE '[0-9]%' AND LEN(A.ID_CARD)>=15 AND A.ID_CARD NOT LIKE '%8888%' AND A.ID_CARD NOT LIKE '%0000%' AND B.CARD_ID LIKE '[0-9]%' AND LEN(B.CARD_ID)>=6 AND B.CARD_ID IS NOT NULL UNION SELECT B.CARD_ID,MASTER_INDEX FROM [{hos.ExecDatabase}].dbo.[PUB_PATIENT] A LEFT JOIN [{hos.ExecDatabase}].dbo.INPAT_REG_INFO B ON A.PERSON_CODE = B.PERSON_CODE WHERE A.MASTER_INDEX IS NOT NULL AND A.ID_CARD LIKE '[0-9]%' AND LEN(A.ID_CARD)>=15 AND A.ID_CARD NOT LIKE '%8888%' AND A.ID_CARD NOT LIKE '%0000%' AND B.CARD_ID LIKE '[0-9]%' AND LEN(B.CARD_ID)>=6 AND B.CARD_ID IS NOT NULL ) B ON A.CARD_ID = B.CARD_ID GROUP BY A.NEWPERSON_ID,B.MASTER_INDEX ) B WHERE PATIENT.NEWPERSON_ID = B.NEWPERSON_ID";
updatezt(id, hos_id, "同步ID_CARD或医保号相同的病人主索引.." + sql.Replace("'", "''"), null);
JX_zx(sql, hos_id, id, hos);
sql = $@"UPDATE [{hos.ExecDatabase}].dbo.PUB_PATIENT SET MASTER_INDEX=NEWPERSON_ID FROM (SELECT [PERSON_ID],NEWPERSON_ID FROM [{hos.ExecDatabase}].dbo.PATIENT GROUP BY [PERSON_ID], NEWPERSON_ID) TAB,[{hos.ExecDatabase}].dbo.PUB_PATIENT B WHERE B.PERSON_ID=TAB.PERSON_ID;
";
updatezt(id, hos_id, "将数据更新回病人登记表.." + sql.Replace("'", "''"), null);
JX_zx(sql, hos_id, id, hos);
sql = $@"DROP TABLE[{hos.ExecDatabase}].dbo.PATIENT
DROP TABLE[{hos.ExecDatabase}].dbo.PATIENT_NOTNULL
DROP TABLE[{hos.ExecDatabase}].dbo.PATIENT_STORE1
DROP TABLE[{hos.ExecDatabase}].dbo.PATIENT_STORE2";
updatezt(id, hos_id, "删除临时表.." + sql.Replace("'", "''"), null);
JX_zx(sql, hos_id, id, hos);
// sql = $@"
//select *into #id_card解码 from(
//SELECT null MASTER_INDEX, PERSON_ID, CAST(ID_CARD as nvarchar) ID_CARD1 FROM [dbo].[PUB_PATIENT]
//union
//select null MASTER_INDEX, PERSON_ID, CAST(CAST(ID_CARD as varchar)as nvarchar) ID_CARD2 FROM [dbo].[PUB_PATIENT])A
//select MASTER_INDEX,PERSON_ID,max(ID_CARD)ID_CARD into #id_card解码2 from(
//select MASTER_INDEX,PERSON_ID,case when ID_CARD1 is not null and len(ID_CARD1)>=15 and len(ID_CARD1)<=18 then ID_CARD1
//else null end ID_CARD From #id_card解码 )a group by MASTER_INDEX,PERSON_ID
//select distinct MASTER_INDEX,PERSON_ID,
//case when ID_CARD NOT LIKE '[0-9]%' OR LEN(ID_CARD)<=15 OR ID_CARD LIKE '%8888%' OR ID_CARD LIKE '%00000%' then null
//else case when len(ID_CARD) >15 then ID_CARD when len(ID_CARD) >15 then ID_CARD end
//end ID_CARD into #解码后 from #id_card解码2
//select * into #已经分配的MASTER_INDEX from #解码后 where MASTER_INDEX is not null and ID_CARD is not null
//select PERSON_ID,a.ID_CARD,case when a.MASTER_INDEX is not null then a.MASTER_INDEX else b.MASTER_INDEX end MASTER_INDEX into #身份证映射MASTER_INDEX from #解码后 a
//left join (select ID_CARD, max(MASTER_INDEX)MASTER_INDEX from #已经分配的MASTER_INDEX GROUP BY ID_CARD )b on a.ID_CARD=b.ID_CARD
//DECLARE @maxMASTER_INDEX int =(select isnull(max(MASTER_INDEX),0) FROM [dbo].[PUB_PATIENT] )
//select*, @maxMASTER_INDEX+( ROW_NUMBER() OVER(PARTITION BY getdate() ORDER BY getdate() ) )MASTER_INDEX into #有身份证MASTER_INDEX空生成MASTER_INDEX from(
//select distinct ID_CARD from #身份证映射MASTER_INDEX where ID_CARD is not null and MASTER_INDEX is null)a
//update #身份证映射MASTER_INDEX set MASTER_INDEX = b.MASTER_INDEX
//from #身份证映射MASTER_INDEX a join #有身份证MASTER_INDEX空生成MASTER_INDEX b on a.ID_CARD=b.ID_CARD where a.MASTER_INDEX is null
//DECLARE @maxMASTER_INDEX1 int =(select isnull(max(MASTER_INDEX),0) FROM #身份证映射MASTER_INDEX)
//select PERSON_ID, @maxMASTER_INDEX1+( ROW_NUMBER() OVER(PARTITION BY getdate() ORDER BY getdate() ) )MASTER_INDEX into #无身份证MASTER_INDEX空生成MASTER_INDEX from(
//select distinct PERSON_ID from #身份证映射MASTER_INDEX where MASTER_INDEX is null)a
//update #身份证映射MASTER_INDEX set MASTER_INDEX = b.MASTER_INDEX
//from #身份证映射MASTER_INDEX a join #无身份证MASTER_INDEX空生成MASTER_INDEX b on a.PERSON_ID=b.PERSON_ID where a.MASTER_INDEX is null
//update [dbo].[PUB_PATIENT] set MASTER_INDEX=b.MASTER_INDEX
//from [dbo].[PUB_PATIENT] a
//join #身份证映射MASTER_INDEX b on a.PERSON_ID=b.PERSON_ID where a.MASTER_INDEX is null
// ";
// updatezt(id, hos_id, "MASTER_INDEX更新", null);
// JX_zx(sql, hos_id, id, hos);
}
} }
} }
...@@ -379,8 +380,8 @@ public void JX_DIC_DIAG(int id, int hos_id) ...@@ -379,8 +380,8 @@ public void JX_DIC_DIAG(int id, int hos_id)
drop table [{hos.ExecDatabase}].[dbo].[DIC_DIAG_SUMMARY]; drop table [{hos.ExecDatabase}].[dbo].[DIC_DIAG_SUMMARY];
CREATE TABLE [{hos.ExecDatabase}].[dbo].[DIC_DIAG_SUMMARY]( CREATE TABLE [{hos.ExecDatabase}].[dbo].[DIC_DIAG_SUMMARY](
[ID] [int] IDENTITY(1,1) NOT NULL, [ID] [int] IDENTITY(1,1) NOT NULL,
[DISEASE_NAME] [nvarchar](500) NULL, [DISEASE_NAME] [nvarchar](max) NULL,
[ICD] [nvarchar](50) NULL, [ICD] [nvarchar](max) NULL,
[ICD_CODE] [nvarchar](50) NULL, [ICD_CODE] [nvarchar](50) NULL,
[I_DEPT_NAME] [nvarchar](100) NULL, [I_DEPT_NAME] [nvarchar](100) NULL,
[F_DIAG] [nvarchar](200) NULL, [F_DIAG] [nvarchar](200) NULL,
...@@ -390,7 +391,7 @@ IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'DIC_DI ...@@ -390,7 +391,7 @@ IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'DIC_DI
drop table [{hos.ExecDatabase}].[dbo].[DIC_DIAG_GATHER]; drop table [{hos.ExecDatabase}].[dbo].[DIC_DIAG_GATHER];
CREATE TABLE [dbo].[DIC_DIAG_GATHER]( CREATE TABLE [dbo].[DIC_DIAG_GATHER](
[ID] [int] IDENTITY(1,1) NOT NULL, [ID] [int] IDENTITY(1,1) NOT NULL,
[DISEASE_NAME] [nvarchar](500) NULL, [DISEASE_NAME] [nvarchar](max) NULL,
[ICD_ID] int NULL, [ICD_ID] int NULL,
[I_ICD_CODE] [nvarchar](50) NULL, [I_ICD_CODE] [nvarchar](50) NULL,
[I_DEPT_NAME] [nvarchar](100) NULL, [I_DEPT_NAME] [nvarchar](100) NULL,
......
using System;
using System.Collections.Generic;
using System.IO;
public class DirectoryTree
{
public class FileSystemItem
{
public string Name { get; set; }
public string Type { get; set; } // 对于文件,这是扩展名;对于文件夹,可以是"Folder"
public List<FileSystemItem> Children { get; set; } = new List<FileSystemItem>();
public FileSystemItem(string name, string type)
{
Name = name;
Type = type;
}
}
public FileSystemItem GetDirectoryTree(string rootPath)
{
var rootItem = new FileSystemItem(Path.GetFileName(rootPath), "Folder");
FillDirectoryTree(rootPath, rootItem);
return rootItem;
}
private void FillDirectoryTree(string path, FileSystemItem parent)
{
try
{
foreach (var dir in Directory.GetDirectories(path))
{
var dirInfo = new DirectoryInfo(dir);
var dirItem = new FileSystemItem(dirInfo.Name, "Folder");
parent.Children.Add(dirItem);
FillDirectoryTree(dir, dirItem); // 递归调用
}
foreach (var file in Directory.GetFiles(path))
{
var fileInfo = new FileInfo(file);
var fileItem = new FileSystemItem(fileInfo.Name, fileInfo.Extension.TrimStart('.'));
parent.Children.Add(fileItem);
}
}
catch (Exception ex)
{
// 处理异常,例如记录日志
Console.WriteLine($"Error accessing directory: {ex.Message}");
}
}
}
\ No newline at end of file
using Dapper; using Dapper;
using DocumentFormat.OpenXml.Wordprocessing;
using HtmlAgilityPack;
using Microsoft.Data.SqlClient; using Microsoft.Data.SqlClient;
using NPoco;
using QueryPlatform.Api.Infrastructure.Modules; using QueryPlatform.Api.Infrastructure.Modules;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data.Common; using System.Data.Common;
using System.IO;
using System.Linq; using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Web;
namespace QueryPlatform.Api.Infrastructure.Queries namespace QueryPlatform.Api.Infrastructure.Queries
{ {
...@@ -103,6 +112,7 @@ public long SqlAdd(SYS_Drugquery sYS_Drugquery, long type, string zxr) ...@@ -103,6 +112,7 @@ public long SqlAdd(SYS_Drugquery sYS_Drugquery, long type, string zxr)
[REG_ID] [int] NULL, [REG_ID] [int] NULL,
[REG_SOURCE] [nvarchar](50) NULL, [REG_SOURCE] [nvarchar](50) NULL,
[REG_TIME] [datetime2](7) NULL, [REG_TIME] [datetime2](7) NULL,
[OUTHOS_TIME] [datetime2](7) NULL,
[AREA_ID] [int] NULL, [AREA_ID] [int] NULL,
[INDEXS] [int] NULL, [INDEXS] [int] NULL,
[TYPE] [int] NULL, [TYPE] [int] NULL,
...@@ -198,14 +208,14 @@ public void Diseasequery(long type1_2, string icd_or_diseaseCondition, long Inde ...@@ -198,14 +208,14 @@ public void Diseasequery(long type1_2, string icd_or_diseaseCondition, long Inde
{ {
sql2 = $@" IF EXISTS(SELECT * FROM [{item.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'MEDIC_PERSON_INFORMATION_{Indexs}') sql2 = $@" IF EXISTS(SELECT * FROM [{item.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'MEDIC_PERSON_INFORMATION_{Indexs}')
drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}; drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs};
SELECT C.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,1 REG_SOURCE,A.REG_TIME, {Indexs}Indexs,a.org_Code hos_id,C.BIRTHDAY,C.SEX,1 TYPE,A.DEPT_NAME SELECT C.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,1 REG_SOURCE,A.REG_TIME,NULL OUTHOS_TIME, {Indexs}Indexs,a.org_Code hos_id,C.BIRTHDAY,C.SEX,1 TYPE,A.DEPT_NAME
into [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs} into [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}
FROM {item.ExecDatabase}.[DBO].OUT_REG_INFO A , FROM {item.ExecDatabase}.[DBO].OUT_REG_INFO A ,
(SELECT DISTINCT REG_CODE FROM {item.ExecDatabase}.[DBO].OUT_DIAG WHERE {icd_or_diseaseCondition}) B, (SELECT DISTINCT REG_CODE FROM {item.ExecDatabase}.[DBO].OUT_DIAG WHERE {icd_or_diseaseCondition}) B,
{item.ExecDatabase}.[DBO].PUB_PATIENT C {item.ExecDatabase}.[DBO].PUB_PATIENT C
WHERE A.REG_CODE=B.REG_CODE AND A.PERSON_CODE=C.PERSON_CODE WHERE A.REG_CODE=B.REG_CODE AND A.PERSON_CODE=C.PERSON_CODE
UNION ALL UNION ALL
SELECT C.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,2 REG_SOURCE,A.INHOS_TIME,{Indexs},a.org_Code hos_id,C.BIRTHDAY,C.SEX,1 TYPE,A.OUT_DEPT_NAME SELECT C.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,2 REG_SOURCE,A.INHOS_TIME,A.OUTHOS_TIME,{Indexs},a.org_Code hos_id,C.BIRTHDAY,C.SEX,1 TYPE,A.OUT_DEPT_NAME
FROM {item.ExecDatabase}.[DBO].INPAT_REG_INFO A , FROM {item.ExecDatabase}.[DBO].INPAT_REG_INFO A ,
(SELECT DISTINCT REG_CODE FROM {item.ExecDatabase}.[DBO].INPAT_DIAG WHERE {icd_or_diseaseCondition}) B, (SELECT DISTINCT REG_CODE FROM {item.ExecDatabase}.[DBO].INPAT_DIAG WHERE {icd_or_diseaseCondition}) B,
{item.ExecDatabase}.[DBO].PUB_PATIENT C {item.ExecDatabase}.[DBO].PUB_PATIENT C
...@@ -213,9 +223,9 @@ UNION ALL ...@@ -213,9 +223,9 @@ UNION ALL
conn.Execute(sql2, commandTimeout: 60 * 60 * 5); conn.Execute(sql2, commandTimeout: 60 * 60 * 5);
sql2 = $@" insert into [SV_QueryPlatform_].[dbo].MEDIC_PERSON_INFORMATION_{Indexs} sql2 = $@" insert into [SV_QueryPlatform_].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}
( [HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE], ( [HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],
[REG_TIME], AREA_ID,[INDEXS],[TYPE],[DEPT_NAME] ) [REG_TIME],OUTHOS_TIME, AREA_ID,[INDEXS],[TYPE],[DEPT_NAME] )
SELECT [HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE], SELECT [HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],
[REG_TIME],null AREA_ID,[INDEXS],[TYPE],[DEPT_NAME] [REG_TIME],OUTHOS_TIME,null AREA_ID,[INDEXS],[TYPE],[DEPT_NAME]
From [{item.ExecOpenLink}].[{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}"; From [{item.ExecOpenLink}].[{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}";
num = num + configConnection.Execute(sql2, commandTimeout: 60 * 60 * 5); num = num + configConnection.Execute(sql2, commandTimeout: 60 * 60 * 5);
//LOG($"查询成功,{num}行", $"{ITEM}", Indexs, "查询平台", ""); //LOG($"查询成功,{num}行", $"{ITEM}", Indexs, "查询平台", "");
...@@ -224,18 +234,18 @@ UNION ALL ...@@ -224,18 +234,18 @@ UNION ALL
{ {
sql2 = $@"IF EXISTS(SELECT * FROM [{item.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'MEDIC_PERSON_INFORMATION_{Indexs}_2') sql2 = $@"IF EXISTS(SELECT * FROM [{item.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'MEDIC_PERSON_INFORMATION_{Indexs}_2')
drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2; drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2;
SELECT A.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,B.REG_CODE,B.REG_ID,1 REG_SOURCE,B.REG_TIME,A.BIRTHDAY,A.SEX,2 TYPE, {Indexs} Indexs , b.org_code hos_id,B.DEPT_NAME into [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2 SELECT A.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,B.REG_CODE,B.REG_ID,1 REG_SOURCE,B.REG_TIME,NULL OUTHOS_TIME,A.BIRTHDAY,A.SEX,2 TYPE, {Indexs} Indexs , b.org_code hos_id,B.DEPT_NAME into [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2
FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].OUT_REG_INFO B, FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].OUT_REG_INFO B,
(SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS= {Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C (SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS= {Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C
WHERE A.PERSON_CODE=B.PERSON_CODE AND A.MASTER_INDEX=C.MASTER_INDEX WHERE A.PERSON_CODE=B.PERSON_CODE AND A.MASTER_INDEX=C.MASTER_INDEX
UNION ALL UNION ALL
SELECT A.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,B.REG_CODE,B.REG_ID,2 REG_SOURCE,B.INHOS_TIME,A.BIRTHDAY,A.SEX,2 TYPE,{Indexs} , b.org_code,B.OUT_DEPT_NAME SELECT A.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,B.REG_CODE,B.REG_ID,2 REG_SOURCE,B.INHOS_TIME,B.OUTHOS_TIME,A.BIRTHDAY,A.SEX,2 TYPE,{Indexs} , b.org_code,B.OUT_DEPT_NAME
FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].INPAT_REG_INFO B, FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].INPAT_REG_INFO B,
(SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS={Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C (SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS={Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C
WHERE A.PERSON_CODE=B.PERSON_CODE AND A.MASTER_INDEX=C.MASTER_INDEX ;"; WHERE A.PERSON_CODE=B.PERSON_CODE AND A.MASTER_INDEX=C.MASTER_INDEX ;";
conn.Execute(sql2, commandTimeout: 60 * 60 * 5); conn.Execute(sql2, commandTimeout: 60 * 60 * 5);
sql2 = $@"INSERT into [SV_QueryPlatform_].[dbo].[MEDIC_PERSON_INFORMATION_{Indexs}]([HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME],AREA_ID,[INDEXS],[TYPE],[DEPT_NAME]) sql2 = $@"INSERT into [SV_QueryPlatform_].[dbo].[MEDIC_PERSON_INFORMATION_{Indexs}]([HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME],OUTHOS_TIME,AREA_ID,[INDEXS],[TYPE],[DEPT_NAME])
select [HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME],null, select [HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME],OUTHOS_TIME,null,
[INDEXS],[TYPE],[DEPT_NAME] [INDEXS],[TYPE],[DEPT_NAME]
From [{item.ExecOpenLink}].[{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2"; From [{item.ExecOpenLink}].[{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2";
num = num + configConnection.Execute(sql2, commandTimeout: 60 * 60 * 5); num = num + configConnection.Execute(sql2, commandTimeout: 60 * 60 * 5);
...@@ -261,7 +271,7 @@ UNION ALL ...@@ -261,7 +271,7 @@ UNION ALL
catch (Exception ex) catch (Exception ex)
{ {
configConnection.Execute(@$"update [SV_QueryPlatform_].[dbo].[MEDIC_SEARCH_RECORD] set COMPLETE_MARK = 23,END_TIME=getdate(),log='{sql2.Replace("'", "''")}' where COMPLETE_MARK != 22 and id= " + Indexs); configConnection.Execute(@$"update [SV_QueryPlatform_].[dbo].[MEDIC_SEARCH_RECORD] set COMPLETE_MARK = 23,END_TIME=getdate(),log='{sql2.Replace("'", "''")}' where COMPLETE_MARK != 22 and id= " + Indexs);
HomeQueries home = new HomeQueries(_configConnectionString,_Connection156); HomeQueries home = new HomeQueries(_configConnectionString, _Connection156);
home.SendMail(@$"药品/疾病/材料平台提醒", @$"疾病拉取失败 {icd_or_diseaseCondition} 错误日志:{ex.ToString().Replace("'", "''")}", "唐仲阳"); home.SendMail(@$"药品/疾病/材料平台提醒", @$"疾病拉取失败 {icd_or_diseaseCondition} 错误日志:{ex.ToString().Replace("'", "''")}", "唐仲阳");
} }
...@@ -328,7 +338,7 @@ public void Drugquery(long typefee, long type1_2, string drugs, string[] drugNam ...@@ -328,7 +338,7 @@ public void Drugquery(long typefee, long type1_2, string drugs, string[] drugNam
{ {
if (Countnum($@"SELECT count(*) FROM {item.ExecDatabase}.dbo.SYSOBJECTS WHERE NAME = 'DIC_FEE_SUMMARY'", conn) > 0) if (Countnum($@"SELECT count(*) FROM {item.ExecDatabase}.dbo.SYSOBJECTS WHERE NAME = 'DIC_FEE_SUMMARY'", conn) > 0)
{ {
if (Countnum($@"SELECT count(*) a FROM {item.ExecDatabase}.[dbo].[DIC_FEE_SUMMARY] where {drugs} ", conn) > 0) if (Countnum($@"SELECT count(*) a FROM {item.ExecDatabase}.[dbo].[DIC_FEE_SUMMARY] where (I_TYPE_NAME like '%药%' or CATEGORY like '%药%') and {drugs} ", conn) > 0)
{ {
//药品信息查询语句 //药品信息查询语句
foreach (var drug in drugName) foreach (var drug in drugName)
...@@ -337,7 +347,7 @@ public void Drugquery(long typefee, long type1_2, string drugs, string[] drugNam ...@@ -337,7 +347,7 @@ public void Drugquery(long typefee, long type1_2, string drugs, string[] drugNam
[HOS_ID] ,[ITEM_NAME] ,[MEDIC_NAME],[MEDIC_AREA],[INDEXS] ) [HOS_ID] ,[ITEM_NAME] ,[MEDIC_NAME],[MEDIC_AREA],[INDEXS] )
select cast(right('{item.ExecDatabase}',3)as int) hos_id,ITEM_NAME, select cast(right('{item.ExecDatabase}',3)as int) hos_id,ITEM_NAME,
'{drug}'MEDIC_NAME,medic_area medic_area,{Indexs} INDEXS from {item.ExecDatabase}.[dbo].[DIC_FEE_SUMMARY] '{drug}'MEDIC_NAME,medic_area medic_area,{Indexs} INDEXS from {item.ExecDatabase}.[dbo].[DIC_FEE_SUMMARY]
WHERE [ITEM_NAME] like '%{drug}%' GROUP BY ITEM_NAME,MEDIC_AREA "; WHERE (I_TYPE_NAME like '%药%' or CATEGORY like '%药%') and [ITEM_NAME] like '%{drug}%' GROUP BY ITEM_NAME,MEDIC_AREA ";
conn.Execute(sql2, commandTimeout: 60 * 60 * 5); conn.Execute(sql2, commandTimeout: 60 * 60 * 5);
} }
if (Countnum($@"SELECT count(*) FROM [SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] where hos_id=cast(right('{item.ExecDatabase}',3)as int) and indexs={Indexs}", configConnection) > 0) if (Countnum($@"SELECT count(*) FROM [SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] where hos_id=cast(right('{item.ExecDatabase}',3)as int) and indexs={Indexs}", configConnection) > 0)
...@@ -345,43 +355,55 @@ public void Drugquery(long typefee, long type1_2, string drugs, string[] drugNam ...@@ -345,43 +355,55 @@ public void Drugquery(long typefee, long type1_2, string drugs, string[] drugNam
var sql3 = $@"IF EXISTS(SELECT * FROM [{item.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'MEDIC_PERSON_INFORMATION_{Indexs}') var sql3 = $@"IF EXISTS(SELECT * FROM [{item.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'MEDIC_PERSON_INFORMATION_{Indexs}')
drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}; drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs};
SELECT C.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,'1' REG_SOURCE, SELECT C.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,'1' REG_SOURCE,
A.REG_TIME,B.ID AREA_ID,{Indexs} INDEXS,cast( RIGHT ( '{item.ExecDatabase}', 3 ) AS int ) HOS_ID, A.REG_TIME,NULL OUTHOS_TIME,B.ID AREA_ID,{Indexs} INDEXS,cast( RIGHT ( '{item.ExecDatabase}', 3 ) AS int ) HOS_ID,
C.BIRTHDAY,C.SEX,1 TYPE,A.DEPT_NAME into [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs} C.BIRTHDAY,C.SEX,1 TYPE,A.DEPT_NAME into [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}
FROM {item.ExecDatabase}.[dbo].OUT_REG_INFO A FROM {item.ExecDatabase}.[dbo].OUT_REG_INFO A
JOIN (SELECT DISTINCT REG_CODE,D.ID FROM {item.ExecDatabase}.[dbo].{mzb} E JOIN
join [192.168.18.181].[SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] D ON {(typefee == 1 ? "E.ITEM_NAME" : "REPLACE(REPLACE(E.MEDIC_GENERAL_NAME,E.MEDIC_SPEC,''),' ','')")} = D.ITEM_NAME AND ISNULL(E.MEDIC_AREA,'') = ISNULL(D.MEDIC_AREA,'') AND INDEXS={Indexs} AND HOS_ID = cast( RIGHT ( '{item.ExecDatabase}', 3 ) AS int ))B (
SELECT DISTINCT REG_CODE,D.ID FROM (select *from {item.ExecDatabase}.[dbo].{mzb} where CATEGORY like '%药%' or ITEM_TYPE like '%药%' ) E
join [192.168.18.181].[SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] D ON {(typefee == 1 ? "E.ITEM_NAME" : "REPLACE(REPLACE(E.MEDIC_GENERAL_NAME,E.MEDIC_SPEC,''),' ','')")} = D.ITEM_NAME AND ISNULL(E.MEDIC_AREA,'') = ISNULL(D.MEDIC_AREA,'') AND INDEXS={Indexs} AND HOS_ID = cast( RIGHT ( '{item.ExecDatabase}', 3 ) AS int )
where CATEGORY like '%药%' or ITEM_TYPE like '%药%'
)B
ON A.REG_CODE = B.REG_CODE ON A.REG_CODE = B.REG_CODE
JOIN {item.ExecDatabase}.[dbo].PUB_PATIENT C ON A.PERSON_CODE = C.PERSON_CODE JOIN {item.ExecDatabase}.[dbo].PUB_PATIENT C ON A.PERSON_CODE = C.PERSON_CODE
WHERE A.REG_CODE = B.REG_CODE AND A.PERSON_CODE = C.PERSON_CODE WHERE A.REG_CODE = B.REG_CODE AND A.PERSON_CODE = C.PERSON_CODE
UNION ALL UNION ALL
SELECT C.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,'2' REG_SOURCE, SELECT C.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,'2' REG_SOURCE,
A.INHOS_TIME,B.ID AREA_ID,{Indexs} INDEXS,cast( RIGHT ( '{item.ExecDatabase}', 3 ) AS int ) HOS_ID, A.INHOS_TIME,A.OUTHOS_TIME,B.ID AREA_ID,{Indexs} INDEXS,cast( RIGHT ( '{item.ExecDatabase}', 3 ) AS int ) HOS_ID,
C.BIRTHDAY,C.SEX,1 TYPE,A.OUT_DEPT_NAME C.BIRTHDAY,C.SEX,1 TYPE,A.OUT_DEPT_NAME
FROM {item.ExecDatabase}.[dbo].INPAT_REG_INFO A FROM {item.ExecDatabase}.[dbo].INPAT_REG_INFO A
JOIN(SELECT DISTINCT REG_CODE,D.ID FROM {item.ExecDatabase}.[dbo].{zyb} E JOIN(
JOIN [192.168.18.181].[SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] D ON {(typefee == 1 ? "E.ITEM_NAME" : "REPLACE(REPLACE(E.ITEM_NAME,E.MEDIC_SPEC,''),' ','')")} = D.ITEM_NAME SELECT DISTINCT REG_CODE,D.ID FROM (select *from {item.ExecDatabase}.[dbo].{zyb} where CATEGORY like '%药%' or ITEM_TYPE like '%药%' ) E
AND ISNULL(E.MEDIC_AREA,'') = ISNULL(D.MEDIC_AREA,'') AND INDEXS={Indexs} AND HOS_ID = cast( RIGHT ( '{item.ExecDatabase}', 3 ) AS int ))B JOIN [192.168.18.181].[SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] D ON {(typefee == 1 ? "E.ITEM_NAME" : "REPLACE(REPLACE(E.ITEM_NAME,E.MEDIC_SPEC,''),' ','')")} = D.ITEM_NAME
AND ISNULL(E.MEDIC_AREA,'') = ISNULL(D.MEDIC_AREA,'') AND INDEXS={Indexs} AND HOS_ID = cast( RIGHT ( '{item.ExecDatabase}', 3 ) AS int )
where CATEGORY like '%药%' or ITEM_TYPE like '%药%'
)B
ON A.REG_CODE = B.REG_CODE ON A.REG_CODE = B.REG_CODE
JOIN {item.ExecDatabase}.[dbo].PUB_PATIENT C ON A.PERSON_CODE = C.PERSON_CODE JOIN {item.ExecDatabase}.[dbo].PUB_PATIENT C ON A.PERSON_CODE = C.PERSON_CODE
WHERE A.REG_CODE = B.REG_CODE AND A.PERSON_CODE = C.PERSON_CODE"; WHERE A.REG_CODE = B.REG_CODE AND A.PERSON_CODE = C.PERSON_CODE
num = num + conn.Execute(sql3, commandTimeout: 60 * 60 * 5);
";
sql2 = $@"insert into [SV_QueryPlatform_].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}([HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME],AREA_ID,[INDEXS],[TYPE],[DEPT_NAME]) if (conn.Execute(sql3, commandTimeout: 60 * 60 * 5) > 0)
SELECT [HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME], AREA_ID,[INDEXS],[TYPE],[DEPT_NAME] From [{item.ExecOpenLink}].[{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}"; {
num = num + configConnection.Execute(sql2, commandTimeout: 60 * 60 * 5); sql2 = $@"insert into [SV_QueryPlatform_].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}([HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME],OUTHOS_TIME,AREA_ID,[INDEXS],[TYPE],[DEPT_NAME])
SELECT [HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME],OUTHOS_TIME, AREA_ID,[INDEXS],[TYPE],[DEPT_NAME] From [{item.ExecOpenLink}].[{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}";
num = configConnection.Execute(sql2, commandTimeout: 60 * 60 * 5);
}
} }
if (type1_2 == 2) if (type1_2 == 2)
{ {
sql2 = $@"IF EXISTS(SELECT * FROM [{item.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'MEDIC_PERSON_INFORMATION_{Indexs}_2') sql2 = $@"IF EXISTS(SELECT * FROM [{item.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'MEDIC_PERSON_INFORMATION_{Indexs}_2')
drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2; drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2;
SELECT A.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,B.REG_CODE,B.REG_ID,1 REG_SOURCE,B.REG_TIME,A.BIRTHDAY,A.SEX,2 TYPE, {Indexs} Indexs , b.org_code hos_id,B.DEPT_NAME into [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2 SELECT A.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,B.REG_CODE,B.REG_ID,1 REG_SOURCE,B.REG_TIME,NULL OUTHOS_TIME,A.BIRTHDAY,A.SEX,2 TYPE, {Indexs} Indexs , b.org_code hos_id,B.DEPT_NAME into [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2
FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].OUT_REG_INFO B, FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].OUT_REG_INFO B,
(SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS= {Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C (SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS= {Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C
WHERE A.PERSON_CODE=B.PERSON_CODE AND A.MASTER_INDEX=C.MASTER_INDEX WHERE A.PERSON_CODE=B.PERSON_CODE AND A.MASTER_INDEX=C.MASTER_INDEX
UNION ALL UNION ALL
SELECT A.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,B.REG_CODE,B.REG_ID,2 REG_SOURCE,B.INHOS_TIME,A.BIRTHDAY,A.SEX,2 TYPE,{Indexs} , b.org_code,B.OUT_DEPT_NAME SELECT A.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,B.REG_CODE,B.REG_ID,2 REG_SOURCE,B.INHOS_TIME,B.OUTHOS_TIME, A.BIRTHDAY,A.SEX,2 TYPE,{Indexs} , b.org_code,B.OUT_DEPT_NAME
FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].INPAT_REG_INFO B, FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].INPAT_REG_INFO B,
(SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS={Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C (SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS={Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C
WHERE A.PERSON_CODE=B.PERSON_CODE AND A.MASTER_INDEX=C.MASTER_INDEX;"; WHERE A.PERSON_CODE=B.PERSON_CODE AND A.MASTER_INDEX=C.MASTER_INDEX;";
...@@ -400,7 +422,10 @@ UNION ALL ...@@ -400,7 +422,10 @@ UNION ALL
num = num + conn.Execute(sql2, commandTimeout: 60 * 60 * 5); num = num + conn.Execute(sql2, commandTimeout: 60 * 60 * 5);
} }
sql2 = $@" drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}; "; sql2 = $@"
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}') AND type in (N'U'))
drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs};
";
num = num + conn.Execute(sql2, commandTimeout: 60 * 60 * 5); num = num + conn.Execute(sql2, commandTimeout: 60 * 60 * 5);
} }
...@@ -416,14 +441,8 @@ UNION ALL ...@@ -416,14 +441,8 @@ UNION ALL
} }
} }
} }
public long ItemQuery()
{ public void 材料query(long typefee, long type1_2, string drugs, string[] drugName, long Indexs, long ip, string zxr)
DbConnection connection = new SqlConnection(_configConnectionString);
var sql = $@"SELECT * FROM [SV_QueryPlatform_].[dbo].[MEDIC_SEARCH_RECORD] where COMPLETE_MARK<>22 and COMPLETE_MARK<>31 ";
long count = connection.Query(sql).Count();
return count;
}
public void 材料query(long type1_2, string drugs, string[] drugName, long Indexs, long ip, string zxr)
{ {
var where = ""; var where = "";
long num = 0; long num = 0;
...@@ -453,6 +472,10 @@ public long ItemQuery() ...@@ -453,6 +472,10 @@ public long ItemQuery()
var msConnectionString = ""; var msConnectionString = "";
var countsql = 0; var countsql = 0;
var sql2 = ""; var sql2 = "";
var mzb = "";
var zyb = "";
if (typefee == 1) { mzb = "OUT_FEE"; zyb = "INPAT_FEE"; }
if (typefee == 2) { mzb = "OUT_PRES"; zyb = "INPAT_ORDER"; }
foreach (var item in hos) foreach (var item in hos)
{ {
//统计执行的多少家医院 //统计执行的多少家医院
...@@ -479,7 +502,7 @@ public long ItemQuery() ...@@ -479,7 +502,7 @@ public long ItemQuery()
{ {
if (Countnum($@"SELECT count(*) FROM {item.ExecDatabase}.dbo.SYSOBJECTS WHERE NAME = 'DIC_FEE_SUMMARY'", conn) > 0) if (Countnum($@"SELECT count(*) FROM {item.ExecDatabase}.dbo.SYSOBJECTS WHERE NAME = 'DIC_FEE_SUMMARY'", conn) > 0)
{ {
if (Countnum($@"SELECT count(*) a FROM {item.ExecDatabase}.[dbo].[DIC_FEE_SUMMARY] where {drugs} ", conn) > 0) if (Countnum($@"SELECT count(*) a FROM {item.ExecDatabase}.[dbo].[DIC_FEE_SUMMARY] where {drugs} ", conn) > 0)
{ {
//药品信息查询语句 //药品信息查询语句
foreach (var drug in drugName) foreach (var drug in drugName)
...@@ -488,57 +511,61 @@ public long ItemQuery() ...@@ -488,57 +511,61 @@ public long ItemQuery()
[HOS_ID] ,[ITEM_NAME] ,[MEDIC_NAME],[MEDIC_AREA],[INDEXS] ) [HOS_ID] ,[ITEM_NAME] ,[MEDIC_NAME],[MEDIC_AREA],[INDEXS] )
select cast(right('{item.ExecDatabase}',3)as int) hos_id,ITEM_NAME, select cast(right('{item.ExecDatabase}',3)as int) hos_id,ITEM_NAME,
'{drug}'MEDIC_NAME,medic_area medic_area,{Indexs} INDEXS from {item.ExecDatabase}.[dbo].[DIC_FEE_SUMMARY] '{drug}'MEDIC_NAME,medic_area medic_area,{Indexs} INDEXS from {item.ExecDatabase}.[dbo].[DIC_FEE_SUMMARY]
WHERE [ITEM_NAME] like '%{drug}%' GROUP BY ITEM_NAME,MEDIC_AREA "; WHERE [ITEM_NAME] like '%{drug}%' GROUP BY ITEM_NAME,MEDIC_AREA ";
conn.Execute(sql2, commandTimeout: 60 * 60 * 5); conn.Execute(sql2, commandTimeout: 60 * 60 * 5);
} }
if (Countnum($@"SELECT count(*) FROM [SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] where hos_id=cast(right('{item.ExecDatabase}',3)as int) and indexs={Indexs}", configConnection) > 0)
if (Countnum($@"SELECT count(*) FROM [SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}]
where hos_id=cast(right('{item.ExecDatabase}',3)as int) and indexs={Indexs}", configConnection) > 0)
{ {
var sql3 = $@"IF EXISTS(SELECT * FROM [{item.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'MEDIC_PERSON_INFORMATION_{Indexs}') var sql3 = $@"IF EXISTS(SELECT * FROM [{item.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'MEDIC_PERSON_INFORMATION_{Indexs}')
drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}; drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs};
SELECT C.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,'1' REG_SOURCE,
A.REG_TIME,NULL OUTHOS_TIME,B.ID AREA_ID,{Indexs} INDEXS,cast( RIGHT ( '{item.ExecDatabase}', 3 ) AS int ) HOS_ID,
C.BIRTHDAY,C.SEX,1 TYPE,A.DEPT_NAME into [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}
FROM {item.ExecDatabase}.[dbo].OUT_REG_INFO A
JOIN
(
SELECT DISTINCT REG_CODE,D.ID FROM (select *from {item.ExecDatabase}.[dbo].{mzb} ) E
join [192.168.18.181].[SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] D ON {(typefee == 1 ? "E.ITEM_NAME" : "REPLACE(REPLACE(E.MEDIC_GENERAL_NAME,E.MEDIC_SPEC,''),' ','')")} = D.ITEM_NAME AND ISNULL(E.MEDIC_AREA,'') = ISNULL(D.MEDIC_AREA,'') AND INDEXS={Indexs} AND HOS_ID = cast( RIGHT ( '{item.ExecDatabase}', 3 ) AS int )
)B
ON A.REG_CODE = B.REG_CODE
JOIN {item.ExecDatabase}.[dbo].PUB_PATIENT C ON A.PERSON_CODE = C.PERSON_CODE
WHERE A.REG_CODE = B.REG_CODE AND A.PERSON_CODE = C.PERSON_CODE
UNION ALL
SELECT C.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,'2' REG_SOURCE,
A.INHOS_TIME,A.OUTHOS_TIME,B.ID AREA_ID,{Indexs} INDEXS,cast( RIGHT ( '{item.ExecDatabase}', 3 ) AS int ) HOS_ID,
C.BIRTHDAY,C.SEX,1 TYPE,A.OUT_DEPT_NAME
FROM {item.ExecDatabase}.[dbo].INPAT_REG_INFO A
JOIN(
SELECT DISTINCT REG_CODE,D.ID FROM (select *from {item.ExecDatabase}.[dbo].{zyb} ) E
JOIN [192.168.18.181].[SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] D ON {(typefee == 1 ? "E.ITEM_NAME" : "REPLACE(REPLACE(E.ITEM_NAME,E.MEDIC_SPEC,''),' ','')")} = D.ITEM_NAME
AND ISNULL(E.MEDIC_AREA,'') = ISNULL(D.MEDIC_AREA,'') AND INDEXS={Indexs} AND HOS_ID = cast( RIGHT ( '{item.ExecDatabase}', 3 ) AS int )
)B
ON A.REG_CODE = B.REG_CODE
JOIN {item.ExecDatabase}.[dbo].PUB_PATIENT C ON A.PERSON_CODE = C.PERSON_CODE
WHERE A.REG_CODE = B.REG_CODE AND A.PERSON_CODE = C.PERSON_CODE
";
SELECT C.MASTER_INDEX MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,'1'REG_SOURCE,A.REG_TIME,B.ID AREA_ID, {Indexs} INDEXS,cast(right('{item.ExecDatabase}',3)as int) HOS_ID,C.BIRTHDAY,C.SEX,1 TYPE,A.DEPT_NAME into [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs} FROM if (conn.Execute(sql3, commandTimeout: 60 * 60 * 5) > 0)
{item.ExecDatabase}.[DBO].OUT_REG_INFO A, {
(SELECT DISTINCT REG_CODE,D.ID FROM {item.ExecDatabase}.[DBO].OUT_FEE E, sql2 = $@"insert into [SV_QueryPlatform_].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}([HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME],OUTHOS_TIME,AREA_ID,[INDEXS],[TYPE],[DEPT_NAME])
(SELECT * FROM [192.168.18.181].[SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] WHERE INDEXS={Indexs} AND (MEDIC_AREA IS NULL OR MEDIC_AREA ='')) D SELECT [HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME],OUTHOS_TIME, AREA_ID,[INDEXS],[TYPE],[DEPT_NAME] From [{item.ExecOpenLink}].[{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}";
WHERE HOS_ID = cast(right('{item.ExecDatabase}',3)as int) AND E.ITEM_NAME=D.ITEM_NAME num = configConnection.Execute(sql2, commandTimeout: 60 * 60 * 5);
UNION ALL }
SELECT DISTINCT REG_CODE,D.ID FROM {item.ExecDatabase}.[DBO].OUT_FEE E,
(SELECT * FROM [192.168.18.181].[SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] WHERE INDEXS= {Indexs} AND MEDIC_AREA IS NOT NULL AND MEDIC_AREA!='') D
WHERE HOS_ID = cast(right('{item.ExecDatabase}',3)as int) AND E.ITEM_NAME=D.ITEM_NAME AND E.MEDIC_AREA=D.MEDIC_AREA) B,{item.ExecDatabase}.[DBO].PUB_PATIENT C
WHERE A.REG_CODE=B.REG_CODE AND A.PERSON_CODE=C.PERSON_CODE
UNION ALL
SELECT C.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,2 REG_SOURCE,A.INHOS_TIME,B.ID,{Indexs} ,cast(right('{item.ExecDatabase}',3)as int),C.BIRTHDAY,C.SEX,1,A.OUT_DEPT_NAME FROM
{item.ExecDatabase}.[DBO].INPAT_REG_INFO A,
(SELECT DISTINCT REG_CODE,D.ID FROM {item.ExecDatabase}.[DBO].INPAT_FEE E,
(SELECT * FROM [192.168.18.181].[SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] WHERE INDEXS= {Indexs} AND (MEDIC_AREA IS NULL OR MEDIC_AREA ='')) D
WHERE HOS_ID = cast(right('{item.ExecDatabase}',3)as int) AND E.ITEM_NAME=D.ITEM_NAME
UNION ALL
SELECT DISTINCT REG_CODE,D.ID FROM [DBO].INPAT_FEE E,
(SELECT * FROM [192.168.18.181].[SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] WHERE INDEXS= {Indexs} AND MEDIC_AREA IS NOT NULL AND MEDIC_AREA!='') D
WHERE HOS_ID = cast(right('{item.ExecDatabase}',3)as int) AND E.ITEM_NAME=D.ITEM_NAME AND E.MEDIC_AREA=D.MEDIC_AREA) B,{item.ExecDatabase}.[DBO].PUB_PATIENT C
WHERE A.REG_CODE=B.REG_CODE AND A.PERSON_CODE=C.PERSON_CODE";
num = num + conn.Execute(sql3, commandTimeout: 60 * 60 * 5);
sql2 = $@"insert into [SV_QueryPlatform_].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}([HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME],AREA_ID,[INDEXS],[TYPE],[DEPT_NAME])
SELECT [HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME], AREA_ID,[INDEXS],[TYPE],[DEPT_NAME] From [{item.ExecOpenLink}].[{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}";
num = num + configConnection.Execute(sql2, commandTimeout: 60 * 60 * 5);
} }
if (type1_2 == 2) if (type1_2 == 2)
{ {
sql2 = $@"IF EXISTS(SELECT * FROM [{item.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'MEDIC_PERSON_INFORMATION_{Indexs}_2') sql2 = $@"IF EXISTS(SELECT * FROM [{item.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'MEDIC_PERSON_INFORMATION_{Indexs}_2')
drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2; drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2;
SELECT A.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,B.REG_CODE,B.REG_ID,1 REG_SOURCE,B.REG_TIME,A.BIRTHDAY,A.SEX,2 TYPE, {Indexs} Indexs , b.org_code hos_id,B.DEPT_NAME into [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2 SELECT A.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,B.REG_CODE,B.REG_ID,1 REG_SOURCE,B.REG_TIME,NULL OUTHOS_TIME,A.BIRTHDAY,A.SEX,2 TYPE, {Indexs} Indexs , b.org_code hos_id,B.DEPT_NAME into [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2
FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].OUT_REG_INFO B, FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].OUT_REG_INFO B,
(SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS= {Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C (SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS= {Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C
WHERE A.PERSON_CODE=B.PERSON_CODE AND A.MASTER_INDEX=C.MASTER_INDEX WHERE A.PERSON_CODE=B.PERSON_CODE AND A.MASTER_INDEX=C.MASTER_INDEX
UNION ALL UNION ALL
SELECT A.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,B.REG_CODE,B.REG_ID,2 REG_SOURCE,B.INHOS_TIME,A.BIRTHDAY,A.SEX,2 TYPE,{Indexs} , b.org_code,B.OUT_DEPT_NAME SELECT A.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,B.REG_CODE,B.REG_ID,2 REG_SOURCE,B.INHOS_TIME,B.OUTHOS_TIME, A.BIRTHDAY,A.SEX,2 TYPE,{Indexs} , b.org_code,B.OUT_DEPT_NAME
FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].INPAT_REG_INFO B, FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].INPAT_REG_INFO B,
(SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS={Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C (SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS={Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C
WHERE A.PERSON_CODE=B.PERSON_CODE AND A.MASTER_INDEX=C.MASTER_INDEX;"; WHERE A.PERSON_CODE=B.PERSON_CODE AND A.MASTER_INDEX=C.MASTER_INDEX;";
...@@ -557,7 +584,10 @@ UNION ALL ...@@ -557,7 +584,10 @@ UNION ALL
num = num + conn.Execute(sql2, commandTimeout: 60 * 60 * 5); num = num + conn.Execute(sql2, commandTimeout: 60 * 60 * 5);
} }
sql2 = $@" drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}; "; sql2 = $@"
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}') AND type in (N'U'))
drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs};
";
num = num + conn.Execute(sql2, commandTimeout: 60 * 60 * 5); num = num + conn.Execute(sql2, commandTimeout: 60 * 60 * 5);
} }
...@@ -566,13 +596,20 @@ UNION ALL ...@@ -566,13 +596,20 @@ UNION ALL
} }
catch (Exception ex) catch (Exception ex)
{ {
configConnection.Execute($"update [SV_QueryPlatform_].[dbo].[MEDIC_SEARCH_RECORD] set COMPLETE_MARK = 23,END_TIME=getdate(),log='{sql2.Replace("'", "''")}' where COMPLETE_MARK != 22 and id= " + Indexs); configConnection.Execute($"update [SV_QueryPlatform_].[dbo].[MEDIC_SEARCH_RECORD] set COMPLETE_MARK = 23,END_TIME=getdate(),log='ex:{ex.ToString()}sql:{sql2.Replace("'", "''")}' where COMPLETE_MARK != 22 and id= " + Indexs);
HomeQueries home = new HomeQueries(_configConnectionString, _Connection156); HomeQueries home = new HomeQueries(_configConnectionString, _Connection156);
home.SendMail(@$"药品/疾病/材料平台提醒", @$"材料拉取失败 {string.Join(",", drugName)} 错误日志:{ex.ToString().Replace("'", "''")}", zxr); home.SendMail(@$"药品/疾病/材料平台提醒", @$"药品拉取失败{string.Join(",", drugName)} 错误日志:{ex.ToString().Replace("'", "''")}", zxr);
} }
} }
} }
} }
public long ItemQuery()
{
DbConnection connection = new SqlConnection(_configConnectionString);
var sql = $@"SELECT * FROM [SV_QueryPlatform_].[dbo].[MEDIC_SEARCH_RECORD] where COMPLETE_MARK<>22 and COMPLETE_MARK<>31 ";
long count = connection.Query(sql).Count();
return count;
}
public void 化验拉取(long indexs, long type, string item_name, long ip, int id, int ids) public void 化验拉取(long indexs, long type, string item_name, long ip, int id, int ids)
{ {
DbConnection configConnection = new SqlConnection(_configConnectionString.Replace("SV_QueryPlatform", "SV_QueryPlatform_")); DbConnection configConnection = new SqlConnection(_configConnectionString.Replace("SV_QueryPlatform", "SV_QueryPlatform_"));
...@@ -1173,6 +1210,162 @@ public IEnumerable<dynamic> MEDIC_SEARCH_RECORD_ASSAY(int id) ...@@ -1173,6 +1210,162 @@ public IEnumerable<dynamic> MEDIC_SEARCH_RECORD_ASSAY(int id)
} }
public async void ATC(string atccode = "", string url = "https://atcddd.fhi.no/atc_ddd_index/")
{
var msConnectionString = string.Format("Server={0};Database={1};User ID={2};Password={3};Trusted_Connection=False;", "192.168.18.181", "SV_QueryPlatform_Demand", "sa", "Suvalue2016");
using (DbConnection conn = new SqlConnection(msConnectionString))
{
using (var httpClient = new HttpClient())
{
// 发起 HTTP 请求获取页面内容
HttpResponseMessage response = httpClient.GetAsync(url).Result;
// 确认请求成功
if (response.IsSuccessStatusCode)
{
// 从响应中读取 HTML 内容
string htmlContent = response.Content.ReadAsStringAsync().Result;
// 使用 HtmlAgilityPack 解析 HTML
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(htmlContent);
var pTags = htmlDoc.DocumentNode.SelectNodes("//div[@id='content']//h3[contains(text(),'ATC code')]/following-sibling::div/p");
if (pTags == null)
{
pTags = htmlDoc.DocumentNode.SelectNodes("//p");
}
if (pTags != null)
{
foreach (var pTag in pTags.Where(s => s.SelectNodes("b/a") != null))
{
// 获取 b 标签内的文本内容和 href 属性
if (pTag != null)
{
var bTags = pTag.SelectNodes("b/a");
if (bTags != null)
{
foreach (var bTag in bTags)
{
string labelText = bTag.ParentNode.PreviousSibling.InnerText.Trim();
string href = bTag.GetAttributeValue("href", "");
string name = bTag.InnerText.Trim();
Console.WriteLine($"Label Text: {labelText}");
Console.WriteLine($"Href: {href}");
Console.WriteLine($"Name: {name}");
Console.WriteLine();
conn.Execute($"insert into [dbo].[ATC](code,name)select '{labelText}','{name.Replace("'", "''")}' ", commandTimeout: 60 * 60 * 5);
ATC(atccode + "," + labelText, href.Replace("./", "https://atcddd.fhi.no/atc_ddd_index/"));
}
}
}
}
}
string[] parts = atccode.Split(',');
var tableRows = htmlDoc.DocumentNode.SelectNodes("//div[@id='content']//table//tr[position()>1]");
if (tableRows != null)
{
List<List<string>> tableData = new List<List<string>>();
foreach (var row in tableRows)
{
var rowData = row.Elements("td").Select(td => td.InnerText.Trim().Replace("&nbsp", "").Replace(";", "")).ToList();
tableData.Add(rowData);
}
foreach (var rowData in tableData.Distinct())
{
conn.Execute(@$"insert into [dbo].[ATCLIST]([ATCCode], [Name], [DDD], [U], [Adm.R], [Note], [ATC1], [ATC2], [ATC3], [ATC4]) select '{rowData[0]}','{rowData[1]}','{rowData[2]}','{rowData[3]}','{rowData[4]}','{rowData[5]}','{parts[1]}','{parts[2]}','{parts[3]}','{parts[4]}'; ", commandTimeout: 60 * 60 * 5);
// Console.WriteLine($"atccode: {atccode}");
// Console.WriteLine(string.Join(", ", rowData));
}
}
else
{
Console.WriteLine("未找到");
}
}
}
}
}
public string GetPreviousText(HtmlNode node)
{
var prev = node.PreviousSibling;
while (prev != null && prev.NodeType != HtmlNodeType.Text)
{
prev = prev.PreviousSibling;
}
return prev?.InnerText ?? "";
}
//谷歌翻译
public static string GetGetRequest(string urlP, string encode)
{
if (null == urlP) return null;
string StrRetP = null;
Stream dataStream = null;
try
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(urlP);
myHttpWebRequest.Timeout = 10000; // 10 secs
HttpWebResponse Objresponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
//Encoding enc = Encoding.GetEncoding(1252); // Windows default Code Page
if (Objresponse.StatusDescription == "OK")
{//HttpStatusCode.OK
dataStream = Objresponse.GetResponseStream();
Encoding objE = String.IsNullOrEmpty(encode) ? Encoding.GetEncoding(0) : Encoding.GetEncoding(encode);
StreamReader r = new StreamReader(dataStream, objE);
StrRetP = r.ReadToEnd();
}
}
catch (Exception e)
{
StrRetP = e.Message;
}
finally
{
if (null != dataStream) dataStream.Close();
}
return StrRetP;
}
public static string GetMatchString(string text, string pattern, int point)
{
if (String.IsNullOrEmpty(text) || String.IsNullOrEmpty(pattern)) return String.Empty;
Regex rx = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline);
Match match = rx.Match(text);
string word = "";
if (match.Success) word = match.Groups[point].Value;
return word.Trim();
}
} }
} }
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using static QueryPlatform.Api.Infrastructure.Queries.ResourceQueries;
using Document = DocumentFormat.OpenXml.Wordprocessing.Document; using Document = DocumentFormat.OpenXml.Wordprocessing.Document;
using Vb = Microsoft.VisualBasic; using Vb = Microsoft.VisualBasic;
namespace QueryPlatform.Api.Infrastructure.Queries namespace QueryPlatform.Api.Infrastructure.Queries
...@@ -549,7 +550,7 @@ public bool EstablishFlowDatabaseTable(string PROJECT_NAME, string sql, int id, ...@@ -549,7 +550,7 @@ public bool EstablishFlowDatabaseTable(string PROJECT_NAME, string sql, int id,
if (connection.Execute($@"INSERT INTO[SV_QueryPlatform].[dbo].[FlowReservoirStatus]([tableName] ,[createDate] ,[state],indexs,isfilter,[sql],remarks) if (connection.Execute($@"INSERT INTO[SV_QueryPlatform].[dbo].[FlowReservoirStatus]([tableName] ,[createDate] ,[state],indexs,isfilter,[sql],remarks)
select'{PROJECT_NAME}', getdate(), 0,'{id2}' ,{isfilter},'{sql}','{remarks}'") > 0 ? true : false) select'{PROJECT_NAME}', getdate(), 0,'{id2}' ,{isfilter},'{sql}','{remarks}'") > 0 ? true : false)
{ {
return connection.Execute(sql) > 0 ? true : false; return connection.Execute(sql.Replace("''","'")) > 0 ? true : false;
} }
else else
{ {
...@@ -1255,14 +1256,25 @@ public DbConnection Connection(long ip, string configConnectionString) ...@@ -1255,14 +1256,25 @@ public DbConnection Connection(long ip, string configConnectionString)
} }
return new SqlConnection(); return new SqlConnection();
} }
public class zx_
{
public long indexs { get; set; }
public string biao { get; set; }
public string sql { get; set; }
public string item { get; set; }
public string conn { get; set; }
}
/// <summary> /// <summary>
/// 拉取病人表 /// 拉取病人表
/// </summary> /// </summary>
public void PullData(long indexs, string DatabaseName, string tableName, string biao, string ip) public void PullData(long indexs, string DatabaseName, string tableName, string biao)
{ {
List<List<zx_>> zx_s = new List<List<zx_>>();
List<zx_> zx = new List<zx_>();
//Console.WriteLine(ip+""+ biao); //Console.WriteLine(ip+""+ biao);
var sql = ""; var sql = "";
var where = @$"and ExecOpenLink in ('{ip}')"; //var where = @$"and ExecOpenLink in ('{ip}')";
sql = @$" select A.*from( sql = @$" select A.*from(
SELECT DISTINCT case when a.id>=112 and a.id<=138 then '112' else ID end 'id', SELECT DISTINCT case when a.id>=112 and a.id<=138 then '112' else ID end 'id',
case when a.id>=112 and a.id<=138 then '192.168.18.152' else ExecOpenLink end 'ExecOpenLink', case when a.id>=112 and a.id<=138 then '192.168.18.152' else ExecOpenLink end 'ExecOpenLink',
...@@ -1273,13 +1285,14 @@ public void PullData(long indexs, string DatabaseName, string tableName, string ...@@ -1273,13 +1285,14 @@ public void PullData(long indexs, string DatabaseName, string tableName, string
LEFT JOIN ( SELECT * FROM [192.168.18.181].[SV_QueryPlatform].[dbo].[SYS_LOG] WHERE INDEXS = {indexs} LEFT JOIN ( SELECT * FROM [192.168.18.181].[SV_QueryPlatform].[dbo].[SYS_LOG] WHERE INDEXS = {indexs}
AND LOG = '{biao}' and type ='执行中' AND LOG = '{biao}' and type ='执行中'
) C ON A.ID = CAST(LEFT(RIGHT(C.hos_code, 4),3) AS int) ) C ON A.ID = CAST(LEFT(RIGHT(C.hos_code, 4),3) AS int)
WHERE hos_code IS NULL {where}; WHERE hos_code IS NULL
"; order by NEWID()";//// {where}
List<SYS_Hospital> hospitals = Connection(156).Query<SYS_Hospital>(sql).ToList(); List<SYS_Hospital> hospitals = Connection(156).Query<SYS_Hospital>(sql).ToList();
Dictionary<string, object> pairs = new Dictionary<string, object>(); Dictionary<string, object> pairs = new Dictionary<string, object>();
var tasks = new List<System.Threading.Tasks.Task>();
foreach (var hos in hospitals) foreach (var hos in hospitals)
{ {
Console.WriteLine("'" + ip + "','" + hos.ExecDatabase + "','" + biao + "'"); // Console.WriteLine("'" + ip + "','" + hos.ExecDatabase + "','" + biao + "'");
pairs.Clear(); pairs.Clear();
// 存在 // 不存在 // 存在 // 不存在
...@@ -1294,7 +1307,7 @@ public void PullData(long indexs, string DatabaseName, string tableName, string ...@@ -1294,7 +1307,7 @@ public void PullData(long indexs, string DatabaseName, string tableName, string
Connection(181).Execute($"UPDATE [SV_QueryPlatform].[dbo].[FlowReservoirStatus] SET state =2 ,DataPullTime=getdate() WHERE indexs={indexs} and tableName='{tableName.Replace(" ", "")}'"); Connection(181).Execute($"UPDATE [SV_QueryPlatform].[dbo].[FlowReservoirStatus] SET state =2 ,DataPullTime=getdate() WHERE indexs={indexs} and tableName='{tableName.Replace(" ", "")}'");
//try //try
//{ //{
long rs = QueryPatient(tableName); //long rs = QueryPatient(tableName);
sql = ShowSql($"{biao}", 2)[0]; sql = ShowSql($"{biao}", 2)[0];
if (hos.ExecDatabase == "HOS_631337112") if (hos.ExecDatabase == "HOS_631337112")
{ {
...@@ -1308,7 +1321,31 @@ public void PullData(long indexs, string DatabaseName, string tableName, string ...@@ -1308,7 +1321,31 @@ public void PullData(long indexs, string DatabaseName, string tableName, string
} }
服务器 fwq = Connection(181).Query<服务器>($"SELECT [服务器ip],[数据库账号],[数据库密码] FROM [SV_QueryPlatform].[dbo].[服务器] where[服务器ip] ='{hos.ExecOpenLink}'").FirstOrDefault(); 服务器 fwq = Connection(181).Query<服务器>($"SELECT [服务器ip],[数据库账号],[数据库密码] FROM [SV_QueryPlatform].[dbo].[服务器] where[服务器ip] ='{hos.ExecOpenLink}'").FirstOrDefault();
var msConnectionString = string.Format("Server={0};Database={1};User ID={2};Password={3};Trusted_Connection=False;", hos.ExecOpenLink, hos.ExecDatabase, fwq.数据库账号, fwq.数据库密码); var msConnectionString = string.Format("Server={0};Database={1};User ID={2};Password={3};Trusted_Connection=False;", hos.ExecOpenLink, hos.ExecDatabase, fwq.数据库账号, fwq.数据库密码);
zx(indexs, biao, sql, ITEM, msConnectionString); /// zx(indexs, biao, sql, ITEM, msConnectionString);
zx.Add(new zx_() { indexs = indexs, sql = sql, biao = biao, item = ITEM, conn = msConnectionString });
int zxs = 10;
if (biao != "PUB_PATIENT")
{
if (biao == "OUT_REG_INFO" || biao == "INPAT_REG_INFO")
{
zxs = 8;
}
else if (biao == "INPAT_FEE" || biao == "INPAT_ORDER" || biao == "ASSAY_REPORT" || biao == "OUT_PRES" || biao == "OUT_FEE"|| biao.Contains("dbz"))
{
zxs = 1;
}
else
{
zxs = 2;
}
}
if (zx.Count == zxs)
{
// 如果达到了,将当前组添加到分组数据中,并创建一个新的组
zx_s.Add(zx);
zx = new List<zx_>();// 创建新的空组
}
//} //}
//catch (Exception e) //catch (Exception e)
//{ //{
...@@ -1317,109 +1354,36 @@ public void PullData(long indexs, string DatabaseName, string tableName, string ...@@ -1317,109 +1354,36 @@ public void PullData(long indexs, string DatabaseName, string tableName, string
//} //}
Connection(181).Execute($"UPDATE [SV_QueryPlatform].[dbo].[FlowReservoirStatus] SET DataPullTime=getdate() WHERE indexs={indexs} and tableName='{tableName}'"); Connection(181).Execute($"UPDATE [SV_QueryPlatform].[dbo].[FlowReservoirStatus] SET DataPullTime=getdate() WHERE indexs={indexs} and tableName='{tableName}'");
} }
} if (zx.Count > 0)
public void PullDatalist(long indexs, string DatabaseName, string tableName, string biao, string ip)
{
var sql = "";
var where = @$"and ExecOpenLink in ('{ip}')";
sql = @$" select A.*from(
SELECT DISTINCT case when a.id>=112 and a.id<=138 then '112' else ID end 'id',
case when a.id>=112 and a.id<=138 then '192.168.18.152' else ExecOpenLink end 'ExecOpenLink',
case when a.id>=112 and a.id<=138 then 'HOS_631337112' else ExecDatabase end 'ExecDatabase'
FROM [DB_SV_Data_Config].[dbo].[SYS_Hospital] A
JOIN [192.168.18.181].[SV_QueryPlatform].[dbo].[{tableName}] B ON A.ID = B.HOS_ID
)A
LEFT JOIN ( SELECT * FROM [192.168.18.181].[SV_QueryPlatform].[dbo].[SYS_LOG] WHERE INDEXS = {indexs}
AND LOG = '{biao}' and type ='执行中'
) C ON A.ID = CAST(LEFT(RIGHT(C.hos_code, 4),3) AS int)
WHERE hos_code IS NULL {where};
";
List<SYS_Hospital> hospitals = Connection(156).Query<SYS_Hospital>(sql).ToList();
Dictionary<string, object> pairs = new Dictionary<string, object>();
// 连接字符串 - 源服务器
foreach (var hos in hospitals)
{ {
Console.WriteLine("'" + ip + "','" + hos.ExecDatabase + "','" + biao + "'"); // 如果达到了,将当前组添加到分组数据中,并创建一个新的组
服务器 fwq = Connection(181).Query<服务器>($"SELECT [服务器ip],[数据库账号],[数据库密码] FROM [SV_QueryPlatform].[dbo].[服务器] where[服务器ip] ='{hos.ExecOpenLink}'").FirstOrDefault(); zx_s.Add(zx);
var sourceConnectionString = string.Format("Server={0};Database={1};User ID={2};Password={3};Trusted_Connection=False;", $@"{hos.ExecOpenLink}", @$"{DatabaseName}", "sa", "Suvalue2016"); zx = new List<zx_>();// 创建新的空组
}
// 查询语句
string query = "SELECT Column1, Column2, Column3 FROM SourceTable";
// 存储数据的列表
List<DataRow> dataRows = new List<DataRow>();
using (SqlConnection sourceConnection = new SqlConnection(sourceConnectionString))
{
sourceConnection.Open();
using (SqlCommand command = new SqlCommand(query, sourceConnection))
{
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
foreach (DataRow row in dataTable.Rows)
{
dataRows.Add(row);
}
}
}
}
using (SqlConnection targetConnection = new SqlConnection(string.Format("Server={0};Database={1};User ID={2};Password={3};Trusted_Connection=False;", "192.168.18.181", @$"{DatabaseName}", "sa", "Suvalue2016"))) foreach (var item in zx_s.OrderByDescending(o => o.Count()))
{
foreach (var item1 in item)
{ {
targetConnection.Open(); tasks.Add(System.Threading.Tasks.Task.Factory.StartNew(() => zxcz(item1)));
using (SqlTransaction transaction = targetConnection.BeginTransaction())
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(targetConnection, SqlBulkCopyOptions.Default, transaction))
{
bulkCopy.DestinationTableName = "TargetTable";
// 设置列映射(如果源表和目标表列名不完全相同)
bulkCopy.ColumnMappings.Add("Column1", "Column1");
bulkCopy.ColumnMappings.Add("Column2", "Column2");
bulkCopy.ColumnMappings.Add("Column3", "Column3");
try
{
// 将数据逐行批量插入到目标表
bulkCopy.WriteToServer(dataRows.ToArray());
transaction.Commit();
Console.WriteLine("数据插入成功!");
}
catch (Exception ex)
{
transaction.Rollback();
Console.WriteLine("数据插入失败:" + ex.Message);
}
}
}
} }
System.Threading.Tasks.Task.WaitAll(tasks.ToArray());
} }
} }
//控制每次执行sql条数 //控制每次执行sql条数
private static SemaphoreSlim semaphoreZX = new SemaphoreSlim(8, 8); // private static SemaphoreSlim semaphoreZX = new SemaphoreSlim(0, 2);
private void zx(long indexs, string biao, string sql, string ITEM, string msConnectionString) private void zxcz(zx_ zx)
{ {
semaphoreZX.WaitAsync(); // semaphoreZX.WaitAsync();
long num = 0; long num = 0;
Exception e = null; Exception e = null;
LOG($"{biao}", ITEM, indexs, "执行中", ""); LOG($"{zx.biao}", zx.item, zx.indexs, "执行中", "");
try try
{ {
num = Connection(0, msConnectionString).Execute(sql, commandTimeout: 60 * 60 * 60 * 5); num = Connection(0, zx.conn).Execute(zx.sql, commandTimeout: 60 * 60 * 60 * 5);
Connection(0, zx.conn).Close();
} }
catch (Exception ex) catch (Exception ex)
{ {
...@@ -1428,16 +1392,16 @@ private void zx(long indexs, string biao, string sql, string ITEM, string msConn ...@@ -1428,16 +1392,16 @@ private void zx(long indexs, string biao, string sql, string ITEM, string msConn
} }
finally finally
{ {
semaphoreZX.Release(); // semaphoreZX.Release();
} }
if (num != -1) if (num != -1)
{ {
LOG($"{biao}", ITEM, indexs, "成功", sql); LOG($"{zx.biao}", zx.item, zx.indexs, "成功", zx.sql);
} }
else else
{ {
LOG($"{biao}", ITEM, indexs, "错误", $"报错sql:{sql}错误日志:{e}"); LOG($"{zx.biao}", zx.item, zx.indexs, "错误", $"报错sql:{zx.sql}错误日志:{e}");
} }
} }
...@@ -1469,10 +1433,10 @@ public void pullstate(long indexs, string tableName) ...@@ -1469,10 +1433,10 @@ public void pullstate(long indexs, string tableName)
/// <param name="DatabaseName"></param> /// <param name="DatabaseName"></param>
/// <param name="tableName"></param> /// <param name="tableName"></param>
/// <returns></returns> /// <returns></returns>
public void PullData(long indexs, string DatabaseName, string tableName) public void PullData(long indexs, string DatabaseName, string tableName, int dbz = 0)
{ {
//写一个 人群表查询人数 //写一个 人群表查询人数
long rs = QueryPatient(tableName); // long rs = QueryPatient(tableName);
// long xfwqrs = xingfqrs(tableName); // long xfwqrs = xingfqrs(tableName);
DatabaseName = DatabaseName.Replace(" ", ""); DatabaseName = DatabaseName.Replace(" ", "");
tableName = tableName.Replace(" ", ""); tableName = tableName.Replace(" ", "");
...@@ -1480,26 +1444,35 @@ public void PullData(long indexs, string DatabaseName, string tableName) ...@@ -1480,26 +1444,35 @@ public void PullData(long indexs, string DatabaseName, string tableName)
{ {
new List<string>{"PUB_PATIENT"}, new List<string>{"PUB_PATIENT"},
new List<string>{"OUT_REG_INFO","INPAT_REG_INFO"}, new List<string>{"OUT_REG_INFO","INPAT_REG_INFO"},
new List<string>{"OUT_DIAG","INPAT_DIAG","OPS_INFO","EXEC_REPORT"}, new List<string>{"ASSAY_REPORT","INPAT_DIAG","OPS_INFO","INPAT_FEE","EXEC_REPORT","OUT_DIAG","INPAT_ORDER","OUT_PRES","OUT_FEE"},
new List<string>{"INPAT_FEE","INPAT_ORDER","ASSAY_REPORT","OUT_PRES","OUT_FEE"},
}; };
var fwqdata = 标准库fwq().Select(s => s.服务器ip); if (dbz == 1)
{
data = new List<List<string>>
{
new List<string>{"PUB_PATIENT"},
new List<string>{"OUT_REG_INFO","INPAT_REG_INFO"},
new List<string>{ "dbz_OUT_DIAG", "dbz_INPAT_DIAG", "dbz_OUT_FEE", "dbz_INPAT_FEE"},
};
}
// var fwqdata = 标准库fwq().Select(s => s.服务器ip);
var tasks = new List<System.Threading.Tasks.Task>(); var tasks = new List<System.Threading.Tasks.Task>();
foreach (var item in data) foreach (var item in data)
{ {
foreach (var biao in item) foreach (var biao in item)
{ {
foreach (var ip in fwqdata) //foreach (var ip in fwqdata)
{ //{
tasks.Add(System.Threading.Tasks.Task.Factory.StartNew(() => PullData(indexs, DatabaseName, tableName, biao, ip))); tasks.Add(System.Threading.Tasks.Task.Factory.StartNew(() => PullData(indexs, DatabaseName, tableName, biao//, ip
} )));
// }
} }
System.Threading.Tasks.Task.WaitAll(tasks.ToArray()); System.Threading.Tasks.Task.WaitAll(tasks.ToArray());
} }
//修复执行错误方法 //修复执行错误方法
try try
{ {
PullData修复超时错误(indexs); //PullData修复超时错误(indexs);
} }
catch (Exception e) catch (Exception e)
{ {
...@@ -1595,33 +1568,33 @@ UPDATE @DBName.dbo.ASSAY_REPORT ...@@ -1595,33 +1568,33 @@ UPDATE @DBName.dbo.ASSAY_REPORT
SET REG_ID = B.REG_ID SET REG_ID = B.REG_ID
FROM @DBName.dbo.INPAT_REG_INFO B FROM @DBName.dbo.INPAT_REG_INFO B
WHERE @DBName.dbo.ASSAY_REPORT.REG_CODE = B.REG_CODE AND @DBName.dbo.ASSAY_REPORT.ORG_CODE = B.ORG_CODE AND REG_SOURCE = 2; ".Replace("@DBName", DatabaseName); WHERE @DBName.dbo.ASSAY_REPORT.REG_CODE = B.REG_CODE AND @DBName.dbo.ASSAY_REPORT.ORG_CODE = B.ORG_CODE AND REG_SOURCE = 2; ".Replace("@DBName", DatabaseName);
Connection(181).Execute(sql, commandTimeout: 60 * 60 * 60 * 5);//拉取完成 // Connection(181).Execute(sql, commandTimeout: 60 * 60 * 60 * 5);//拉取完成
} }
Connection(181).Execute($"UPDATE [SV_QueryPlatform].[dbo].[FlowReservoirStatus] SET state =5 WHERE indexs={indexs} and tableName='{tableName.Replace(" ", "")}'");//拉取完成 Connection(181).Execute($"UPDATE [SV_QueryPlatform].[dbo].[FlowReservoirStatus] SET state =5 WHERE indexs={indexs} and tableName='{tableName.Replace(" ", "")}'");//拉取完成
} }
public void PullData修复超时错误(long indexs) // public void PullData修复超时错误(long indexs)
{ // {
DbConnection connection = new SqlConnection(_configConnectionString); // DbConnection connection = new SqlConnection(_configConnectionString);
//读取错误日志 // //读取错误日志
var sql = @$"select [ID], [INDEXS], hos_code , // var sql = @$"select [ID], [INDEXS], hos_code ,
[LOG], [CreateDate], [type], REPLACE( REPLACE([错误sql] ,'[192.168.18.181].',''),REPLACE(hos_code,SUBSTRING(hos_code,1,CHARINDEX('[H',hos_code)-1),''),hos_code) from ( //[LOG], [CreateDate], [type], REPLACE( REPLACE([错误sql] ,'[192.168.18.181].',''),REPLACE(hos_code,SUBSTRING(hos_code,1,CHARINDEX('[H',hos_code)-1),''),hos_code) from (
select [ID], [INDEXS], [hos_code] ,[LOG], //select [ID], [INDEXS], [hos_code] ,[LOG],
[CreateDate], [type], REPLACE(left([错误sql],CHARINDEX('错误日志',[错误sql])-1),'报错sql:','')[错误sql] FROM [SV_QueryPlatform].[dbo].[SYS_LOG] //[CreateDate], [type], REPLACE(left([错误sql],CHARINDEX('错误日志',[错误sql])-1),'报错sql:','')[错误sql] FROM [SV_QueryPlatform].[dbo].[SYS_LOG]
where indexs={indexs} and type='错误')a"; //where indexs={indexs} and type='错误')a";
var log = connection.Query<SYS_LOG>(sql).ToList(); // var log = connection.Query<SYS_LOG>(sql).ToList();
var 错误log = log.Where(s => s.type == "错误"); // var 错误log = log.Where(s => s.type == "错误");
//foreach 错误sql // //foreach 错误sql
foreach (var item in 错误log.OrderBy(o => o.LOG)) // foreach (var item in 错误log.OrderBy(o => o.LOG))
{//错误日志修复 // {//错误日志修复
System.Threading.Tasks.Task.Factory.StartNew(() => PullData修复超时错误(item.IP, item.HOS, item.id, item.错误sql)); // System.Threading.Tasks.Task.Factory.StartNew(() => PullData修复超时错误(item.IP, item.HOS, item.id, item.错误sql));
} // }
} // }
public void PullData修复超时错误(string ip, string hos, int id, string sql) // public void PullData修复超时错误(string ip, string hos, int id, string sql)
{ // {
long num = Connection(181).Execute(sql, commandTimeout: 60 * 60 * 60 * 5); // long num = Connection(181).Execute(sql, commandTimeout: 60 * 60 * 60 * 5);
if (num > 0) { Connection(181).Execute(@$"update [SV_QueryPlatform].[dbo].[SYS_LOG] set type='成功' where id ={id}", commandTimeout: 60 * 60 * 60 * 5); } // if (num > 0) { Connection(181).Execute(@$"update [SV_QueryPlatform].[dbo].[SYS_LOG] set type='成功' where id ={id}", commandTimeout: 60 * 60 * 60 * 5); }
} // }
public long QueryPatient(string tableName) public long QueryPatient(string tableName)
{ {
DbConnection connection = new SqlConnection(_configConnectionString); DbConnection connection = new SqlConnection(_configConnectionString);
......
using Autofac.Extensions.DependencyInjection; using Autofac.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.ML;
using Microsoft.ML.Data;
using Serilog; using Serilog;
using System; using System;
using System.Diagnostics;
using System.Drawing;
using System.IO; using System.IO;
using System.Text;
using Ude;
using ZXing;
using ZXing.Common;
namespace QueryPlatform.Api namespace QueryPlatform.Api
{ {
...@@ -27,15 +36,82 @@ static Program() ...@@ -27,15 +36,82 @@ static Program()
public static IConfiguration Configuration { get; } public static IConfiguration Configuration { get; }
public static string BaseDirectory { get; } public static string BaseDirectory { get; }
// 检测编码格式
static Encoding DetectEncoding(Stream stream)
{
CharsetDetector detector = new CharsetDetector();
detector.Feed(stream);
detector.DataEnd();
string encodingName = detector.Charset;
return Encoding.GetEncoding(encodingName);
}
public static void Main(string[] args) public static void Main(string[] args)
{ {
//// 创建ML.NET环境
//var mlContext = new MLContext();
//// 准备数据
//var trainingData = LoadData();
//// 定义特征和标签的类型
//var dataView = mlContext.Data.LoadFromEnumerable<HouseData>(trainingData);
//// 定义模型管道
//var pipeline = mlContext.Transforms.Concatenate("Features", "Size")
// .Append(mlContext.Regression.Trainers.Sdca(labelColumnName: "Price"));
//// 训练模型
//Console.WriteLine(DateTime.Now);
//var model = pipeline.Fit(dataView);
//Console.WriteLine(DateTime.Now);
//// 使用模型进行预测
//var predictionEngine = mlContext.Model.CreatePredictionEngine<HouseData, PredictionResult>(model);
//var prediction = predictionEngine.Predict(new HouseData { Size = 2000 });
//// 打印预测结果
//Console.WriteLine($"Predicted price for a house with 2000 sqft: {prediction.Price}");
//Console.ReadLine();
Log.Logger = CreateSerilogLogger(); Log.Logger = CreateSerilogLogger();
Log.Information("Starting web host"); Log.Information("Starting web host");
CreateHostBuilder(args).Build().Run(); CreateHostBuilder(args).Build().Run();
} }
class HouseData
{
[LoadColumn(0)]
public float Size { get; set; }
[LoadColumn(1)]
public float Price { get; set; }
}
// 定义预测结果结构
class PredictionResult
{
public float Price { get; set; }
}
// 加载数据
private static HouseData[] LoadData()
{
// 实际情况中可能从文件或数据库加载数据
return new HouseData[]
{
new HouseData { Size = 1000, Price = 300000 },
new HouseData { Size = 1500, Price = 400000 },
new HouseData { Size = 2000, Price = 500000 },
new HouseData { Size = 2500, Price = 600000 },
new HouseData { Size = 3000, Price = 700000 },
};
}
public static IHostBuilder CreateHostBuilder(string[] args) public static IHostBuilder CreateHostBuilder(string[] args)
{ {
var urls = Configuration.GetValue("ListenUrls", "http://*:56900"); var urls = Configuration.GetValue("ListenUrls", "http://*:56900");
......
...@@ -63,6 +63,7 @@ ...@@ -63,6 +63,7 @@
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.7" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.7" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.7" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.7" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.8" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.8" />
<PackageReference Include="Microsoft.ML" Version="3.0.1" />
<PackageReference Include="Microsoft.Office.Interop.Word" Version="15.0.4797.1004" /> <PackageReference Include="Microsoft.Office.Interop.Word" Version="15.0.4797.1004" />
<PackageReference Include="Microsoft.VisualBasic" Version="10.3.0" /> <PackageReference Include="Microsoft.VisualBasic" Version="10.3.0" />
<PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.2.1" /> <PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.2.1" />
...@@ -82,8 +83,10 @@ ...@@ -82,8 +83,10 @@
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.1" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.1" />
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="5.6.3" /> <PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="5.6.3" />
<PackageReference Include="System.IO.Compression.ZipFile" Version="4.3.0" /> <PackageReference Include="System.IO.Compression.ZipFile" Version="4.3.0" />
<PackageReference Include="Ude.NET" Version="1.0.0" />
<PackageReference Include="Wkhtmltopdf.NetCore" Version="3.0.2" /> <PackageReference Include="Wkhtmltopdf.NetCore" Version="3.0.2" />
<PackageReference Include="Xamarin.Essentials" Version="1.7.3" /> <PackageReference Include="Xamarin.Essentials" Version="1.7.3" />
<PackageReference Include="ZXing.Net" Version="0.16.9" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
......
var_label,var_name,var_diags
病案号,ID,
住院次数,,
入院时间,date_in,
出院时间,date_out,
入院时间-年,year_in,
入院时间-月,month_in,
性别,sex,
出生日期,,
年龄(岁),age,
是否为日间手术,day_surg,
实际住院,los,
科主任编码,,
科主任,,
主任医师编码,,
主任医师,,
主治医师编码,,
主治医师,,
住院医师编码,,
住院医师,,
是否有出院31日内再住院计划,,
出院31天再住院计划目的,,
离院方式,discharge,
住院总费用,Total,
住院总费用其中自付金额,,
床位费,cost_bed,
诊查费,cost_diag,
检查费,cost_exam,
化验费,cost_test,
治疗费,cost_treat,
手术费,cost_surg,
护理费,cost_nurs,
卫生材料费用,cost_supply,
西药费,cost_med,
中药饮片费,cost_medcn1,
中成药,cost_medcn2,
一般诊疗费,cost_gen,
挂号费,cost_fee,
其他费用,cost_other,
床位费百分比,,
诊查费百分比,,
检查费百分比,,
化验费百分比,,
治疗费百分比,,
手术费百分比,,
护理费百分比,,
卫生材料费用百分比,,
西药费百分比,,
中药饮片费百分比,,
中成药百分比,,
一般诊疗费百分比,,
挂号费百分比,,
其他费用百分比,,
药品费,Medical,
检查检验费,Examination,
卫生材料费,Devices,
医务性收入,Service,
药品费百分比,,
检查检验费百分比,,
卫生材料费百分比,,
医务性收入百分比,,
病人诊断集合,,
病人手术集合,病人手术集合,
2型糖尿病伴有其他特指的并发症,2型糖尿病伴有其他特指的并发症,1
2型糖尿病不伴有并发症,2型糖尿病不伴有并发症,1
贝尔面瘫,贝尔面瘫,1
臂骨折后遗症,臂骨折后遗症,1
便秘,便秘,1
病态窦性综合征,病态窦性综合征,1
部位未特指的恶性肿瘤,部位未特指的恶性肿瘤,1
部位未特指的泌尿道感染,部位未特指的泌尿道感染,1
操作的其他并发症,不可归类在他处者,操作的其他并发症,不可归类在他处者,1
操作后甲状腺功能减退症,操作后甲状腺功能减退症,1
肠其他特指的疾病,肠其他特指的疾病,1
耻骨骨折,耻骨骨折,1
传染病病原携带者,传染病病原携带者,1
传染病和寄生虫病个人史,传染病和寄生虫病个人史,1
垂体良性肿瘤,垂体良性肿瘤,1
纯高胆固醇血症,纯高胆固醇血症,1
纯高甘油酯血症,纯高甘油酯血症,1
大脑动脉粥样硬化,大脑动脉粥样硬化,1
带状疱疹伴有其他并发症,带状疱疹伴有其他并发症,1
带状疱疹不伴有并发症,带状疱疹不伴有并发症,1
胆囊结石伴有其他胆囊炎,胆囊结石伴有其他胆囊炎,1
胆囊结石不伴有胆囊炎,胆囊结石不伴有胆囊炎,1
胆囊其他特指的疾病,胆囊其他特指的疾病,1
胆囊肿,胆囊肿,1
低钾血症,低钾血症,1
低渗透性和低钠血症,低渗透性和低钠血症,1
电解质和液体平衡的其他紊乱,不可归类在他,电解质和液体平衡的其他紊乱,不可归类在他,1
动脉导管未闭,动脉导管未闭,1
动脉狭窄,动脉狭窄,1
动脉硬化性心脏病,动脉硬化性心脏病,1
多个部位淋巴结继发性和未特指的恶性肿瘤,多个部位淋巴结继发性和未特指的恶性肿瘤,1
多尿,多尿,1
房间隔缺损,房间隔缺损,1
非毒性单个甲状腺结节,非毒性单个甲状腺结节,1
非毒性多结节性甲状腺肿,非毒性多结节性甲状腺肿,1
肺部继发性恶性肿瘤,肺部继发性恶性肿瘤,1
肺的其他疾患,肺的其他疾患,1
肺结节病,肺结节病,1
肺隐球菌病,肺隐球菌病,1
肺诊断性影像检查的异常所见,肺诊断性影像检查的异常所见,1
附带妊娠状态,附带妊娠状态,1
腹水,腹水,1
钙代谢紊乱,钙代谢紊乱,1
肝功能检查的异常结果,肝功能检查的异常结果,1
肝和胆道诊断性影像检查的异常所见,肝和胆道诊断性影像检查的异常所见,1
肝及肝内胆管继发性恶性肿瘤,肝及肝内胆管继发性恶性肿瘤,1
肛门和直肠其他特指的疾病,肛门和直肠其他特指的疾病,1
高胆红素血症,不伴黄疸,高胆红素血症,不伴黄疸,1
高胆红素血症,不可归类在他处者,高胆红素血症,不可归类在他处者,1
高尿酸血症不伴有感染性关节炎体征和砂砾性,高尿酸血症不伴有感染性关节炎体征和砂砾性,1
高乳糜微粒血症,高乳糜微粒血症,1
肱骨上端骨折,肱骨上端骨折,1
宫颈其他特指的非炎性疾患,宫颈其他特指的非炎性疾患,1
宫颈息肉,宫颈息肉,1
宫颈炎性疾病,宫颈炎性疾病,1
孤立性蛋白尿,孤立性蛋白尿,1
骨和骨髓继发性恶性肿瘤,骨和骨髓继发性恶性肿瘤,1
骨未特指的疾患,骨未特指的疾患,1
关节痛,关节痛,1
广泛性焦虑障碍,广泛性焦虑障碍,1
后天性动静脉瘘,后天性动静脉瘘,1
后天性食管憩室,后天性食管憩室,1
呼吸道结核和未特指结核的后遗症,呼吸道结核和未特指结核的后遗症,1
混合性高脂血症,混合性高脂血症,1
混合性焦虑和抑郁障碍,混合性焦虑和抑郁障碍,1
急性牙周炎,急性牙周炎,1
急性咽喉炎,急性咽喉炎,1
脊柱骨折后遗症,脊柱骨折后遗症,1
继发性血小板减少,继发性血小板减少,1
甲胎蛋白异常,甲胎蛋白异常,1
甲状腺毒症伴有毒性单个甲状腺结节,甲状腺毒症伴有毒性单个甲状腺结节,1
甲状腺毒症伴有毒性多结节性甲状腺肿,甲状腺毒症伴有毒性多结节性甲状腺肿,1
甲状腺功能检查的异常结果,甲状腺功能检查的异常结果,1
肩关节脱位,肩关节脱位,1
肩和上臂多处损伤,肩和上臂多处损伤,1
结肠交搭跨越恶性肿瘤的损害,结肠交搭跨越恶性肿瘤的损害,1
结肠息肉,结肠息肉,1
结缔组织未特指的系统性受累,结缔组织未特指的系统性受累,1
结膜出血,结膜出血,1
颈动脉闭塞和狭窄,颈动脉闭塞和狭窄,1
颈神经根疾患,不可归类在他处者,颈神经根疾患,不可归类在他处者,1
局限性淋巴结增大,局限性淋巴结增大,1
具有矫形外科关节植入物,具有矫形外科关节植入物,1
咳嗽,咳嗽,1
肋骨骨折,肋骨骨折,1
泪腺的其他疾患,泪腺的其他疾患,1
粒细胞缺乏,粒细胞缺乏,1
临床症状不明显[亚临床]的碘缺乏性甲状腺,临床症状不明显[亚临床]的碘缺乏性甲状腺,1
淋巴水肿,不可归类在他处者,淋巴水肿,不可归类在他处者,1
颅内占位性病变,颅内占位性病变,1
卵巢、输卵管和阔韧带的其他非炎性疾患,卵巢、输卵管和阔韧带的其他非炎性疾患,1
卵巢、输卵管和阔韧带未特指的非炎性疾患,卵巢、输卵管和阔韧带未特指的非炎性疾患,1
慢性鼻炎,慢性鼻炎,1
慢性胆囊炎,慢性胆囊炎,1
慢性萎缩性胃炎,慢性萎缩性胃炎,1
慢性乙型病毒性肝炎,不伴有δ因子,慢性乙型病毒性肝炎,不伴有δ因子,1
脑梗死后遗症,脑梗死后遗症,1
脑和脑膜继发性恶性肿瘤,脑和脑膜继发性恶性肿瘤,1
脑震荡后综合征,脑震荡后综合征,1
内分泌、营养和代谢疾病并发于妊娠、分娩和,内分泌、营养和代谢疾病并发于妊娠、分娩和,1
内分泌、营养和代谢疾病个人史,内分泌、营养和代谢疾病个人史,1
膀胱结石,膀胱结石,1
皮肤和皮下组织未特指的局部感染,皮肤和皮下组织未特指的局部感染,1
皮疹和其他非特异性斑疹,皮疹和其他非特异性斑疹,1
脾囊肿,脾囊肿,1
脾先天性畸形,脾先天性畸形,1
其他病原体未特指的肺炎,其他病原体未特指的肺炎,1
其他部位的良性脂肪瘤样肿瘤,其他部位的良性脂肪瘤样肿瘤,1
其他的颈椎间盘移位,其他的颈椎间盘移位,1
其他癫癎,其他癫癎,1
其他动脉的动脉粥样硬化,其他动脉的动脉粥样硬化,1
其他和未特指传染性病因的胃肠炎和结肠炎,其他和未特指传染性病因的胃肠炎和结肠炎,1
其他和未特指的传染病,其他和未特指的传染病,1
其他和未特指的肝硬变,其他和未特指的肝硬变,1
其他和未特指的卵巢囊肿,其他和未特指的卵巢囊肿,1
其他和未特指的右束支传导阻滞,其他和未特指的右束支传导阻滞,1
其他甲状腺毒症,其他甲状腺毒症,1
其他脑梗死,其他脑梗死,1
其他器官和系统恶性肿瘤个人史,其他器官和系统恶性肿瘤个人史,1
其他缺铁性贫血,其他缺铁性贫血,1
其他入脑前动脉的闭塞和狭窄,其他入脑前动脉的闭塞和狭窄,1
其他身体创伤个人史,其他身体创伤个人史,1
其他糖蛋白代谢紊乱,其他糖蛋白代谢紊乱,1
其他特指部位的继发性恶性肿瘤,其他特指部位的继发性恶性肿瘤,1
其他特指传染病和寄生虫病的后遗症,其他特指传染病和寄生虫病的后遗症,1
其他特指的肝病,其他特指的肝病,1
其他特指的疾病和情况并发于妊娠、分娩和产,其他特指的疾病和情况并发于妊娠、分娩和产,1
其他特指的甲状腺功能减退症,其他特指的甲状腺功能减退症,1
其他特指的矫形外科的随诊医疗,其他特指的矫形外科的随诊医疗,1
其他特指的静脉栓塞和血栓形成,其他特指的静脉栓塞和血栓形成,1
其他特指的脑血管疾病,其他特指的脑血管疾病,1
其他特指的软组织疾患,其他特指的软组织疾患,1
其他特指的手术后状态,其他特指的手术后状态,1
其他特指的心律失常,其他特指的心律失常,1
其他特指的胸膜情况,其他特指的胸膜情况,1
其他特指的医疗照顾,其他特指的医疗照顾,1
其他特指的与女性生殖器官和月经周期有关的,其他特指的与女性生殖器官和月经周期有关的,1
其他特指的痔疮,其他特指的痔疮,1
其他特指的椎间盘疾患,其他特指的椎间盘疾患,1
其他特指的椎间盘移位,其他特指的椎间盘移位,1
其他特指的子宫非炎性疾患,其他特指的子宫非炎性疾患,1
其他特指身体结构诊断性影像检查的异常所见,其他特指身体结构诊断性影像检查的异常所见,1
其他形式的口炎,其他形式的口炎,1
其他植入装置的调整和管理,其他植入装置的调整和管理,1
气管、支气管和肺恶性肿瘤个人史,气管、支气管和肺恶性肿瘤个人史,1
屈光未特指的疾患,屈光未特指的疾患,1
躯干的局部肿胀、肿物和肿块,躯干的局部肿胀、肿物和肿块,1
全身性和未特指的动脉粥样硬化,全身性和未特指的动脉粥样硬化,1
妊娠、分娩和产褥期并发症个人史,妊娠、分娩和产褥期并发症个人史,1
乳房导管原位癌,乳房导管原位癌,1
乳房恶性肿瘤个人史,乳房恶性肿瘤个人史,1
乳房孤立囊肿,乳房孤立囊肿,1
乳房交搭跨越恶性肿瘤的损害,乳房交搭跨越恶性肿瘤的损害,1
乳房良性肿瘤,乳房良性肿瘤,1
乳房上内象限恶性肿瘤,乳房上内象限恶性肿瘤,1
乳房上外象限恶性肿瘤,乳房上外象限恶性肿瘤,1
乳房未特指的疾患,乳房未特指的疾患,1
乳房未特指的原位癌,乳房未特指的原位癌,1
乳房下内象限恶性肿瘤,乳房下内象限恶性肿瘤,1
乳房下外象限恶性肿瘤,乳房下外象限恶性肿瘤,1
乳房炎性疾患,乳房炎性疾患,1
乳房中央部恶性肿瘤,乳房中央部恶性肿瘤,1
上叶,支气管或肺的恶性肿瘤,上叶,支气管或肺的恶性肿瘤,1
身体未特指部位的浅表损伤,身体未特指部位的浅表损伤,1
肾功能检查的异常结果,肾功能检查的异常结果,1
肾和输尿管其他特指的疾患,肾和输尿管其他特指的疾患,1
肾结石,肾结石,1
肾囊肿,肾囊肿,1
肾上腺其他特指的疾患,肾上腺其他特指的疾患,1
肾上腺未特指的疾患,肾上腺未特指的疾患,1
升结肠恶性肿瘤,升结肠恶性肿瘤,1
生殖器官后天性缺失,生殖器官后天性缺失,1
声带和喉麻痹,声带和喉麻痹,1
手术后恢复期,手术后恢复期,1
输尿管结石,输尿管结石,1
四肢动脉的动脉粥样硬化,四肢动脉的动脉粥样硬化,1
糖尿病不伴有并发症,糖尿病不伴有并发症,1
特发性(出血性)血小板增多症,特发性(出血性)血小板增多症,1
特发性(原发性)高血压,特发性(原发性)高血压,1
头、面和颈部淋巴结继发性和未的恶性肿瘤,头、面和颈部淋巴结继发性和未的恶性肿瘤,1
头、面和颈部皮肤和皮下组织良性脂肪瘤样肿,头、面和颈部皮肤和皮下组织良性脂肪瘤样肿,1
为肿瘤化学治疗疗程,为肿瘤化学治疗疗程,1
未特指部位的继发性恶性肿瘤,未特指部位的继发性恶性肿瘤,1
未特指的斑痣性错构瘤病,未特指的斑痣性错构瘤病,1
未特指的变态反应,未特指的变态反应,1
未特指的动态未定或动态未知的肿瘤,未特指的动态未定或动态未知的肿瘤,1
未特指的多神经病,未特指的多神经病,1
未特指的非感染性胃肠炎和结肠炎,未特指的非感染性胃肠炎和结肠炎,1
未特指的非特异性淋巴结炎,未特指的非特异性淋巴结炎,1
未特指的肺气肿,未特指的肺气肿,1
未特指的肺炎,未特指的肺炎,1
未特指的肝病,未特指的肝病,1
未特指的肝衰竭,未特指的肝衰竭,1
未特指的肛裂,未特指的肛裂,1
未特指的高脂血症,未特指的高脂血症,1
未特指的功能性肠疾患,未特指的功能性肠疾患,1
未特指的急性上呼吸道感染,未特指的急性上呼吸道感染,1
未特指的急性肾衰竭,未特指的急性肾衰竭,1
未特指的脊椎病,未特指的脊椎病,1
未特指的甲状腺毒症,未特指的甲状腺毒症,1
未特指的甲状腺功能减退症,未特指的甲状腺功能减退症,1
未特指的焦虑障碍,未特指的焦虑障碍,1
未特指的结肠恶性肿瘤,未特指的结肠恶性肿瘤,1
未特指的结缔组织和软组织恶性肿瘤,未特指的结缔组织和软组织恶性肿瘤,1
未特指的结膜炎,未特指的结膜炎,1
未特指的精神分裂症,未特指的精神分裂症,1
未特指的静脉栓塞和血栓形成,未特指的静脉栓塞和血栓形成,1
未特指的局部肿胀、肿物和肿块,未特指的局部肿胀、肿物和肿块,1
未特指的老年性白内障,未特指的老年性白内障,1
未特指的类风湿性关节炎,未特指的类风湿性关节炎,1
未特指的淋巴结恶性肿瘤,未特指的淋巴结恶性肿瘤,1
未特指的淋巴结增大,未特指的淋巴结增大,1
未特指的慢性胃炎,未特指的慢性胃炎,1
未特指的毛囊疾患,未特指的毛囊疾患,1
未特指的梅毒,未特指的梅毒,1
未特指的凝血缺陷,未特指的凝血缺陷,1
未特指的贫血,未特指的贫血,1
未特指的乳房恶性肿瘤,未特指的乳房恶性肿瘤,1
未特指的乳房肿块,未特指的乳房肿块,1
未特指的受压区褥疮,未特指的受压区褥疮,1
未特指的水肿,未特指的水肿,1
未特指的睡眠障碍,未特指的睡眠障碍,1
未特指的疼痛,未特指的疼痛,1
未特指的痛风,未特指的痛风,1
未特指的胃炎,未特指的胃炎,1
未特指的膝关节病,未特指的膝关节病,1
未特指的系统性红斑狼疮,未特指的系统性红斑狼疮,1
未特指的细菌性肺炎,未特指的细菌性肺炎,1
未特指的细菌性感染,未特指的细菌性感染,1
未特指的下肢静脉炎和血栓性静脉炎,未特指的下肢静脉炎和血栓性静脉炎,1
未特指的哮喘,未特指的哮喘,1
未特指的心动过缓,未特指的心动过缓,1
未特指的心动过速,未特指的心动过速,1
未特指的心力衰竭,未特指的心力衰竭,1
未特指的心律失常,未特指的心律失常,1
未特指的血尿,未特指的血尿,1
未特指的血糖过多,未特指的血糖过多,1
未特指的血小板减少,未特指的血小板减少,1
未特指的荨麻疹,未特指的荨麻疹,1
未特指的以皮肤和粘膜损害为特征的病毒性感,未特指的以皮肤和粘膜损害为特征的病毒性感,1
未特指的再生障碍性贫血,未特指的再生障碍性贫血,1
未特指的中毒性肝病,未特指的中毒性肝病,1
未特指的子宫非炎性疾患,未特指的子宫非炎性疾患,1
未特指的子宫平滑肌瘤,未特指的子宫平滑肌瘤,1
未特指原因的变应性接触性皮炎,未特指原因的变应性接触性皮炎,1
未特指早期或晚期的潜伏性梅毒,未特指早期或晚期的潜伏性梅毒,1
胃-食管反流性疾病伴有食管炎,胃-食管反流性疾病伴有食管炎,1
胃和十二指肠未特指的疾病,胃和十二指肠未特指的疾病,1
胃和十二指肠息肉,胃和十二指肠息肉,1
下叶,支气管或肺的恶性肿瘤,下叶,支气管或肺的恶性肿瘤,1
下肢动脉栓塞和血栓形成,下肢动脉栓塞和血栓形成,1
下肢其他深部脉管的静脉炎和血栓性静脉炎,下肢其他深部脉管的静脉炎和血栓性静脉炎,1
下肢浅表脉管的静脉炎和血栓性静脉炎,下肢浅表脉管的静脉炎和血栓性静脉炎,1
消化道其他部分后天性缺失,消化道其他部分后天性缺失,1
消化器官恶性肿瘤个人史,消化器官恶性肿瘤个人史,1
消化系统的其他操作后疾患,不可归类在他处,消化系统的其他操作后疾患,不可归类在他处,1
心包积液(非炎性),心包积液(非炎性),1
心包其他特指的疾病,心包其他特指的疾病,1
心房过早除极,心房过早除极,1
心室过早除极,心室过早除极,1
心脏肥大,心脏肥大,1
胸和骨盆的其他骨折后遗症,胸和骨盆的其他骨折后遗症,1
胸膜继发性恶性肿瘤,胸膜继发性恶性肿瘤,1
血管瘤,任何部位,血管瘤,任何部位,1
血管通路装置的调整和管理,血管通路装置的调整和管理,1
血浆蛋白的其他特指异常,血浆蛋白的其他特指异常,1
血液和造血器官的其他疾病,血液和造血器官的其他疾病,1
循环系统疾病个人史,循环系统疾病个人史,1
腰椎和骨盆其他和未特指部位的骨折,腰椎和骨盆其他和未特指部位的骨折,1
药物性多神经病,药物性多神经病,1
药物性再生障碍性贫血,药物性再生障碍性贫血,1
腋下和上肢淋巴结继发性和未特指的恶性肿瘤,腋下和上肢淋巴结继发性和未特指的恶性肿瘤,1
一度房室传导阻滞,一度房室传导阻滞,1
胰腺囊肿,胰腺囊肿,1
胰腺内分泌其他特指的疾患,胰腺内分泌其他特指的疾患,1
影响眼睑功能的其他疾患,影响眼睑功能的其他疾患,1
由于禁忌证而未进行操作,由于禁忌证而未进行操作,1
由于其他原因而未进行操作,由于其他原因而未进行操作,1
原发性闭角型青光眼,原发性闭角型青光眼,1
支气管和肺良性肿瘤,支气管和肺良性肿瘤,1
支气管扩张(症),支气管扩张(症),1
脂肪肝,不可归类在他处者,脂肪肝,不可归类在他处者,1
痔疮,痔疮,1
主动脉(瓣)关闭不全,主动脉(瓣)关闭不全,1
主动脉的动脉粥样硬化,主动脉的动脉粥样硬化,1
转氨酶和乳酸脱氢酶[LDH]水平升高,转氨酶和乳酸脱氢酶[LDH]水平升高,1
椎动脉闭塞和狭窄,椎动脉闭塞和狭窄,1
椎管狭窄,椎管狭窄,1
子宫壁内平滑肌瘤,子宫壁内平滑肌瘤,1
子宫的子宫内膜异位症,子宫的子宫内膜异位症,1
子宫动态未定或动态未知的肿瘤,子宫动态未定或动态未知的肿瘤,1
子宫和宫颈未特指的先天性畸形,子宫和宫颈未特指的先天性畸形,1
子宫体良性肿瘤,子宫体良性肿瘤,1
子宫体息肉,子宫体息肉,1
自身免疫性甲状腺炎,自身免疫性甲状腺炎,1
左前分支传导阻滞,左前分支传导阻滞,1
静脉注射化疗药物,chemo_count,
分子靶向治疗,targ_count,
化疗泵取出术,chemopump_out_count,
化疗泵置入术,chemopump_in_count,
热疗,hot_count,
红细胞输入,red_count,
经外周静脉穿刺中心静脉置管术,piccv_count,
淋巴结构的活组织检查,lnbio_count,
膀胱造口导管置换,bucp_count,
乳房穿刺活检,bbio_count,
胃镜下活组织检查,gebx_count,
胸腔穿刺抽液术,tpdrain_count,
腋窝淋巴结活组织检查,axlbx_count,
结肠镜检查,colonosc_count,
乳腺活检术,brstbx_count,
内镜下胃息肉切除术,polypec_count,
静脉输液港植入术,ivport_count,
肌皮瓣转移术,myoflap_count,
经皮肝穿刺活检,plcbx_count,
血浆输入,plsmlnf_count,
手术1,,
手术2,,
手术3,,
手术4,,
手术5,,
手术6,,
手术7,,
手术8,,
手术9,,
手术10,,
结算编码,,
险种类型,,
总费用,,
基本统筹,,
职工大病补助,,
主要诊断代码,,
主要诊断名称,diag_main,
主要手术代码,,
主要手术名称,op_main,
病种代码,,
病种名称,drg_name,
病种手术操作代码,,
病种手术操作名称,drg_op,
病种类型,charge_hilow,
病种分值,rw_drg,
实际分值,rw_actual,
倍率,,
是否医保,charge_ins,
医保拨付费用,reimb,
结算类型,charge_type,
医保结余,Margin,
\ No newline at end of file
...@@ -442,12 +442,12 @@ ...@@ -442,12 +442,12 @@
创建流水库 创建流水库
</summary> </summary>
</member> </member>
<member name="M:QueryPlatform.Api.Infrastructure.Queries.ResourceQueries.PullData(System.Int64,System.String,System.String,System.String,System.String)"> <member name="M:QueryPlatform.Api.Infrastructure.Queries.ResourceQueries.PullData(System.Int64,System.String,System.String,System.String)">
<summary> <summary>
拉取病人表 拉取病人表
</summary> </summary>
</member> </member>
<member name="M:QueryPlatform.Api.Infrastructure.Queries.ResourceQueries.PullData(System.Int64,System.String,System.String)"> <member name="M:QueryPlatform.Api.Infrastructure.Queries.ResourceQueries.PullData(System.Int64,System.String,System.String,System.Int32)">
<summary> <summary>
多线程拉取病人表 多线程拉取病人表
</summary> </summary>
......
using Autofac.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.ML;
using Microsoft.ML.Data;
using Serilog;
using System;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Text;
using Ude;
using ZXing;
using ZXing.Common;
namespace QueryPlatform.Api
{
public class Program
{
static Program()
{
string env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
BaseDirectory = AppDomain.CurrentDomain.BaseDirectory;
Configuration = new ConfigurationBuilder()
.SetBasePath(BaseDirectory)
.AddJsonFile($"appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env}.json", optional: true, reloadOnChange: true)
.AddJsonFile($"secret.json", optional: true, reloadOnChange: true)
.AddXmlFile($"overview.xml", true, true)
.AddEnvironmentVariables()
.Build();
}
public static IConfiguration Configuration { get; }
public static string BaseDirectory { get; }
// 检测编码格式
static Encoding DetectEncoding(Stream stream)
{
CharsetDetector detector = new CharsetDetector();
detector.Feed(stream);
detector.DataEnd();
string encodingName = detector.Charset;
return Encoding.GetEncoding(encodingName);
}
public static void Main(string[] args)
{
//// 创建ML.NET环境
//var mlContext = new MLContext();
//// 准备数据
//var trainingData = LoadData();
//// 定义特征和标签的类型
//var dataView = mlContext.Data.LoadFromEnumerable<HouseData>(trainingData);
//// 定义模型管道
//var pipeline = mlContext.Transforms.Concatenate("Features", "Size")
// .Append(mlContext.Regression.Trainers.Sdca(labelColumnName: "Price"));
//// 训练模型
//Console.WriteLine(DateTime.Now);
//var model = pipeline.Fit(dataView);
//Console.WriteLine(DateTime.Now);
//// 使用模型进行预测
//var predictionEngine = mlContext.Model.CreatePredictionEngine<HouseData, PredictionResult>(model);
//var prediction = predictionEngine.Predict(new HouseData { Size = 2000 });
//// 打印预测结果
//Console.WriteLine($"Predicted price for a house with 2000 sqft: {prediction.Price}");
//Console.ReadLine();
Log.Logger = CreateSerilogLogger();
Log.Information("Starting web host");
CreateHostBuilder(args).Build().Run();
}
class HouseData
{
[LoadColumn(0)]
public float Size { get; set; }
[LoadColumn(1)]
public float Price { get; set; }
}
// 定义预测结果结构
class PredictionResult
{
public float Price { get; set; }
}
// 加载数据
private static HouseData[] LoadData()
{
// 实际情况中可能从文件或数据库加载数据
return new HouseData[]
{
new HouseData { Size = 1000, Price = 300000 },
new HouseData { Size = 1500, Price = 400000 },
new HouseData { Size = 2000, Price = 500000 },
new HouseData { Size = 2500, Price = 600000 },
new HouseData { Size = 3000, Price = 700000 },
};
}
public static IHostBuilder CreateHostBuilder(string[] args)
{
var urls = Configuration.GetValue("ListenUrls", "http://*:56900");
return Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.UseUrls(urls.Split(','))
.UseStartup<Startup>();
})
.ConfigureAppConfiguration((context, config) =>
{
config.AddConfiguration(Configuration);
})
.UseContentRoot(BaseDirectory)
.UseSerilog();
}
private static Serilog.ILogger CreateSerilogLogger()
{
var basePath = Path.Combine(BaseDirectory, "logs");
return new LoggerConfiguration()
.ReadFrom.Configuration(Configuration)
//.MinimumLevel.Verbose()
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File($"{basePath}\\.log", rollingInterval: RollingInterval.Day, retainedFileCountLimit: null)
.CreateLogger();
}
}
}
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="RestSharpSigned" Version="105.2.3" />
</ItemGroup> </ItemGroup>
</Project> </Project>
...@@ -7,6 +7,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QueryPlatform.Api", "queryP ...@@ -7,6 +7,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QueryPlatform.Api", "queryP
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QueryPlatform.Infra", "queryPlaform.Infra\QueryPlatform.Infra.csproj", "{DEEDEA96-9A13-48D7-A9E6-E1A9E6F95656}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QueryPlatform.Infra", "queryPlaform.Infra\QueryPlatform.Infra.csproj", "{DEEDEA96-9A13-48D7-A9E6-E1A9E6F95656}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "解决方案项", "解决方案项", "{103D4545-7F9F-49D4-A159-C764D63EFDA5}"
ProjectSection(SolutionItems) = preProject
StringAgg.cs = StringAgg.cs
EndProjectSection
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment