title: how to add transfer syntax uid to the filemeta of dataset
body: <p>I use pydicom library to generate .dcm files using the datasets coming from the CT and MRI machines, however in that dataset, the tag (0002,0010) is missing. As I dont have that tag, I am not able to detect the transfer syntax whether it is implicit VR little endian, explicit VR little endian,  jpeg lossless etc. I need the transfer syntax for saving the dataset with flags like below</p>
  
  <pre><code>    ds.is_little_endian = True
      ds.is_implicit_VR = False
      ds.file_meta.TransferSyntaxUID = JPEGLossless
      ds.is_explicit_VR = True  etc
  </code></pre>
  
  <p>If I dont use the above flags, then the dcm file that is generated will not be valid as there is no transfer syntax.
  Since I dont know the transfer syntax, I am sending the transfer syntax in command line arguments when I run the program, and setting the above flags accordingly, and saving the dataset. I know this is wrong method but I just used it as a temporary solution. Is there any better way to detect the transfer syntax please as  the tag (0002, 0010) is missing.
   Below is my code that I use for saving the dcm file using the dataset coming from the CT machine. For now i am sending the transfer syntax as command line argument</p>
  
  <pre><code>from pynetdicom3 import AE, VerificationPresentationContexts,      StoragePresentationContexts, QueryRetrievePresentationContexts
  from pydicom.uid import ImplicitVRLittleEndian, ExplicitVRLittleEndian, JPEGLossless
  from pynetdicom3.sop_class import CTImageStorage, MRImageStorage
  from pynetdicom3 import pynetdicom_uid_prefix
  from pydicom.dataset import Dataset, FileDataset
  
  
  import argparse
  
  import uuid
  import os
  import django
  import logging
  
  ttt = []
  ttt.extend(VerificationPresentationContexts)
  ttt.extend(StoragePresentationContexts)
  ttt.extend(QueryRetrievePresentationContexts)
  
  
  os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lh_dcm_viewer.settings')
  django.setup()
  
  
  
  from dcm_app.models import DCMFile, DCMFileException
  
  def _setup_argparser():
  
  
  parser = argparse.ArgumentParser(
      description="The getscp application implements a Service Class "
                  "Provider (SCP) for the Query/Retrieve (QR) Service Class "
                  "and the Basic Worklist Management (BWM) Service Class. "
                  "getscp only supports query functionality using the C-GET "
                  "message. It receives query keys from an SCU and sends a "
                  "response. The application can be used to test SCUs of the "
                  "QR and BWM Service Classes.",
      usage="getscp [options] port")
  
  # Parameters
  
  # Transfer Syntaxes
  ts_opts = parser.add_argument_group('Preferred Transfer Syntaxes')
  ts_opts.add_argument("--type",
                       help="prefer explicit VR local byte order (default)")
  ts_opts.add_argument("--detect_transfer_syntax",
                       help="Detect transfer syntax")
  ts_opts.add_argument("--port",
                       help="port at which the SCP listens")
  
  
  
  return parser.parse_args()
  
  
  args = _setup_argparser()
  
  
  ae = AE(ae_title=b'MY_ECHO_SCP', port=int(args.port))
  
     if args.type == "jpeg_lossless":
  ae.add_supported_context('1.2.840.10008.1.2.4.57')
     elif args.type == "implicit":
  ae.add_supported_context('1.2.840.10008.1.2')
  print("ImplicitVRLittleEndian")
     elif args.type == "explicit":
  ae.add_supported_context('1.2.840.10008.1.2.1')
  
  
  ae.requested_contexts = ttt
  ae.supported_contexts = ttt
  DICOM_IP = '192.168.1.11'
  DICOM_IP = '127.0.0.1'
  DICOM_PORT = 5678
  
  
  
  def save_file(dataset, context, info):
  
  
  try:
  
      random_str = uuid.uuid4().hex
      meta = Dataset()
      meta.MediaStorageSOPClassUID = dataset.SOPClassUID
      meta.MediaStorageSOPInstanceUID = dataset.SOPInstanceUID
      meta.ImplementationClassUID = pynetdicom_uid_prefix
      meta.FileMetaInformationGroupLength = 202
  
  
      received_file_path = "../received_dcms/%s.dcm" % random_str
  
      dataset_vr = None
      try:
          dataset_vr = dataset[("6000", "3000")].VR
      except KeyError:
          pass
  
      print(dataset_vr)
  
      if args.type == "implicit" or dataset_vr == "OB or OW":
  
  
          ds = FileDataset(received_file_path, {}, file_meta=meta, preamble=b"\0" * 128)
          ds.update(dataset)
          ds.is_little_endian = True
          ds.is_implicit_VR = True
  
          if(dataset_vr == "OB or OW"):
              print("forced ImplicitVRLittleEndian")
  
          ds.file_meta.TransferSyntaxUID = ImplicitVRLittleEndian
      elif args.type == "jpeg_lossless":
          ds = FileDataset(received_file_path, {}, file_meta=meta, preamble=b"\0" * 128)
          ds.update(dataset)
          ds.is_little_endian = True
          ds.is_implicit_VR = False
          ds.file_meta.TransferSyntaxUID = JPEGLossless
          ds.is_explicit_VR = True
      elif args.type == "explicit":
          meta.TransferSyntaxUID = "1.2.840.10008.1.2.1"
  
          ds = FileDataset(received_file_path, {}, file_meta=meta, preamble=b"\0" * 128)
          ds.update(dataset)
          ds.is_little_endian = True
  
          ds.is_implicit_VR = False
          ds.file_meta.TransferSyntaxUID = ExplicitVRLittleEndian
          ds.is_explicit_VR = True
  
      ds.save_as(received_file_path)
  
      f = open(received_file_path, "rb")
  
      f.close()
  
      return 0XC200
      return status
  except Exception as e:
  
      logger.error(e)
  
  
  
  ae.on_c_store = save_file
  ae.start()
  </code></pre>