置百丈玄冰而崩裂,掷须臾池水而漂摇。
数据库

设置 SQL Server占用服务器内存

问题现象:

数据库服务器内存居高不下,64G的内存,几乎被占用100%,结果差点把服务器给拖垮了。


分析:

SQL Server对服务器内存的使用策略是有多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,所以SQL Server 服务器内存往往会占用很高。

这些内存一般都是SQL Server运行时候用作缓存的:

1. 数据缓存:执行个查询语句,SQL Server会将相关的数据页(SQL Server操作的数据都是以页为单位的)加载到内存中来, 下一次如果再次请求此页的数据的时候,就无需读取磁盘了,大大提高了速度。 

强强 2023/1/29 0评论

PACS业务知识

常见影像科室设备类型

常见影像科室设备类型

 

设备类型编码描述
计算机断层摄影(CT)CT计算机断层摄影
数字化X射线摄影(DX)DX数字化X射线摄影
计算机放射成像(CR)CR计算机放射成像
普通显微镜(GM)GM普通显微镜
数字减影心血管造影术(DSA)DSA数字减影心血管造影术
X光血管造影(XA)XAX光血管造影
内窥镜(ES)ES内窥镜
X线成像(RG)RGX线成像
全景X光(PX)PX全景X光
核医学(NM)NM核医学
超声(US)US超声
乳房X光成像(MG)MG乳房X光成像
透视摄影(RF)RF透视摄影
数字化X射线摄影(DR)DR数字化X射线摄影
正电子发射断层摄影(PT)PT正电子发射断层摄影
电子心电图(ECG)ECG电子心电图
磁共振血管造影(MA)MA磁共振血管造影
磁共振(MR)MR磁共振


强强 2023/1/17 0评论

ASP.NET

ASP.NET轻量级MVC框架Nancy使用

Nancy是一个轻量级的MVC框架,也可以完全脱离IIS.

下面是官网的一些介绍:

Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能多的方式,并提供一个super-duper-happy-path所有交互。

Nancy 设计用于处理 DELETE, GET, HEAD, OPTIONS, POST, PUT和 PATCH 等请求方法,并提供简单优雅的 DSL 以返回响应。让你有更多时间专注于你的代码和程序。

强强 2023/1/5 0评论

RIS系统

历史数据 查询方式

-- =============================================
-- Author:<Author,,Name>
-- Create date: <Create Date,,>
-- Description:<Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[Pro_HisPatient](
@REQ_PROCNO  uniqueidentifier,
@hospitalno nvarchar(64)=null
 )
AS
BEGIN 
SET NOCOUNT ON;
declare @patname nvarchar(1000)
declare @hisid nvarchar(1000)
declare @idcard nvarchar(1000)
declare @patientid nvarchar(1000)
declare @mk uniqueidentifier
declare @tb as table(mk uniqueidentifier)
declare @modality as nvarchar(100)
SELECT @patname=p.PATNAME,@hisid=p.HISID,@idcard=p.IDCARDNO,@mk=i.SERV_REGNO,@patientid=p.PATIENTID,@modality=o.MODALITY
from R_PATIENT p 
join IMG_SERV_REG i on p.PATIENTNO=i.PATIENTNO 
join REQ_PROC o on o.SERV_REGNO=i.SERV_REGNO where REQ_PROCNO=@REQ_PROCNO
print @patname
print @hisid
print @idcard
print @mk
print @patientid
print @modality
print @patientid
--身份证号
if(@idcard is not null and @idcard<>'' and (LEN(@idcard)=18  or len(@idcard)=15))
begin
--hisid
if(@hisid is not null and @hisid<>'')
begin
insert into @tb
SELECT distinct MERGER_FK FROM V_REPORTLIST  WHERE (PATIENTID=@patientid or IDCARDNO=@idcard  or HISID=@hisid)
end
else
begin
insert into @tb
SELECT distinct MERGER_FK FROM V_REPORTLIST  WHERE (PATIENTID=@patientid or IDCARDNO=@idcard   )
end
end
else
begin
--hisid
if(@hisid is not null and @hisid<>'')
begin
insert into @tb
SELECT distinct MERGER_FK FROM V_REPORTLIST  WHERE (PATIENTID=@patientid or  HISID=@hisid)
end
else
begin
insert into @tb
SELECT distinct MERGER_FK FROM V_REPORTLIST  WHERE (PATIENTID=@patientid   )
end
end
--select * from @tb
select v.*,dbo.GetAllExamitem(v.REQ_PROCNO) AllDirection 
from V_REPORTLIST v 
join @tb b on v.MERGER_FK=b.mk
    left join T_OrderLink l on l.REQ_PROCNO= v.REQ_PROCNO and l.ISSAVE=1
    where  1=1
    and (l.Main_REQ_PROCNO is null or l.REQ_PROCNO=l.Main_REQ_PROCNO)
