检查日期

<script>  
  function   checkDateInput(obj){  
  if   (obj.value.length==0)   return   false;  
  var   objValue=obj.value.replace(/[-/.]/g,"/");  
  try{  
  var   a=new   Date(objValue);  
  if   (isNaN(a)){  
  obj.value="";  
  alert("注意:/n/n你输入的日期不正确,已被清除!");  
  obj.focus();  
  return   false;  
  }  
  var   b;  
  if   (a.getFullYear()<1900||a.getFullYear()>2200)  
  {var   Today=new   Date();  
  b=Today.getFullYear()+"-"+(a.getMonth()+1)+"-"+a.getDate();  
  }  
  else   if   (a.getFullYear()<1930)  
  b=(a.getFullYear()+100)+"-"+(a.getMonth()+1)+"-"+a.getDate();  
  else   b=a.getFullYear()+"-"+(a.getMonth()+1)+"-"+a.getDate();  
  obj.value=obj.value.replace(/[-/.//]0*/g,"-");  
  if   (b!=obj.value){  
  obj.value=b;  
  alert("注意:/n/n你输入的日期不正确,已进行修改。");  
  obj.select();  
  obj.focus();  
  return   false;  
  }  
  }  
  catch(Exception){  
  obj.value="";  
  alert("注意:/n/n你输入的日期不正确,已被清除!");  
  obj.focus();  
  return   false;  
  }  
  return   true;  
  }  
  </script> 

 

<script LANGUAGE="JavaScript">
function check()
{
  if (document.form.text1.value=="")
    {
     alert("警示:不能为空!")
     document.form.text1.focus()
     document.form.text1.select()
     return
     }
  if (document.form.text2.value=="")
    {
     alert("警示:不能为空!")
     document.form.text2.focus()
     document.form.text2.select()
     return
     }
   document.form.submit()
}
</script>

<think>我们正在讨论DICOM Worklist查询中的日期相关TAG。 在Worklist查询(Modality Worklist)中,常用的日期TAG包括: - (0040,0002) Scheduled Procedure Step Start Date - (0040,0003) Scheduled Procedure Step Start Time - (0040,0004) Scheduled Procedure Step End Date - (0040,0005) Scheduled Procedure Step End Time - (0008,0020) Study Date - (0008,0030) Study Time - (0008,0050) Accession Number (虽然不是日期,但常用于关联) - (0040,0012) Scheduled Procedure Step Start DateTime (在DICOM中,日期和时间也可以组合在一个TAG中,但通常分开存储) 用户可能想通过日期范围来查询预约的工作列表(例如查询某一天或某个时间段的预约)。 在DCMTK的findscu命令行中,可以使用`-k`选项来指定查询条件,例如: `-k ScheduledProcedureStepStartDate=20240101` `-k ScheduledProcedureStepEndDate=20240131` 注意:日期格式为YYYYMMDD,时间格式为HHMMSS(24小时制)。 另外,还可以使用通配符`*`进行模糊查询,或者使用范围查询(通过两次指定不同的条件,但findscu本身不支持运算符,需要服务器支持)。 但是,标准的Worklist查询协议(C-FIND)支持日期范围查询,可以通过以下方式指定: `-k ScheduledProcedureStepStartDate="20240101-20240131"` 或者 `-k ScheduledProcedureStepStartDate="20240101" -k ScheduledProcedureStepStartDate="20240131"`(但这样会变成两个条件,实际上是“或”的关系?不对) 实际上,在DICOM查询中,日期范围查询是使用一个字符串包含两个日期,中间用连字符`-`分隔(注意:服务器必须支持范围匹配)。例如: `-k ScheduledProcedureStepStartDate="20240101-20240131"` 但是,不是所有的Worklist SCP都支持范围查询。如果不支持,可能需要分别查询开始日期和结束日期,然后在客户端过滤。 另外,也可以使用StudyDate检查日期)来查询,因为一次检查可能包含多个步骤,但通常我们更关心步骤的开始日期。 因此,在Worklist查询中,用于检查日期的TAG主要有: - (0040,0002) Scheduled Procedure Step Start Date - (0040,0004) Scheduled Procedure Step End Date - (0008,0020) Study Date 用户可根据实际需求选择。 示例命令: ```bash findscu -v -W -aec SCP_AE -aet CALLING_AE -k ScheduledProcedureStepStartDate="20240101-20240131" -k ScheduledProcedureStepStartTime="" -k Modality=MR server_ip server_port ``` 注意:这里指定了开始日期的范围,同时清除了开始时间的条件(因为范围查询可能只对日期有效,时间需要另外处理),并且只查询MR设备的预约。 如果需要根据检查日期(StudyDate)查询,则替换为: `-k StudyDate="20240101-20240131"` 但是,Worklist中的检查日期(StudyDate)可能没有被填充,具体取决于SCP服务器的实现。通常,使用ScheduledProcedureStepStartDate更为可靠。 关于日期TAG的更多信息,可以参考DICOM标准PS3.3的表A-1(Worklist Information Model)[^1]。 因此,总结如下: - Worklist查询中日期的常用TAG是(0040,0002)和(0040,0004)(用于步骤的开始和结束日期)以及(0008,0020)(检查日期)。 - 在命令行中,使用`-k`参数指定这些TAG,并可以用`-`表示范围(如果服务器支持)。 如果用户需要查询某一天的所有预约,可以直接指定日期: `-k ScheduledProcedureStepStartDate=20240101` 如果需要查询多个日期,可以使用通配符(但通配符不支持日期范围,只能匹配字符串): `-k ScheduledProcedureStepStartDate=202401*` # 查询2024年1月的所有日期(注意:这里是将日期作为字符串匹配,所以`202401*`会匹配20240101, 20240102,...,20240131) 但注意:使用通配符`*`只能匹配字符串,例如`202401*`可以匹配20240101到20240131,但无法匹配20240100(不存在)和20240132(不存在),所以是可行的。 因此,如果服务器不支持范围查询,可以用通配符来匹配月份。 示例:查询2024年1月的预约 ```bash findscu -v -W -aec SCP_AE -aet CALLING_AE -k ScheduledProcedureStepStartDate=202401* server_ip server_port ``` 注意:通配符`*`只能出现在末尾(DICOM的字符串匹配规则),所以不能写成`2024*01`。 综上所述,根据服务器支持情况,可以选择使用范围(用连字符)或通配符来指定日期条件。 </think>### Worklist 查询中的日期检查 TAG 在 DICOM Worklist 查询中,用于检查日期的核心 TAG 主要位于 **Worklist Information Model - FIND (SOP Class UID: `1.2.840.10008.5.1.4.31`)** 模块中。以下是关键日期相关 TAG 及其用法: --- #### **核心日期 TAG** 1. **检查日期和时间** - `(0008,0020) Study Date` - 格式:`YYYYMMDD` - 示例:`20240115` 表示 2024年1月15日 - `(0008,0030) Study Time` - 格式:`HHMMSS.FFFFFF` - 示例:`143000` 表示 14:30:00 2. **预约步骤时间** - `(0040,0002) Scheduled Procedure Step Start Date` - 预约检查的开始日期 - `(0040,0003) Scheduled Procedure Step Start Time` - 预约检查的开始时间 - `(0040,0004) Scheduled Procedure Step End Date` - 预约检查的结束日期(可选) - `(0040,0005) Scheduled Procedure Step End Time` - 预约检查的结束时间(可选) 3. **患者相关日期** - `(0010,0030) Patient's Birth Date` - 患者出生日期(用于年龄验证) - `(0038,0300) Current Patient Location` - 包含日期时间信息(如 `ICU/20240115`) --- #### **查询示例** 1. **查询特定日期的预约** ```bash findscu -W -aec WORKLIST_SCP \ -k ScheduledProcedureStepStartDate=20240115 \ -k ScheduledProcedureStepStartTime="" \ server_ip server_port ``` 2. **查询日期范围**(需服务器支持范围语法) ```bash findscu -W -aec WORKLIST_SCP \ -k ScheduledProcedureStepStartDate="20240101-20240131" \ server_ip server_port ``` 3. **组合查询(日期+患者)** ```bash findscu -W -aec WORKLIST_SCP \ -k PatientName="张*" \ -k ScheduledProcedureStepStartDate=20240115 \ server_ip server_port ``` --- #### **注意事项** 1. **日期格式必须精确** - 使用 `YYYYMMDD` 格式,**不可包含分隔符**(如 `2024-01-15` 无效) - 时间格式为 `HHMMSS`(秒数可省略) 2. **通配符使用** - `*` 只允许在末尾:`202401*`(查询2024年1月所有日期) - 不支持开头/中间通配符:`*0115` 或 `2024*15` 无效 3. **服务器支持差异** - 部分 Worklist SCP 支持范围查询 `"FROM-TO"` - 部分仅支持精确匹配(需客户端过滤结果) 4. **时区处理** - DICOM 默认使用 UTC 时间 - 需确保服务器/客户端时区配置一致 > ⚠️ 重要提示:实际支持的 TAG 取决于 Worklist SCP 实现,建议通过 `dcmqr` 工具查看服务器的属性支持列表[^1]。 --- #### **相关规范参考** | TAG | 名称 | VR类型 | 标准模块 | |-----------------|-----------------------------------|--------|---------------------| | (0008,0020) | Study Date | DA | General Study | | (0008,0030) | Study Time | TM | General Study | | (0040,0002) | Scheduled Proc. Step Start Date | DA | Scheduled Procedure | | (0040,0003) | Scheduled Proc. Step Start Time | TM | Scheduled Procedure | | (0010,0030) | Patient's Birth Date | DA | Patient | 数据来源:DICOM 标准 PS3.3 - Annex A.1[^2] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值