o
    i                   	   @   s   U d Z ddlZddlmZ ddlmZ ddlmZmZ dej	ddfdd	Z
d
ejddfddZdededB fddZdededB fddZdededB fddZeddddddeeg	ZeeegedB f eB  ed< deddfddZdS )z9Pydicom command line interface program for `pydicom show`    N)Callable)Dataset)filespec_helpfilespec_parser
subparsersreturnc                 C   sd   | j ddd}|jdttd |jdddd	d
 |jdddd	d
 |jdddd	d
 |jtd d S )Nshowz#Display all or part of a DICOM file)descriptionfilespec)helptypez-xz--exclude-privatez Don't show private data elements
store_true)r   actionz-tz--topzOnly show top levelz-qz--quietzOnly show basic information)func)
add_parseradd_argumentr   r   set_defaults
do_command)r   	subparser r   F/mnt/sdb/aimis/docanh/lib/python3.10/site-packages/pydicom/cli/show.pyadd_subparser   s(   r   argsc                 C   s   t | jdkrtd| jd \}}|s|}| jr|  | jr+t|tr+t| d S | j	r;t|tr;t
|	  d S t
t| d S )N   z/Show can only work on a single DICOM file inputr   )lenr
   NotImplementedErrorexclude_privateremove_private_tagsquiet
isinstancer   
show_quiettopprintstr)r   dselement_valr   r   r   r   #   s   r   r$   c                 C   s"   |  d}|d u rd S d|j S )NSOPClassUIDzSOPClassUID: )getname)r$   	class_uidr   r   r   SOPClassname6   s   
r*   c                 C   s:  d| vrd S |  d}|  d}d| d}|r|d| 7 }|g}d| v r| jD ]e}| dd	}| d
d	}| d}|rC| dnd	}	|d| d| d|	  | d}
|d|
  |jD ]*}| d}| d}| d}d| d}|s~|r|d| d| 7 }|| qcq)| jD ]}| d}| d}| d}| d}| d}d| d| d| d| d| 
}|dkr|jd  }|r| d!}| d"}| d#}| d$}|d%| d&| d'| d(| 7 }| d)}| d*}| d+}| d,}|d-| d.| d/| d0| d1	7 }|| qd2|S )3NBeamSequenceRTPlanLabel
RTPlanNamezPlan Label: z  zPlan Name: FractionGroupSequenceFractionGroupNumber FractionGroupDescriptionNumberOfFractionsPlannedz fraction(s) plannedzFraction Group  NumberOfBrachyApplicationSetupsz   Brachy Application Setups: ReferencedBeamNumberBeamDoseBeamMetersetz   Beam zDose z
 Meterset 
BeamNumberBeamNameBeamTypeTreatmentDeliveryTypeRadiationTypezBeam z 'z' STATICr   NominalBeamEnergyGantryAngleBeamLimitingDeviceAnglePatientSupportAnglez energy z gantry z, coll z, couch NumberOfWedgesNumberOfCompensatorsNumberOfBoliNumberOfBlocksz (z	 wedges, z comps, z boli, z blocks)
)r'   r.   appendReferencedBeamSequencer+   ControlPointSequencejoin)r$   
plan_label	plan_namelinelinesfraction_groupfraction_group_numdescr	fractionsfxn_info
num_brachy	refd_beamref_numdosemubeambeam_num	beam_name	beam_typebeam_deliverybeam_radtypecpenergygantrybldcouchwedgescompsboliblocksr   r   r   quiet_rtplan=   sj   









	









 



"
rh   c                    s4   d vs
d j jvrd S  fdddD }d|S )Nr&   zImage Storagec                    s"   g | ]}| d   |d qS ): N/A)r'   ).0r(   r$   r   r   
<listcomp>~   s    zquiet_image.<locals>.<listcomp>)
BitsStoredModalityRowsColumnsSliceLocationrF   )r&   r(   rJ   )r$   resultsr   rl   r   quiet_imagez   s   


rt   PatientName	PatientIDStudyID	StudyDate	StudyTimeStudyDescriptionquiet_itemsc                 C   sF   t D ]}t|r|| }|rt| qt| d| |d  qd S )Nri   rj   )r{   callabler"   r'   )r$   itemresultr   r   r   r       s   r    )__doc__argparsecollections.abcr   pydicom.datasetr   pydicom.cli.mainr   r   _SubParsersActionr   	Namespacer   r#   r*   rh   rt   r{   list__annotations__r    r   r   r   r   <module>   s*   ="