and  STATUS in ( '已诊断', '已审核', '已终审', '已打印')
and v.REQ_PROCNO <> @REQ_PROCNO and PATNAME=@patname
order by v.STUDY_DATE DESC  
END


强强 2022/12/29 0评论

ASP.NET

WPF 获取程序路径

WPF 获取程序路径的方法


1.Application.ExecutablePath;

获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。


2. AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

获取或设置包含该应用程序的目录的名称。

强强 2022/12/20 0评论

PACS系统安装

三个视图 V_GlobalStudy,V_GLOBALSTUDY_NKJK,V_One_GlobalStudy

三个视图 V_GlobalStudy,V_GLOBALSTUDY_NKJK,V_One_GlobalStudy 

默认SQL语句

现场可以根据语句对应修改。


视图一、V_GlobalStudy

Create VIEW [dbo].[V_GlobalStudy]
AS
SELECT   a.PATIENTNO, a.PATNAME, a.SEX, a.PATIENTID, b.SERV_REGNO, b.PLA_ORD_NUM, a.HISID, c.ACTION_DATE,
                b.ACCESSION_DATE, CASE WHEN b.EXIGENCE = '0' THEN 'false' ELSE 'true' END AS ISEXIGENCE, b.ENROLDOCTOR,
                b.ADM_ID_ISS, b.ADM_ID, b.BedNO, b.PAT_AGE, c.REQ_PROCNO, c.STATUS, c.REQ_PROC_ID, c.MODALITY,
                d.PARTOFCHECK_STAT AS PARTOFCHECK, c.ALLPARTOFCHECK, d.DIRECTION, d.ALLDIRECTION, c.STUDY_DATE,
                d.EXPOSALTIMES, c.STUDY_DATE AS CHECKDATE, a.BIRTHDATE, a.IDCARDNO, a.TELEPHONE, a.ADDRESS,
                d.CHECKDOCTOR, e.REPORTNO, e.REPORTDOCTOR, e.CHIEFDOCTOR, e.PRINTDOCTOR, d.FEE, b.REQ_SERVICE,
			isnull( (select top 1 REPLACE(r.LATERINFO ,CHAR(13) + CHAR(10),' ')  from R_LATERINFO r where r.REQ_PROC_ID=c.REQ_PROC_ID order by r.LATERDATE desc),'')
				 LATINFO,dbo.GetImageNum(c.STUDY_INS_UID) ImageNum,
                b.REQ_PHY_NAME, c.STUDY_INS_UID,   e.CHECKRESULT , CASE SUBSTRING(c.TRACEIDENTIFIER, 1, 1)
                WHEN 'T' THEN 'true' WHEN 'F' THEN 'false' END AS TRACEIDENTIFIER_ZC, CASE SUBSTRING(c.TRACEIDENTIFIER, 2,
                1) WHEN 'T' THEN 'true' WHEN 'F' THEN 'false' END AS TRACEIDENTIFIER_XX, CASE SUBSTRING(c.TRACEIDENTIFIER,
                3, 1) WHEN 'T' THEN 'true' WHEN 'F' THEN 'false' END AS TRACEIDENTIFIER_HZ, e.REPORTID, b.OFDEPARTMENT,
                d.ROOMNO, d.MODALITYNAME, CASE e.masculine WHEN '0' THEN '阴性' WHEN '1' THEN '阳性' END AS MASCULINE,
                c.REQ_PROC_LOC, c.PRINT_STATUS, c.ISMARK, b.TOTALFEE, c.CRITICAL_STATUS,
               dbo.GetReportDate(c.REQ_PROCNO ,e.CONTENT_DATE,b.OFDEPARTMENT) CONTENT_DATE,
               dbo.GetAduitDate(c.REQ_PROCNO ,e.CONTENT_DATE,c.STATUS,c.REQ_PROCNO,e.CHIEFDOCTOR,b.OFDEPARTMENT) AUDITING_DATE, 
						    CASE WHEN e.PRINTDATE IS NULL
                THEN '' WHEN e.PRINTDATE > '1900-01-01 00:00:00' THEN CONVERT(varchar(19), e.PRINTDATE, 121)
                WHEN e.PRINTDATE = '' THEN '' END AS PRINTDATE, e.PREREPORTDOCTOR, e.PRECHIEFDOCTOR, d.FLATORPOWER,
                CASE RIGHT(PAT_AGE, 1) WHEN '岁' THEN CAST(REPLACE(PAT_AGE, RIGHT(PAT_AGE, 1), '') AS INT)
                * 8760 WHEN '月' THEN CAST(REPLACE(PAT_AGE, RIGHT(PAT_AGE, 1), '') AS INT)
                * 720 WHEN '天' THEN CAST(REPLACE(PAT_AGE, RIGHT(PAT_AGE, 1), '') AS INT)
                * 24 WHEN '时' THEN CAST(REPLACE(REPLACE(PAT_AGE, '小', ''), RIGHT(REPLACE(PAT_AGE, '小', ''), 1), '') AS INT)
                ELSE CAST(REPLACE(PAT_AGE, RIGHT(PAT_AGE, 1), '') AS INT) END AS PAT_AGE2, b.FLOORNO, b.LAYERNO,a.MERGER_FK,
                b.REGIONNO, b.DORMITORYNO, e.DiagnoseResult,'' DIAGNOSIS,e.TYPIST, b.REMARK REMARK,'' ADM_ID_SEQ_SERVICE,'' DIRECTIONCODE,case when e.B2='1' then '是' else '否' end B2,
                           b.ACCESSION_NO,
                           case when b.fetch_date is null then b.ACCESSION_DATE
                           else b.fetch_date
                           end fetch_date,b.ADM_ID_INDEX
                            ,dbo.GetMainReqNO(c.REQ_PROCNO ) Main_REQ_PROCNO
						   ,(select top 1 AUDITINGSTARTTIME from R_WORKTINGTIME w where w.REQ_PROCNO=c.REQ_PROCNO) AUDITINGSTARTTIME
						   ,e.InternDOCTOR01,e.InternDOCTOR02,e.InternDOCTOR03,
						   case when   c.IsMultiple='1' then '是'
						   else '否' end Multiple,c.IsMultiple,  c.QueueName QueueText,b.PLA_ORD_NUM OPLA_ORD_NUM,a.HISID DHISID,case when c.ReadDiagnosticFilm = '1' then '是' else '否' end ReadDiagnosticFilmText,e.FollowUp_Flag
						   ,case when e.FollowUp_Flag = '1' then '是' else '否' end FollowUp_FlagText,e.QuaImage,e.QuaReport,b.MOrder,
						   p.SORTFLAG
