Beispiel #1
0
    //捡起物品
    public void PickUpObs(Transform obj, ObsType obType)
    {
        //TurnAt(obj);
        if (playAnmtr.GetBool("isHoldObs") == false)
        {
            playCh.TurnAtRightNow(obj); //转向物体
            playCh.DisableMove();
            Invoke("EnableMove", 1.4f); //一定时间后启用移动

            playAnmtr.SetTrigger("isPickUpObs");
            playAnmtr.SetBool("isHoldObs", true);
            Destroy(obj.gameObject, 0.5f);//销毁场景中的该物体
            Invoke("SetObsAlive", 0.5f);

            //记录
            CurrentObsType = obType;
            objName        = obj.GetComponent <MoveableObj>().objName;
        }

        //量词
        string c = null;

        switch (obType)
        {
        case ObsType.Cube:
            c = "个";
            break;

        case ObsType.Stone:
            c = "块";
            break;

        case ObsType.Wood:
            c = "棵";
            break;

        default:
            c = null;
            break;
        }

        picked = true;
        GameManager.Instance.Tip("拿起一" + c + objName);
    }
Beispiel #2
0
        public static GenericDataType createGenericData(PXModel model)
        {
            DataSetType ds = new DataSetType();

            ds.KeyFamilyRef = model.Meta.Matrix.CleanID();

            DataIndexer di = new DataIndexer(model.Meta);

            // Get all table level notes (this includes notes for variables)
            List <AnnotationType> dsAnnotations = new List <AnnotationType>();

            if (model.Meta.Notes != null)
            {
                dsAnnotations.AddRange(model.Meta.Notes.ToSDMXAnnotation());
            }
            foreach (Variable var in model.Meta.Stub)
            {
                if (var.Notes != null)
                {
                    dsAnnotations.AddRange(var.Notes.ToSDMXAnnotation());
                }
            }
            foreach (Variable var in model.Meta.Heading)
            {
                if (var.Notes != null)
                {
                    dsAnnotations.AddRange(var.Notes.ToSDMXAnnotation());
                }
            }

            if (dsAnnotations.Count > 0)
            {
                ds.Annotations = dsAnnotations.ToArray();
            }

            if (model.Meta.ContentVariable == null)
            {
                List <org.sdmx.ValueType> dsAtts = new List <org.sdmx.ValueType>();

                if (model.Meta.ContentInfo != null)
                {
                    // Unit of measure
                    {
                        org.sdmx.ValueType att = new org.sdmx.ValueType();
                        att.concept = "UNIT_MEASURE";
                        att.value   = model.Meta.ContentInfo.Units;
                        dsAtts.Add(att);
                    }
                    // Decimals
                    {
                        org.sdmx.ValueType att = new org.sdmx.ValueType();
                        att.concept = "DECIMALS";
                        att.value   = model.Meta.Decimals.ToString();
                        dsAtts.Add(att);
                    }

                    // Stock/flow/average indicator
                    if (model.Meta.ContentInfo.StockFa != null)
                    {
                        org.sdmx.ValueType att = new org.sdmx.ValueType();
                        att.concept = "SFA_INDICATOR";
                        att.value   = model.Meta.ContentInfo.StockFa;
                        dsAtts.Add(att);
                    }

                    // Seasonal adjustement
                    if (model.Meta.ContentInfo.SeasAdj != null)
                    {
                        org.sdmx.ValueType att = new org.sdmx.ValueType();
                        att.concept = "SEAS_ADJ";
                        att.value   = model.Meta.ContentInfo.SeasAdj;
                        dsAtts.Add(att);
                    }

                    // Daily adjustment
                    if (model.Meta.ContentInfo.DayAdj != null)
                    {
                        org.sdmx.ValueType att = new org.sdmx.ValueType();
                        att.concept = "DAY_ADJ";
                        att.value   = model.Meta.ContentInfo.DayAdj;
                        dsAtts.Add(att);
                    }

                    // Base period
                    if (model.Meta.ContentInfo.Baseperiod != null)
                    {
                        org.sdmx.ValueType att = new org.sdmx.ValueType();
                        att.concept = "BASE_PER";
                        att.value   = model.Meta.ContentInfo.Baseperiod;
                        dsAtts.Add(att);
                    }

                    // Reference period
                    if (model.Meta.ContentInfo.RefPeriod != null)
                    {
                        org.sdmx.ValueType att = new org.sdmx.ValueType();
                        att.concept = "REF_PERIOD";
                        att.value   = model.Meta.ContentInfo.RefPeriod;
                        dsAtts.Add(att);
                    }

                    // Current / fixed prices
                    if (model.Meta.ContentInfo.CFPrices != null)
                    {
                        org.sdmx.ValueType att = new org.sdmx.ValueType();
                        att.concept = "PRICE_BASIS";
                        att.value   = model.Meta.ContentInfo.CFPrices;
                        dsAtts.Add(att);
                    }
                }

                ds.Attributes = dsAtts.ToArray();
            }


            ds.Items = new Object[model.Data.MatrixRowCount];
            for (int i = 0; i < model.Data.MatrixRowCount; i++)
            {
                SeriesType series = new SeriesType();
                series.SeriesKey = new org.sdmx.ValueType[model.Meta.Stub.Count + 1];

                org.sdmx.ValueType key = new org.sdmx.ValueType();
                key.concept = "FREQ";

                switch (model.Meta.Heading[0].TimeScale)
                {
                case TimeScaleType.Annual:
                    key.value = "A";
                    break;

                case TimeScaleType.Halfyear:
                    key.value = "B";
                    break;

                case TimeScaleType.Monthly:
                    key.value = "M";
                    break;

                case TimeScaleType.Quartely:
                    key.value = "Q";
                    break;

                case TimeScaleType.Weekly:
                    key.value = "W";
                    break;

                default:
                    //TODO
                    break;
                }
                series.SeriesKey[0] = key;
                di.SetContext(i, 0);
                // Create annotations based on value notes (not variable notes)
                List <AnnotationType> serAnnotations = new List <AnnotationType>();
                for (int j = 0; j < model.Meta.Stub.Count; j++)
                {
                    key                     = new org.sdmx.ValueType();
                    key.concept             = model.Meta.Stub[j].Name.CleanID();
                    key.value               = model.Meta.Stub[j].Values[di.StubIndecies[j]].Code.CleanID();
                    series.SeriesKey[j + 1] = key;
                    if (model.Meta.Stub[j].Values[di.StubIndecies[j]].Notes != null)
                    {
                        serAnnotations.AddRange(model.Meta.Stub[j].Values[di.StubIndecies[j]].Notes.ToSDMXAnnotation());
                    }
                }
                if (serAnnotations.Count > 0)
                {
                    series.Annotations = serAnnotations.ToArray();
                }

                series.Obs = new ObsType[model.Data.MatrixColumnCount];
                //Added code for reading the cellnotes
                DataFormatter formatter = new DataFormatter(model);
                for (int j = 0; j < model.Data.MatrixColumnCount; j++)
                {
                    string  notes = null;
                    ObsType obs   = new ObsType();

                    // Set observation time
                    obs.Time = model.Meta.Heading[0].Values[j].ToSDMXTime();

                    Boolean missing = PXConstant.ProtectedNullValues.Contains(model.Data.ReadElement(i, j)) || PXConstant.ProtectedValues.Contains(model.Data.ReadElement(i, j));
                    //Create observation status attribute
                    org.sdmx.ValueType status = new org.sdmx.ValueType();
                    status.concept = "OBS_STATUS";

                    obs.Attributes    = new org.sdmx.ValueType[1];
                    obs.Attributes[0] = status;

                    // Set observation value and status code
                    if (!missing)
                    {
                        obs.ObsValue                = new ObsValueType();
                        obs.ObsValue.value          = model.Data.ReadElement(i, j);
                        obs.ObsValue.valueSpecified = true;
                        status.value                = "A";
                    }
                    else
                    {
                        status.value = "M";
                    }


                    // Cell notes
                    formatter.ReadElement(i, j, ref notes);

                    if (notes != null && notes.Length != 0)
                    {
                        AnnotationType  annotation     = new AnnotationType();
                        List <TextType> annotationText = new List <TextType>();
                        TextType        text           = new TextType();
                        text.lang  = "en";
                        text.Value = notes;
                        annotationText.Add(text);
                        annotation.AnnotationText = annotationText.ToArray();
                        obs.Annotations           = new AnnotationType[1];
                        obs.Annotations[0]        = annotation;
                    }


                    series.Obs[j] = obs;
                }

                if (model.Meta.ContentVariable != null)
                {
                    List <org.sdmx.ValueType> serAtts = new List <org.sdmx.ValueType>();

                    if (model.Meta.ContentInfo != null)
                    {
                        // Unit of measure
                        {
                            org.sdmx.ValueType att = new org.sdmx.ValueType();
                            att.concept = "UNIT_MEASURE";
                            int cIndex = model.Meta.Stub.GetIndexByCode(model.Meta.ContentVariable.Code);
                            att.value = model.Meta.ContentVariable.Values[di.StubIndecies[cIndex]].ContentInfo.Units;
                            serAtts.Add(att);
                        }
                        // Stock/flow/average indicator
                        if (model.Meta.ContentInfo.StockFa != null)
                        {
                            org.sdmx.ValueType att = new org.sdmx.ValueType();
                            att.concept = "SFA_INDICATOR";
                            int cIndex = model.Meta.Stub.GetIndexByCode(model.Meta.ContentVariable.Code);
                            att.value = model.Meta.ContentVariable.Values[di.StubIndecies[cIndex]].ContentInfo.StockFa;
                            serAtts.Add(att);
                        }

                        // Seasonal adjustement
                        if (model.Meta.ContentInfo.SeasAdj != null)
                        {
                            org.sdmx.ValueType att = new org.sdmx.ValueType();
                            att.concept = "SEAS_ADJ";
                            int cIndex = model.Meta.Stub.GetIndexByCode(model.Meta.ContentVariable.Code);
                            att.value = model.Meta.ContentVariable.Values[di.StubIndecies[cIndex]].ContentInfo.SeasAdj;
                            serAtts.Add(att);
                        }

                        // Daily adjustment
                        if (model.Meta.ContentInfo.DayAdj != null)
                        {
                            org.sdmx.ValueType att = new org.sdmx.ValueType();
                            att.concept = "DAY_ADJ";
                            int cIndex = model.Meta.Stub.GetIndexByCode(model.Meta.ContentVariable.Code);
                            att.value = model.Meta.ContentVariable.Values[di.StubIndecies[cIndex]].ContentInfo.DayAdj;
                            serAtts.Add(att);
                        }

                        // Base period
                        if (model.Meta.ContentInfo.Baseperiod != null)
                        {
                            org.sdmx.ValueType att = new org.sdmx.ValueType();
                            att.concept = "BASE_PER";
                            int cIndex = model.Meta.Stub.GetIndexByCode(model.Meta.ContentVariable.Code);
                            att.value = model.Meta.ContentVariable.Values[di.StubIndecies[cIndex]].ContentInfo.Baseperiod;
                            serAtts.Add(att);
                        }

                        // Reference period
                        if (model.Meta.ContentInfo.RefPeriod != null)
                        {
                            org.sdmx.ValueType att = new org.sdmx.ValueType();
                            att.concept = "REF_PERIOD";
                            int cIndex = model.Meta.Stub.GetIndexByCode(model.Meta.ContentVariable.Code);
                            att.value = model.Meta.ContentVariable.Values[di.StubIndecies[cIndex]].ContentInfo.RefPeriod;
                            serAtts.Add(att);
                        }

                        // Current / fixed prices
                        if (model.Meta.ContentInfo.CFPrices != null)
                        {
                            org.sdmx.ValueType att = new org.sdmx.ValueType();
                            att.concept = "PRICE_BASIS";
                            int cIndex = model.Meta.Stub.GetIndexByCode(model.Meta.ContentVariable.Code);
                            att.value = model.Meta.ContentVariable.Values[di.StubIndecies[cIndex]].ContentInfo.CFPrices;
                            serAtts.Add(att);
                        }
                    }
                    series.Attributes = serAtts.ToArray();
                }

                ds.Items[i] = series;
            }

            GenericDataType message = new GenericDataType();

            message.DataSet = ds;
            message.Header  = createHeader(model, true);

            return(message);
        }
        public void InsertDHACopyClaims(string FilePath, long Sys_File_Source)
        {
            string   ClaimID, ClaimIDPayer, ClaimMemberID, ClaimPayerID, ClaimProviderID, ClaimEmiratesIDNumber;
            double   ClaimGross, ClaimPatientShare, ClaimNet;
            string   EncounterFacilityID = "", EncounterType = "", EncounterPatientID = "", EncounterStartType = "", EncounterEndType = "", EncounterTransferSource = "", EncounterTransferDestination = "";
            DateTime EncounterStart = DateTime.Now, EncounterEnd = DateTime.Now;

            DataSet ds           = new DataSet();
            DAL     _da          = new DAL();
            string  xmlString = System.IO.File.ReadAllText(FilePath);

            xmlString = EscapeXMLValue(xmlString);
            TextReader txtReader = new StringReader(xmlString);
            XmlReader  reader    = new XmlTextReader(txtReader);

            ds.ReadXml(reader);

            DataTable header = ds.Tables["Header"];

            #region Header
            string   SenderID        = header.Rows[0]["SenderID"].ToString();
            string   ReceiverID      = header.Rows[0]["ReceiverID"].ToString();
            DateTime TransactionDate = ValueHandler.ToClaimDate(header.Rows[0]["TransactionDate"]);
            long     RecordCount     = Convert.ToInt32(header.Rows[0]["RecordCount"]);
            string   DispositionFlag = header.Rows[0]["DispositionFlag"].ToString();
            #endregion

            long Sys_Claim_ID = _da.ExecuteScalar("Select nvl(max(SYS_CLAIM_ID),0)+1 from ECLAIMS");

            #region Claims
            foreach (DataRow claim in ds.Tables["Claim"].Rows)
            {
                try
                {
                    ClaimID = claim["ID"].ToString();
                    try
                    {
                        ClaimIDPayer = claim["IDPayer"].ToString();
                    }
                    catch
                    {
                        ClaimIDPayer = claim["PayerID"].ToString();
                    }
                    ClaimMemberID         = claim["MemberID"].ToString();
                    ClaimPayerID          = claim["PayerID"].ToString();
                    ClaimProviderID       = claim["PayerID"].ToString();
                    ClaimEmiratesIDNumber = claim["EmiratesIDNumber"].ToString();
                    ClaimGross            = Convert.ToDouble(claim["Gross"].ToString());
                    ClaimPatientShare     = Convert.ToDouble(claim["PatientShare"].ToString());
                    ClaimNet = Convert.ToDouble(claim["Net"].ToString());

                    #region Encounter
                    foreach (DataRow Encounter in claim.GetChildRows("Claim_Encounter"))
                    {
                        EncounterFacilityID = Encounter["FacilityID"].ToString();
                        EncounterType       = Encounter["Type"].ToString();
                        EncounterPatientID  = Encounter["PatientID"].ToString();
                        EncounterStart      = ValueHandler.ToClaimDate(claim["Start"].ToString());
                        try
                        {
                            EncounterEnd = ValueHandler.ToClaimDate(claim["End"].ToString());
                        }
                        catch
                        {
                        }
                        try
                        {
                            EncounterStartType = Encounter["StartType"].ToString();
                        }
                        catch
                        {
                        }
                        try
                        {
                            EncounterEndType = Encounter["EndType"].ToString();
                        }
                        catch
                        {
                        }
                        try
                        {
                            EncounterTransferSource = Encounter["TransferSource"].ToString();
                        }
                        catch
                        {
                        }
                        try
                        {
                            EncounterTransferDestination = Encounter["TransferDestination"].ToString();
                        }
                        catch
                        {
                        }
                    }
                    #endregion

                    string ProviderTypeFK    = @"SELECT NVL(PROVIDERTYPE,2)  FROM  TABLE(SF_GETCLAIMPROVIDER_FNC('" + SenderID + "'))";
                    int    ClaimProviderType = Convert.ToInt32(_da.ExecuteScalar(ProviderTypeFK));

                    string cmd1 = " INSERT INTO ECLAIMS (SYS_CLAIM_ID,SENDER_ID, RECEIVER_ID, TRANSACTION_DATE, DISPOSITION_FLAG, CLAIM_ID, ID_PAYER, MEMBER_ID, " +
                                  " PAYER_ID, PROVIDER_ID, EMIRATES_ID_NUMBER,CLAIM_GROSS, CLAIM_PATIENT_SHARE, CLAIM_NET, ENCOUNTER_FACILITY_ID, ENCOUNTER_FACILITY_TYPE, " +
                                  " ENCOUNTER_PATIENT_ID, ENCOUNTER_START, ENCOUNTER_END, ENCOUNTER_START_TYPE, ENCOUNTER_END_TYPE, ENCOUNTER_TRANSFER_SOURCE, " +
                                  " ENCOUNTER_TRANSFER_DESTINATION, SYS_CLAIM_STATUS, SYS_CLAIM_SOURCE, PROVIDERTYPE, CEEDSTATUS) " +
                                  " VALUES (" + Sys_Claim_ID + ",'" + SenderID + "','" + ReceiverID + "',to_date('" + TransactionDate.ToShortDateString() + "','mm-dd-yyyy'),'" + DispositionFlag + "','" + ClaimID + "','" + ClaimIDPayer + "','" + ClaimMemberID + "', " +
                                  " '" + ClaimPayerID + "','" + ClaimProviderID + "','" + ClaimEmiratesIDNumber + "'," + ClaimGross + "," + ClaimPatientShare + "," + ClaimNet + ",'" + EncounterFacilityID + "', '" + EncounterType + "' " +
                                  " '" + EncounterPatientID + "',to_date('" + EncounterStart.ToShortDateString() + " " + EncounterStart.ToLongTimeString() + "','mm-dd-yyyy HH:MI:SS AM'),to_date('" + EncounterEnd.ToShortDateString() + " " + EncounterEnd.ToLongTimeString() + "','mm-dd-yyyy HH:MI:SS AM'),'" + EncounterStartType + "','" + EncounterEndType + "','" + EncounterTransferSource + "', " +
                                  " '" + EncounterTransferDestination + "',277," + Sys_File_Source + "," + ClaimProviderType + ",0)";
                    string Result = _da.ExecuteQuery(cmd1);

                    #region Diagnosis
                    foreach (DataRow diag in claim.GetChildRows("Claim_Diagnosis"))
                    {
                        long   Sys_Diag_ID = _da.ExecuteScalar("Select nvl(max(SYS_Diagnosis_ID),0)+1 from Eclaim_Diagnosis");
                        string DiagnosisType, DiagnosisCode, DxInfoType = "", DxInfoCode = "";
                        DiagnosisType = diag["Type"].ToString();
                        DiagnosisCode = diag["Code"].ToString();
                        string cmd2 = "Insert Into Eclaim_Diagnosis (SYS_Diagnosis_ID,Sys_Claim_ID,Diagnosis_Type,Diagnosis_Code) Values " +
                                      "(" + Sys_Diag_ID + "," + Sys_Claim_ID + ",'" + DiagnosisType + "','" + DiagnosisCode + "')";
                        Result = _da.ExecuteQuery(cmd2);
                    }
                    #endregion

                    #region Activity
                    foreach (DataRow act in claim.GetChildRows("Claim_Activity"))
                    {
                        long     Sys_Act_ID = _da.ExecuteScalar("Select nvl(max(SYS_Activity_ID),0)+1 from Eclaim_Activities");
                        string   ActivityID, ActivityType, ActivityCode, ActivityClinician = "", ActivityPriorAuthorizationID = "", ActivityOrderingClinician = "";
                        double   ActivityQty, ActivityNet;
                        DateTime ActivityStart;
                        ActivityID    = act["ID"].ToString();
                        ActivityStart = ValueHandler.ToClaimDate(claim["Start"].ToString());
                        ActivityType  = act["Type"].ToString();
                        ActivityCode  = act["Code"].ToString();
                        ActivityQty   = (Convert.ToDouble(act["Quantity"].ToString()));
                        ActivityNet   = Convert.ToDouble(act["Net"].ToString());
                        try
                        {
                            ActivityClinician = act["Clinician"].ToString();
                        }
                        catch
                        {
                        }
                        try
                        {
                            ActivityPriorAuthorizationID = act["PriorAuthorizationID"].ToString();
                        }
                        catch
                        {
                        }
                        try
                        {
                            ActivityOrderingClinician = (act["OrderingClinician"].ToString());
                        }
                        catch
                        {
                        }
                        string cmd3 = "Insert Into Eclaim_Activities (Sys_Activity_Id,Sys_Claim_ID,Activity_ID,Activity_Start,Activity_Type,Activity_Code, " +
                                      " Quantity,Activity_Net,Clinician,Prior_Authorization_Id,OrderingClinician) Values " +
                                      "(" + Sys_Act_ID + "," + Sys_Claim_ID + ",'" + ActivityID + "',to_date('" + ActivityStart.ToShortDateString() + " " + ActivityStart.ToLongTimeString() + "','mm-dd-yyyy HH:MI:SS AM') , " +
                                      " '" + ActivityType + "','" + ActivityCode + "'," + ActivityQty + "," + ActivityNet + ",'" + ActivityClinician + "','" + ActivityPriorAuthorizationID + "','" + ActivityOrderingClinician + "')";
                        Result = _da.ExecuteQuery(cmd3);

                        #region Activity Observation
                        foreach (DataRow observ in act.GetChildRows("Activity_Observation"))
                        {
                            long   Sys_Obs_ID = _da.ExecuteScalar("select NVL(Max(Sys_Observation_ID),0) from ACTIVITY_OBSERVATIONS");
                            string ObsType, ObsCode = "", ObsValue = "", ObsValueType;
                            ObsType      = observ["Type"].ToString();
                            ObsValueType = observ["ValueType"].ToString();
                            if (string.IsNullOrEmpty(ObsType))
                            {
                                ObsType = ObsType.Replace("'", "");
                            }
                            if (string.IsNullOrEmpty(observ["Code"].ToString()))
                            {
                                ObsCode = observ["Code"].ToString().Replace("'", "");
                            }
                            if (string.IsNullOrEmpty(ObsValueType))
                            {
                                ObsValueType = ObsValueType.Replace("'", "");
                            }
                            if (ObsType == "File")
                            {
                                string filename = ConfigurationSettings.AppSettings["ClaimObservation"].ToString() + "\\" + Guid.NewGuid().ToString() + "." + ObsValueType;
                                WriteObservationAttachment(filename, observ["Value"].ToString());
                                ObsValue = filename;
                            }
                            string cmd4 = "Insert Into ACTIVITY_OBSERVATIONS (Sys_Observation_ID,Sys_Activity_ID,Observation_Type,Observation_Code, " +
                                          " ValueType,Value) Values " +
                                          " (" + Sys_Obs_ID + "," + Sys_Act_ID + ",'" + ObsType + "','" + ObsCode + "','" + ObsValueType + "','" + ObsValue + "')";
                            Result = _da.ExecuteQuery(cmd4);
                        }
                        #endregion
                    }
                    #endregion

                    #region Resubmission
                    foreach (DataRow resub in claim.GetChildRows("Claim_Resubmission"))
                    {
                        string ResubType, ResubComment;
                        ResubType    = resub["Type"].ToString();
                        ResubComment = resub["Comment"].ToString();
                        Result       = _da.ExecuteQuery("Update Eclaims Set Resubmission_type = '" + ResubType + "',Resubmission_Comment = '" + ResubComment + "',ISResubmission = 1 Where Sys_Claim_ID = " + Sys_Claim_ID);
                        try
                        {
                            if (resub["Attachment"].ToString() != string.Empty)
                            {
                                string PDFFilePath = ConfigurationSettings.AppSettings["ResubmissionClaims"].ToString();
                                if (!Directory.Exists(PDFFilePath))
                                {
                                    Directory.CreateDirectory(PDFFilePath);
                                }
                                try
                                {
                                    string AttachmentPath  = PDFFilePath + "\\" + claim["ID"].ToString() + ".pdf";
                                    byte[] toEncodeAsBytes = System.Convert.FromBase64String(resub["Attachment"].ToString());
                                    File.WriteAllBytes(AttachmentPath, toEncodeAsBytes);
                                }

                                catch
                                {
                                }
                            }
                        }
                        catch
                        {
                        }
                    }
                    #endregion
                }
                catch
                {
                }
            }
            #endregion
        }
Beispiel #4
0
 private void SetInnerType(ObsType ContentField) {
     this.ContentField = ((ObsType)(XTypedServices.GetCloneIfRooted(ContentField)));
     XTypedServices.SetName(this, this.ContentField);
 }
Beispiel #5
0
 /// <summary>
 /// <para>
 /// ObsType acts as a structural base, which is extended through the addition of attributes to reflect the particular needs of a specific key family using the xs:extends element. It is capable of expressing the value and attributes of any single available cross-sectional measure (when extended).
 /// </para>
 /// </summary>
 public Obs(ObsType content) {
     SetInnerType(content);
 }