FROM      dbo.R_PATIENT AS a INNER JOIN
                dbo.IMG_SERV_REG AS b ON a.PATIENTNO = b.PATIENTNO INNER JOIN
                dbo.REQ_PROC AS c ON b.SERV_REGNO = c.SERV_REGNO INNER JOIN
                dbo.REQ_PROC_DETAIL AS d ON c.REQ_PROCNO = d.REQ_PROCNO INNER JOIN
                dbo.GENERAL_REPORT AS e ON c.REQ_PROCNO = e.REQ_PROCNO   
				join DICT_PUBLICINFO p on  b.ADM_ID_ISS  =p.CODENAME    and p.PARENTCODE='999009'               
WHERE   (c.DELETE_SIGN = '1')


强强 2022/12/15 0评论

日常

windows剪切板常见API函数

windows剪切板常见API函数


(一) ChangeClipboardChain  
将剪贴的连接从一个句柄转到下一个句柄。

BOOL ChangeClipboardChain( 
 HWND hWndRemove, // handle to window to remove 
 HWND hWndNewNext // handle to next window 
 );

(1)hWndRemove表 示第一个窗口的句柄(断开)。
(2)hWndNewNext表示第二个窗口的句柄(连接)。
注意,在使用之前应该使用 SetClipboardViewer事先进行窗口句柄的连接。

强强 2022/12/15 0评论