Esempio n. 1
0
File: CCDField.cs Progetto: mnisl/OD
		private void SetValuesUsingFieldId_v4(string pFieldId){
			//Includes US states and Canadian provinces.
			//http://www.nrcan.gc.ca/earth-sciences/geography-boundary/geographical-name/translators/5782
			string[] stateCodes=new string [] {	
				//Canadian province codes.
				"AB",//Alberta
				"BC",//Britich Columbia
				"MB",//Manitoba
				"NB",//New Brunswick
				"NL",//Newfoundland and Labrador
				"NS",//Nova Scotia
				"NT",//Northwest Territories
				"NU",//Nunavut
				"ON",//Ontario
				"PE",//Prince Edward Island
				"QC",//Quebec
				"SK",//Saskatchewan
				"YT", //Yukon
				//Traditional Canadian province codes which somehow made it into our application, but we are going to leave them because they are probably harmless.
				"LB",//Newfoundland and Labrador - This appeared in Canada Post publications (e.g., The Canadian Postal Code Directory) for the mainland section of the province of Newfoundland and Labrador.
				"NF",//Newfoundland and Labrador - Nfld. and later NF (the two-letter abbreviation used before the province's name changed to Newfoundland and Labrador) and T.-N. (French version, for Terre-Neuve)
				"PQ",//Quebec	- Que. and P.Q. (French version, for Province du Québec); later, PQ evolved from P.Q. as the first two-letter non-punctuated abbreviation.
				//US state codes.
				"AK","AL","AR","AZ","CA","CO","CT","DC","DE","FL",
				"GA","HI","IA","ID","IL","IN","KS","KY","LA","MA",
				"MD","ME","MI","MN","MO","MS","MT","NC","ND","NE",
				"NH","NJ","NM","NV","NY","OH","OK","OR","PA","RI",
				"SC","SD","TX","UT","VA","VT","WA","WI","WV","WY"};
			string[] languageCodes=new string[] {"A","E","F"};
			ValueMap valueMap;
			//Values in the following table were taken from the data dictionary of the CCD doc (about page 70).
			switch(pFieldId)
			{
				case "A01":
					fieldName="Transaction Prefix";
					frenchFieldName="Préfixe de transaction";
					format="A/N"; 
					lengthRequirement=new ConstLengthRequirement(12);
					break;
				case "A02":
					//DENTAL OFFICE CLAIM REFERENCE NO
					fieldName="DENTAL OFFICE CLAIM REFERENCE NO";
					frenchFieldName="NO DE TRANSACTION DU CABINET";
					format="N";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "A03":
					fieldName="Format Version Number";
					frenchFieldName="Nombre de version de format";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"02","04"}));
					break;
				case "A04":
					fieldName="Transaction Code";
					frenchFieldName="Code de transaction";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {	"01","11","21","02","12","03","13","23","04","14",
																																						"24","05","15","06","16","07","08","18"}));
					break;
				case "A05":
					fieldName="Carrier Identification Number";
					frenchFieldName="Numéro d'identification de porteur";
					format="N";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "A06":
					fieldName="Software System ID";
					frenchFieldName="Système logiciel identification";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(3);
					break;
				case "A07":
					fieldName="Message Length";
					frenchFieldName="Longueur de message";
					format="N";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "A08":
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(1);
					fieldName="Materials Forwarded";
					frenchFieldName="Les matériaux ont expédié";
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {" ","E","C","M","X","I","A","B","D","F","G",
						"H","J","K","L","N","O","P","Q","R","T","U"}));
					break;
				case "A09"://Not in version 2.
					fieldName="Carrier Transaction Counter";
					frenchFieldName="Compteur de transaction de porteur";
					format="N";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "A10"://Not in version 2.
					fieldName="Encryption Method";
					frenchFieldName="Méthode de chiffrage";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(1,3));
					break;
				case "A11"://Not in version 2.
					fieldName="Mailbox Indicator";
					frenchFieldName="Indicateur de boîte aux lettres";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"Y","O","N"}));
					break;
				case "B01":
					//CDA Provider Number
					fieldName="UNIQUE ID NO";
					frenchFieldName="NO DU DENTISTE";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(9);
					break;
				case "B02":
					//Provider Office Number
					fieldName="OFFICE NO";
					frenchFieldName="NO DU CABINET";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(4);
					break;
				case "B03"://Not in version 2.
					fieldName="BILLING PROVIDER NUMBER";
					frenchFieldName="NOMBRE DE FOURNISSEUR DE FACTURATION";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(9);
					break;
				case "B04"://Not in version 2.
					fieldName="BILLING OFFICE NUMBER";
					frenchFieldName="NOMBRE D'OFFICE DE FACTURATION";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(4);
					break;
				case "B05"://Not in version 2.
					fieldName="Referring Provider Number";
					frenchFieldName="Référence du nombre de fournisseur";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(10);
					break;
				case "B06"://Not in version 2.
					fieldName="Referral Reason Code";
					frenchFieldName="Code complémentaire de référence";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new RangeValueRequirement(0,13));
					break;
				case "B07"://Not in version 2.
					fieldName="Receiving Provider Number";
					frenchFieldName="Réception du nombre de fournisseur";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(9);
					break;
				case "B08"://Not in version 2.
					fieldName="Receiving Office Number";
					frenchFieldName="Réception du nombre d'Office";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(4);
					break;
				case "C01":
					//Primary Policy/Plan Number
					fieldName="POLICY#";
					frenchFieldName="NO DE POLICE";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(12);
					break;
				case "C02":
					//Subscriber Identification Number
					fieldName="CERTIFICATE NO";
					frenchFieldName="NO DE CERTIFICAT";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(12);
					break;
				case "C03":
					fieldName="Relationship Code";
					frenchFieldName="Code de rapport";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(1,5));
					break;
				case "C04":
					fieldName="Patient's Sex";
					frenchFieldName="Le sexe du patient";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"M","F"}));
					break;
				case "C05":
					fieldName="Patient's Birthday";
					frenchFieldName="L'anniversaire du patient";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "C06":
					fieldName="Patient's Last Name";
					frenchFieldName="Le dernier nom du patient";
					format="AE";
					lengthRequirement=new ConstLengthRequirement(25);
					break;
				case "C07":
					fieldName="Patient's First Name";
					frenchFieldName="Le prénom du patient";
					format="AE";
					lengthRequirement=new ConstLengthRequirement(15);
					break;
				case "C08":
					fieldName="Patient's Middle Initial";
					frenchFieldName="L'initiale moyenne du patient";
					format="AE";
					lengthRequirement=new ConstLengthRequirement(1);
					break;
				case "C09":
					fieldName="Eligibility Exception Code";
					frenchFieldName="Code d'exception d'acceptabilité";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(1,4));
					break;
				case "C10":
					fieldName="Name of School";
					frenchFieldName="Nom d'école";
					format="AE/N";
					lengthRequirement=new ConstLengthRequirement(25);
					break;
				case "C11":
					fieldName="DIVISION/SECTION NO";
					frenchFieldName="NO DE DIVISION/SECTION";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(10);
					break;
				case "C12"://Not in version 2.
					fieldName="Plan Flag";
					frenchFieldName="Drapeau de plan";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {" ","A","V","N"}));
					break;
				case "C13"://Not in version 2.
					fieldName="Band Number";
					frenchFieldName="Nombre de bande";
					format="N";
					lengthRequirement=new ConstLengthRequirement(3);
					break;
				case "C14"://Not in version 2.
					fieldName="Family Number";
					frenchFieldName="Nombre de famille";
					format="N";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "C15"://Not in version 2.
					fieldName="Missing Teeth";
					frenchFieldName="Dents absentes";
					format="A";
					lengthRequirement=new ConstLengthRequirement(11);
					break;
				case "C16"://Not in version 2.
					fieldName="Eligibility Date";
					frenchFieldName="Date d'acceptabilité";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "C17"://Not in version 2.
					fieldName="Primary Dependant Code";
					frenchFieldName="Code dépendant primaire";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "C18"://Not in version 2.
					fieldName="Plan Record Count";
					frenchFieldName="Plan Coun record";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(0,1));
					valueMap=new ValueMap(new string[] {"A","N"},new string[] {"1"});
					valueRequirements.Add(new DiscreteValuesBasedOnOtherField("C12",new ValueMap[] {valueMap}));
					break;
				case "C19"://Not in version 2.
					fieldName="Plan Record";
					frenchFieldName="Disque de plan";
					format="AN";
					lengthRequirement=new ConstLengthRequirement(30);
					break;
				case "D01":
					fieldName="Subscriber's Birthday";
					frenchFieldName="L'anniversaire de l'abonné";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "D02":
					fieldName="Subscriber's Last Name";
					frenchFieldName="Le dernier nom de l'abonné";
					format="AE";
					lengthRequirement=new ConstLengthRequirement(25);
					break;
				case "D03":
					fieldName="Subscriber's First Name";
					frenchFieldName="Le prénom de l'abonné";
					format="AE";
					lengthRequirement=new ConstLengthRequirement(15);
					break;
				case "D04":
					fieldName="Subscriber's Middle Initial";
					frenchFieldName="L'initiale moyenne de l'abonné";
					format="AE";
					lengthRequirement=new ConstLengthRequirement(1); 
					break;
				case "D05":
					fieldName="Subscriber's Address Line 1";
					frenchFieldName="Ligne 1 de l'adresse de l'abonné";
					format="AE/N";
					lengthRequirement=new ConstLengthRequirement(30);
					break;
				case "D06":
					fieldName="Subscriber's Address Line 2";
					frenchFieldName="Ligne 2 de l'adresse de l'abonné";
					format="AE/N";
					lengthRequirement=new ConstLengthRequirement(30);
					break;
				case "D07":
					fieldName="Subscriber's City";
					frenchFieldName="La ville de l'abonné";
					format="AE/N";
					lengthRequirement=new ConstLengthRequirement(20);
					break;
				case "D08":
					fieldName="Subscriber's Province/State Code";
					frenchFieldName="Code de la province/état de l'abonné";
					format="A";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new DiscreteValueRequirement(stateCodes));
					break;
				case "D09":
					fieldName="Subscriber's Postal/ZIP Code";
					frenchFieldName="Code du Postal/ZIP de l'abonné";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(9);
					break;
				case "D10":
					fieldName="Language of the Insured";
					frenchFieldName="Langue des assurés";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(languageCodes));
					break;
				case "D11"://Not in version 2.
					fieldName="Card Sequence/Version Number";
					frenchFieldName="Ordre de carte/nombre de version";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new RangeValueRequirement(1,99));//Cannot be 0 and 99 is largest for 2 digits in base 10.
					break;
				case "E01":
					fieldName="Secondary Carrier Unique ID Number";
					frenchFieldName="Nombre unique d'identification de porteur secondaire";
					format="N";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "E02":
					fieldName="Secondary Policy/Plan";
					frenchFieldName="Politique/plan secondaires";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(12);
					break;
				case "E03":
					fieldName="Secondary Plan Subscriber ID";
					frenchFieldName="Identification secondaire d'abonné de plan";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(12);
					break;
				case "E04":
					fieldName="Secondary Subscriber's Birthday";
					frenchFieldName="L'anniversaire de l'abonné secondaire";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "E05":
					fieldName="Secondary Division/Section Number";
					frenchFieldName="Nombre secondaire de Division/section";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(10);
					break;
				case "E06":
					fieldName="Secondary Relationship Code";
					frenchFieldName="Code secondaire de rapport";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(1,5));
					break;
				case "E07"://Not in version 2.
					fieldName="Secondary Card Sequence/Version Number";
					frenchFieldName="Ordre de carte secondaire/nombre de version";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "E08"://Not in version 2.
					fieldName="Secondary Subscriber's Last Name";
					frenchFieldName="Le dernier nom de l'abonné secondaire";
					format="AE";
					lengthRequirement=new ConstLengthRequirement(25);
					break;
				case "E09"://Not in version 2.
					fieldName="Secondary Subscriber's First Name";
					frenchFieldName="Le prénom de l'abonné secondaire";
					format="AE";
					lengthRequirement=new ConstLengthRequirement(15);
					break;
				case "E10"://Not in version 2.
					fieldName="Secondary Subscriber's Middle Initial";
					frenchFieldName="L'initiale moyenne de l'abonné secondaire";
					format="AE";
					lengthRequirement=new ConstLengthRequirement(1);
					break;
				case "E11"://Not in version 2.
					fieldName="Secondary Subscriber's Address Line 1";
					frenchFieldName="Ligne 1 de l'adresse de l'abonné secondaire";
					format="AE/N";
					lengthRequirement=new ConstLengthRequirement(30);
					break;
				case "E12"://Not in version 2.
					fieldName="Secondary Subscriber's Address Line 2";
					frenchFieldName="Ligne 2 de l'adresse de l'abonné secondaire";
					format="AE/N";
					lengthRequirement=new ConstLengthRequirement(30);
					break;
				case "E13"://Not in version 2.
					fieldName="Secondary Subscriber's City";
					frenchFieldName="La ville de l'abonné secondaire";
					format="AE/N";
					lengthRequirement=new ConstLengthRequirement(20);
					break;
				case "E14"://Not in version 2.
					fieldName="Secondary Subscriber's Province/State Code";
					frenchFieldName="Code de la province/état de l'abonné secondaire";
					format="A";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new DiscreteValueRequirement(stateCodes));
					break;
				case "E15"://Not in version 2.
					fieldName="Secondary Subscriber's Postal/ZIP Code";
					frenchFieldName="Code du Postal/ZIP de l'abonné secondaire";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(9);
					break;
				case "E16"://Not in version 2.
					fieldName="Secondary Language";
					frenchFieldName="Langue secondaire";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(languageCodes));
					break;
				case "E17"://Not in version 2.
					fieldName="Secondary Dependant Code";
					frenchFieldName="Code dépendant secondaire";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2); 
					break;
				case "E18"://Not in version 2.
					fieldName="Secondary Coverage";
					frenchFieldName="Assurance secondaire";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"Y","O","N","X"}));
					break;
				case "E19"://Not in version 2.
					fieldName="Secondary Carrier Transaction Counter";
					frenchFieldName="Compteur secondaire de transaction de porteur";
					format="N";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "E20"://Not in version 2.
					fieldName="Secondary Record Count";
					frenchFieldName="Compte record secondaire";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(0,1));
					valueMap=new ValueMap(new string[] {"Y","O"},new string[] {"1"});
					valueRequirements.Add(new DiscreteValuesBasedOnOtherField("E18",new ValueMap[]{valueMap}));
					break;
				case "F01":
					fieldName="Payee Code";
					frenchFieldName="Code de bénéficiaire";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(1,4));
					break;
				case "F02":
					fieldName="Accident Date";
					frenchFieldName="Date d'accidents";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "F03":
					fieldName="Predetermination Number";
					frenchFieldName="Nombre de prédétermination";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(14);
					break;
				case "F04":
					fieldName="Date of Initial Placement Upper";
					frenchFieldName="Date de haut initial de placement";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "F05":
					fieldName="Treatment Required for orthodontic";
					frenchFieldName="Traitement requis pour orthodontique";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"Y","O","N"}));
					break;
				case "F06":
					fieldName="Number of Procedures Performed";
					frenchFieldName="Nombre de procédures exécutées";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(1,7));
					break;
				case "F07":
					fieldName="Procedure Line Number";
					frenchFieldName="Ligne nombre de procédé";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(0,7));
					break;
				case "F08":
					fieldName="Procedure Code";
					frenchFieldName="Code de procédé";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "F09":
					fieldName="Date of Service";
					frenchFieldName="Date de service";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "F10":
					fieldName="International Tooth,Sextant, Quad or Arch";
					frenchFieldName="Dent, sextant, quadruple ou voûte international";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "F11":
					fieldName="Tooth Surface";
					frenchFieldName="Surface de dent";
					format="A";
					lengthRequirement=new ConstLengthRequirement(5);
					valueRequirements.Add(new RegexValueRequirement("^[MOIDBLV ]+$"));
					break;
				case "F12":
					fieldName="Dentist's Fee Claimed";
					frenchFieldName="Les honoraires du dentiste réclamés";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "F13":
					fieldName="Lab Procedure Fee # 1";
					frenchFieldName="Honoraires # 1 de procédé de laboratoire";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				//case "F14": // Does not exist in data dictionary!
				//	break;
				case "F15":
					fieldName="Is this an Initial Placement Upper";
					frenchFieldName="Est c'un premier haut de placement";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"Y","O","N","X"}));
					break;
				case "F16"://Not in version 2.
					fieldName="Procedure Type Codes";
					frenchFieldName="Type codes de procédé";
					format="A";
					lengthRequirement=new ConstLengthRequirement(5);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"A","B","C","E","L","S","X"}));
					break;
				case "F17"://Not in version 2.
					fieldName="Remarks Code";
					frenchFieldName="Code de remarques";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "F18"://Not in version 2.
					fieldName="Is this an Initial Placement Lower";
					frenchFieldName="Est c'un premier placement inférieur";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] { "Y","O","N","X" }));
					break;
				case "F19"://Not in version 2.
					fieldName="Date of Initial Placement Lower";
					frenchFieldName="La date du placement initial s'abaissent";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "F20"://Not in version 2.
					fieldName="Maxillary Prosthesis Material";
					frenchFieldName="Matériel maxillaire de prothèse";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(1,6));
					break;
				case "F21"://Not in version 2.
					fieldName="Mandibular Prosthesis Material";
					frenchFieldName="Matériel mandibulaire de prothèse";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(1,6));
					break;
				case "F22"://Not in version 2.
					fieldName="Extracted Teeth Count";
					frenchFieldName="Compte extrait de dents";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new RangeValueRequirement(0,50));
					break;
				case "F23"://Not in version 2.
					fieldName="Extracted Tooth Number";
					frenchFieldName="Nombre extrait de dent";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "F24"://Not in version 2.
					fieldName="Extraction Date";
					frenchFieldName="Date d'extraction";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "F25"://Not in version 2.
					fieldName="Orthodontic Record Flag";
					frenchFieldName="Drapeau record orthodontique";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(0,1));
					break;
				case "F26"://Not in version 2.
					fieldName="First Examination Fee";
					frenchFieldName="Premiers honoraires d'examen";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "F27"://Not in version 2.
					fieldName="Diagnostic Phase Fee";
					frenchFieldName="Honoraires diagnostiques de phase";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "F28"://Not in version 2.
					fieldName="Initial Payment";
					frenchFieldName="Paiement initial";
					format="D";
					lengthRequirement=new ConstLengthWhenOtherFieldHasValue("F25","1",6);
					break;
				case "F29"://Not in version 2.
					fieldName="Payment Mode";
					frenchFieldName="Mode de paiement";
					format="N";
					lengthRequirement=new ConstLengthWhenOtherFieldHasValue("F25","1",1);
					valueRequirements.Add(new RangeValueRequirement(1,4));
					break;
				case "F30"://Not in version 2.
					fieldName="Treatment Duration";
					frenchFieldName="Durée de traitement";
					format="N";
					lengthRequirement=new ConstLengthWhenOtherFieldHasValue("F25","1",2);
					break;
				case "F31"://Not in version 2.
					fieldName="Number of Anticipated Payments";
					frenchFieldName="Nombre de paiements prévus";
					format="N";
					lengthRequirement=new ConstLengthWhenOtherFieldHasValue("F25","1",2);
					break;
				case "F32"://Not in version 2.
					fieldName="Anticipated Payment Amount";
					frenchFieldName="Quantité prévue de paiement";
					format="D";
					lengthRequirement=new ConstLengthWhenOtherFieldHasValue("F25","1",6);
					break;
				case "F33"://Not in version 2.
					fieldName="Reconciliation Date";
					frenchFieldName="Date de réconciliation";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "F34"://Not in version 2.
					fieldName="Lab Procedure Code # 1";
					frenchFieldName="Code # 1 de procédé de laboratoire";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "F35"://Not in version 2.
					fieldName="Lab Procedure Code # 2";
					frenchFieldName="Code # 2 de procédé de laboratoire";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "F36"://Not in version 2.
					fieldName="Lab Procedure Fee # 2";
					frenchFieldName="Honoraires # 2 de procédé de laboratoire";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "F37"://Not in version 2.
					fieldName="Estimated Treatment Start Date";
					frenchFieldName="Date estimée de début de traitement";
					format="N";
					lengthRequirement=new ConstLengthWhenOtherFieldHasValue("F25","1",8);
					break;
				case "F38"://Not in version 2.
					fieldName="Current Reconciliation Page Number";
					frenchFieldName="Numéro de page courant de réconciliation";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(1,9));
					break;
				case "F39"://Not in version 2.
					fieldName="Diagnostic Code";
					frenchFieldName="Code diagnostique";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "F40"://Not in version 2.
					fieldName="Institution Code";
					frenchFieldName="Code d'établissement";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "F41"://Not in version 2.
					fieldName="Original DENTAL OFFICE CLAIM REFERENCE NO";
					frenchFieldName="Nombre d'ordre original d'Office";
					format="N";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "F42"://Not in version 2.
					fieldName="Original Transaction Reference Number";
					frenchFieldName="Numéro de référence original de transaction";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(14);
					break;
				case "F43"://Not in version 2.
					fieldName="Attachment Source";
					frenchFieldName="Source d'attachement";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"I","U"}));
					break;
				case "F44"://Not in version 2.
					fieldName="Attachment Count";
					frenchFieldName="Compte d'attachement";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new RangeValueRequirement(1,30));
					break;
				case "F45"://Not in version 2.
					fieldName="Attachment Type";
					frenchFieldName="Type d'attachement";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(3);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"JPG","DIC","TXT","DOC"}));
					break;
				case "F46"://Not in version 2.
					fieldName="Attachment Length";
					frenchFieldName="Longueur d'attachement";
					format="N";
					lengthRequirement=new ConstLengthRequirement(7);
					break;
				case "F47"://Not in version 2.
					fieldName="Attachment";
					frenchFieldName="Attachement";
					format="N";
					lengthRequirement=new LengthFromAnotherField("F46");
					break;
				case "F48"://Not in version 2.
					fieldName="Attachment File Date";
					frenchFieldName="Date de dossier d'attachement";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "F49"://Not in version 2.
					fieldName="Attachment Number";
					frenchFieldName="Nombre d'attachement";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "G01":
					//Transaction Reference Number
					fieldName="CARRIER CLAIM NO";
					frenchFieldName="NO DE RÉFÉRENCE DE TRANSACTION";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(14);
					break;
				case "G02":
					fieldName="Eligible Amount for Lab Procedure Code #2";
					frenchFieldName="Quantité éligible pour le code #2 de procédé de laboratoire";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G03":
					fieldName="Expected Payment Date";
					frenchFieldName="Date prévue de paiement";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "G04":
					fieldName="Total Amount of Service";
					frenchFieldName="Montant total de service";
					format="D";
					lengthRequirement=new ConstLengthRequirement(7);
					break;
				case "G05":
					fieldName="Response Status";
					frenchFieldName="Statut de réponse";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"A","E","R","H","B","C","N","M","X"}));
					break;
				case "G06":
					fieldName="Number of Error Codes";
					frenchFieldName="Nombre de codes d'erreur";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new RangeValueRequirement(0,10));
					break;
				case "G07":
					//Disposition message
					fieldName="DISPOSITION";
					frenchFieldName="SPÉCIFICATIONS";
					format="AE/N";
					lengthRequirement=new ConstLengthRequirement(75);
					break;
				case "G08":
					fieldName="Error Code";
					frenchFieldName="Code d'erreur";
					format="N";
					lengthRequirement=new ConstLengthRequirement(3);
					break;
				//case "G09": // Does not exist
					//break;
				case "G10":
					fieldName="Number of Carrier Issued Procedure Codes";
					frenchFieldName="Le nombre de porteur a publié des codes de procédé";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(0,6));
					break;
				case "G11":
					fieldName="Number of Note Lines";
					frenchFieldName="Nombre de lignes de note";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new RangeValueRequirement(0,32));
					break;
				case "G12":
					fieldName="Eligible Amount";
					frenchFieldName="Quantité éligible";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G13":
					fieldName="Deductible Amount";
					frenchFieldName="Quantité déductible";
					format="D";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "G14":
					fieldName="Eligible Percentage";
					frenchFieldName="Pourcentage éligible";
					format="N";
					lengthRequirement=new ConstLengthRequirement(3);
					valueRequirements.Add(new RangeValueRequirement(0,100));
					break;
				case "G15":
					fieldName="Benefit Amount for the Procedure";
					frenchFieldName="Quantité d'avantage pour le procédé";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G16":
					fieldName="Explanation Note Number 1";
					frenchFieldName="Note numéro 1 d'explication";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "G17":
					fieldName="Explanation Note Number 2";
					frenchFieldName="Note numéro 2 d'explication";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "G18":
					fieldName="Reference to Line Number of the Submitted Procedure";
					frenchFieldName="Référence à la ligne nombre du procédé soumis";
					format="N";
					lengthRequirement=new ConstLengthRequirement(7);
					valueRequirements.Add(new RegexValueRequirement("^[0-7]+$"));
					break;
				case "G19":
					fieldName="Additional Procedure Code";
					frenchFieldName="Code additionnel de procédé";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "G20":
					fieldName="Eligible Amount for the Additional Procedure";
					frenchFieldName="Quantité éligible pour le procédé additionnel";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G21":
					fieldName="Dedutible for the Additional Procedure";
					frenchFieldName="";
					format="D";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "G22":
					fieldName="Eligible Percentage";
					frenchFieldName="Pourcentage éligible";
					format="N";
					lengthRequirement=new ConstLengthRequirement(3);
					valueRequirements.Add(new RangeValueRequirement(0,100));
					break;
				case "G23":
					fieldName="Benefit Amount for the Additional Procedure";
					frenchFieldName="Quantité d'avantage pour le procédé additionnel";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G24":
					fieldName="Explanation Note Number 1 for the Additional Procedure";
					frenchFieldName="Note d'explication numéro 1 pour le procédé additionnel";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "G25":
					fieldName="Explanation Note Number 2 for the Additional Procedure";
					frenchFieldName="Note d'explication numéro 2 pour le procédé additionnel";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "G26":
					fieldName="Note Text";
					frenchFieldName="Noter le texte";
					format="AE/N";
					lengthRequirement=new ConstLengthRequirement(75);
					break;
				case "G27":
					fieldName="Language of the Insured";
					frenchFieldName="Langue des assurés";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string [3] {"A","E","F"}));
					break;
				case "G28":
					fieldName="Total Benefit Amount";
					frenchFieldName="Quantité totale d'avantage";
					format="D";
					lengthRequirement=new ConstLengthRequirement(7);
					break;
				case "G29":
					fieldName="Deductible amount unallocated";
					frenchFieldName="La quantité déductible a désassigné";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G30":
					fieldName="VERIFICATION NO";
					frenchFieldName="CODE DE VALIDATION";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(10);
					break;
				case "G31"://Not in version 2.
					fieldName="Display Message Count";
					frenchFieldName="Compte de message d'affichage";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new RangeValueRequirement(0,40));
					break;
				case "G32"://Not in version 2.
					fieldName="Display Message";
					frenchFieldName="Message d'affichage";
					format="AE/N";
					lengthRequirement=new ConstLengthRequirement(75);
					break;
				case "G33"://Not in version 2.
					fieldName="PAYMENT ADJUSTMENT AMOUNT";
					frenchFieldName="MONTANT D'ADAPTATION DE PAIEMENT";
					format="D";
					lengthRequirement=new ConstLengthRequirement(7);
					break;
				case "G34"://Not in version 2.
					fieldName="PAYMENT REFERENCE";
					frenchFieldName="RÉFÉRENCE DE PAIEMENT";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(10);
					break;
				case "G35"://Not in version 2.
					fieldName="PAYMENT DATE";
					frenchFieldName="DATE DE PAIEMENT";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "G36"://Not in version 2.
					fieldName="PAYMENT AMOUNT";
					frenchFieldName="QUANTITÉ DE PAIEMENT";
					format="D";
					lengthRequirement=new ConstLengthRequirement(7);
					break;
				case "G37"://Not in version 2.
					fieldName="Payment Detail Count";
					frenchFieldName="Compte de détail de paiement";
					format="N";
					lengthRequirement=new ConstLengthRequirement(3);
					valueRequirements.Add(new RangeValueRequirement(0,250));
					break;
				case "G38"://Not in version 2.
					fieldName="Transaction Payment";
					frenchFieldName="Paiement de transaction";
					format="D";
					lengthRequirement=new ConstLengthRequirement(7);
					break;
				case "G39"://Not in version 2.
					fieldName="Embedded Transaction Length";
					frenchFieldName="Longueur incluse de transaction";
					format="N";
					lengthRequirement=new ConstLengthRequirement(4);
					break;
				case "G40"://Not in version 2.
					fieldName="Embedded Transaction";
					frenchFieldName="Transaction incluse";
					format="AE/N";
					lengthRequirement=new LengthFromAnotherField("G39");
					break;
				case "G41"://Not in version 2.
					fieldName="Message Output Flag";
					frenchFieldName="Drapeau de rendement de message";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(0,2));
					break;
				case "G42"://Not in version 2.
					fieldName="Form ID";
					frenchFieldName="Former l'identification";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new RangeValueRequirement(1,8));
					break;
				case "G43"://Not in version 2.
					fieldName="Eligible Amount for Lab Procedure Code # 1";
					frenchFieldName="Quantité éligible pour le code # 1 de procédé de laboratoire";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G44"://Not in version 2.
					fieldName="Eligible Lab Amount for the Additional Procedure";
					frenchFieldName="Quantité éligible de laboratoire pour le procédé additionnel";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G45"://Not in version 2.
					fieldName="Note Number";
					frenchFieldName="Noter le nombre";
					format="N";
					lengthRequirement=new ConstLengthRequirement(3);
					break;
				case "G46"://Not in version 2.
					fieldName="Current Predetermination Page Number";
					frenchFieldName="Numéro de page courant de prédétermination";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					break;
				case "G47"://Not in version 2.
					fieldName="Last Predetermination Page Number";
					frenchFieldName="Numéro de page courant de prédétermination";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					break;
				case "G48"://Not in version 2.
					fieldName="E-Mail Office Number";
					frenchFieldName="Nombre d'Office d'E-mail";
					format="N";
					lengthRequirement=new ConstLengthRequirement(4);
					break;
				case "G49"://Not in version 2.
					//E-mail to
					fieldName="TO";
					frenchFieldName="DESTINATAIRE";
					format="AE/N";
					lengthRequirement=new ConstLengthRequirement(60);
					break;
				case "G50"://Not in version 2.
					//E-mail from
					fieldName="FROM";
					frenchFieldName="EXPÉDITEUR";
					format="AE/N";
					lengthRequirement=new ConstLengthRequirement(60);
					break;
				case "G51"://Not in version 2.
					fieldName="SUBJECT";
					frenchFieldName="OBJET";
					format="AE/N";
					lengthRequirement=new ConstLengthRequirement(60);
					break;
				case "G52"://Not in version 2.
					fieldName="Number of E-mail Note Lines";
					frenchFieldName="Nombre de lignes de note d'E-mail";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new RangeValueRequirement(1,50));
					break;
				case "G53"://Not in version 2.
					fieldName="E-Mail Note Line";
					frenchFieldName="Ligne de note d'E-mail";
					format="AE/N";
					lengthRequirement=new ConstLengthRequirement(75);
					break;
				case "G54"://Not in version 2.
					//Email reference number
					fieldName="REFERENCE";
					frenchFieldName="RÉFÉRENCE";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(10);
					break;
				case "G55"://Not in version 2.
					fieldName="Total Payable";
					frenchFieldName="Payable total";
					format="D";
					lengthRequirement=new ConstLengthRequirement(7);
					break;
				case "G56"://Not in version 2.
					fieldName="Deductible Amount for Lab Procedure Code # 1";
					frenchFieldName="Quantité déductible pour le code # 1 de procédé de laboratoire";
					format="D";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "G57"://Not in version 2.
					fieldName="Eligible Percentage for Lab Procedure # 1";
					frenchFieldName="Pourcentage éligible pour le procédé # 1 de laboratoire";
					format="N";
					lengthRequirement=new ConstLengthRequirement(3);
					break;
				case "G58"://Not in version 2.
					fieldName="Benefit Amount for Lab Procedure Code #1";
					frenchFieldName="Quantité d'avantage pour le code #1 de procédé de laboratoire";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G59"://Not in version 2.
					fieldName="Deductible Amount for Lab Procedure Code # 2";
					frenchFieldName="Quantité déductible pour le code # 2 de procédé de laboratoire";
					format="D";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "G60"://Not in version 2.
					fieldName="Eligible Percentage for Lab Procedure Code # 2";
					frenchFieldName="Pourcentage éligible pour le code # 2 de procédé de laboratoire";
					format="N";
					lengthRequirement=new ConstLengthRequirement(3);
					break;
				case "G61"://Not in version 2.
					fieldName="Benefit Amount for Lab Procedure Code # 2";
					frenchFieldName="Bénéficier la quantité pour le code # 2 de procédé de laboratoire";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G62"://Not in version 2.
					fieldName="Last Reconciliation Page Number";
					frenchFieldName="Dernier numéro de page de réconciliation";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(1,9));
					break;
				default:
					MessageBox.Show("Internal Error, unknown version 4 CCD field ID during construction: "+pFieldId);
					return;//error
			}
		}
Esempio n. 2
0
File: CCDField.cs Progetto: mnisl/OD
		private void SetValuesUsingFieldId_v2(string pFieldId){
			switch(pFieldId)
			{
				case "A01":
					fieldName="Transaction Prefix";
					frenchFieldName="Préfixe de transaction";
					format="A/N"; 
					lengthRequirement=new ConstLengthRequirement(12);
					break;
				case "A02":
					//Provider's Sequence Number
					fieldName="DENTAL OFFICE CLAIM REFERENCE NO";
					frenchFieldName="NO DE TRANSACTION DU CABINET";
					format="N";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "A03":
					fieldName="Format Version Number";
					frenchFieldName="Nombre de version de format";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"02","04"}));
					break;
				case "A04":
					fieldName="Transaction Code";
					frenchFieldName="Code de transaction";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] { "00","10","01","11","21","31","02","12","03","13","23","04" }));
					break;
				case "A05":
					fieldName="Carrier Identification Number";
					frenchFieldName="Numéro d'identification de porteur";
					format="N";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "A06":
					fieldName="Software System ID";
					frenchFieldName="Système logiciel identification";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(3);
					break;
				case "A07":
					fieldName="Message Length";
					frenchFieldName="Longueur de message";
					format="N";
					lengthRequirement=new ConstLengthRequirement(4);
					break;
				case "A08":
					fieldName="E-Mail Flag";
					frenchFieldName="Drapeau E-Mail";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"0","1","2"}));
					break;
				case "B01":
					//CDA Provider Number
					fieldName="UNIQUE ID NO";
					frenchFieldName="NO DU DENTISTE";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(9);
					break;
				case "B02":
					//Provider Office Number
					fieldName="OFFICE NO";
					frenchFieldName="NO DU CABINET";
					format="N";
					lengthRequirement=new ConstLengthRequirement(4);
					break;
				case "C01":
					//Primary Policy/Plan Number
					fieldName="POLICY#";
					frenchFieldName="NO DE POLICE";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "C02":
					//Subscriber Identification Number
					fieldName="CERTIFICATE NO";
					frenchFieldName="NO DE CERTIFICAT";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(11);
					break;
				case "C03":
					fieldName="Relationship Code";
					frenchFieldName="Code de rapport";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(1,5));
					break;
				case "C04":
					fieldName="Patient's Sex";
					frenchFieldName="Le sexe du patient";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"M","F"}));
					break;
				case "C05":
					fieldName="Patient's Birthday";
					frenchFieldName="L'anniversaire du patient";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "C06":
					fieldName="Patient's Last Name";
					frenchFieldName="Le dernier nom du patient";
					format="A";
					lengthRequirement=new ConstLengthRequirement(25);
					break;
				case "C07":
					fieldName="Patient's First Name";
					frenchFieldName="Le prénom du patient";
					format="A";
					lengthRequirement=new ConstLengthRequirement(15);
					break;
				case "C08":
					fieldName="Patient's Middle Initial";
					frenchFieldName="L'initiale moyenne du patient";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					break;
				case "C09":
					fieldName="Eligibility Exception Code";
					frenchFieldName="Code d'exception d'acceptabilité";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(0,3));
					break;
				case "C10":
					fieldName="Name of School";
					frenchFieldName="Nom d'école";
					format="A";
					lengthRequirement=new ConstLengthRequirement(25);
					break;
				case "C11":
					fieldName="DIVISION/SECTION NO";
					frenchFieldName="NO DE DIVISION/SECTION";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(10);
					break;
				case "D01":
					fieldName="Subscriber's Birthday";
					frenchFieldName="L'anniversaire de l'abonné";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "D02":
					fieldName="Subscriber's Last Name";
					frenchFieldName="Le dernier nom de l'abonné";
					format="A";
					lengthRequirement=new ConstLengthRequirement(25);
					break;
				case "D03":
					fieldName="Subscriber's First Name";
					frenchFieldName="Le prénom de l'abonné";
					format="A";
					lengthRequirement=new ConstLengthRequirement(15);
					break;
				case "D04":
					fieldName="Subscriber's Middle Initial";
					frenchFieldName="L'initiale moyenne de l'abonné";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1); 
					break;
				case "D05":
					fieldName="Subscriber's Address Line 1";
					frenchFieldName="Ligne 1 de l'adresse de l'abonné";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(30);
					break;
				case "D06":
					fieldName="Subscriber's Address Line 2";
					frenchFieldName="Ligne 2 de l'adresse de l'abonné";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(30);
					break;
				case "D07":
					fieldName="Subscriber's City";
					frenchFieldName="La ville de l'abonné";
					format="A";
					lengthRequirement=new ConstLengthRequirement(20);
					break;
				case "D08":
					fieldName="Subscriber's Province/State Code";
					frenchFieldName="Code de la province/état de l'abonné";
					format="A";
					lengthRequirement=new ConstLengthRequirement(2);
					//Includes US states and Canadian provinces.
					//http://www.nrcan.gc.ca/earth-sciences/geography-boundary/geographical-name/translators/5782
					valueRequirements.Add(new DiscreteValueRequirement(new string [] {
						//Canadian province codes.
						"AB",//Alberta
						"BC",//Britich Columbia
						"MB",//Manitoba
						"NB",//New Brunswick
						"NL",//Newfoundland and Labrador
						"NS",//Nova Scotia
						"NT",//Northwest Territories
						"NU",//Nunavut
						"ON",//Ontario
						"PE",//Prince Edward Island
						"QC",//Quebec
						"SK",//Saskatchewan
						"YT", //Yukon
						//Traditional Canadian province codes which somehow made it into our application, but we are going to leave them because they are probably harmless.
						"LB",//Newfoundland and Labrador - This appeared in Canada Post publications (e.g., The Canadian Postal Code Directory) for the mainland section of the province of Newfoundland and Labrador.
						"NF",//Newfoundland and Labrador - Nfld. and later NF (the two-letter abbreviation used before the province's name changed to Newfoundland and Labrador) and T.-N. (French version, for Terre-Neuve)
						"PQ",//Quebec	- Que. and P.Q. (French version, for Province du Québec); later, PQ evolved from P.Q. as the first two-letter non-punctuated abbreviation.
						//US state codes.
						"AK","AL","AR","AZ","CA","CO","CT","DC","DE","FL",
						"GA","HI","IA","ID","IL","IN","KS","KY","LA","MA",
						"MD","ME","MI","MN","MO","MS","MT","NC","ND","NE",
						"NH","NJ","NM","NV","NY","OH","OK","OR","PA","RI",
						"SC","SD","TX","UT","VA","VT","WA","WI","WV","WY"}));
					break;
				case "D09":
					fieldName="Subscriber's Postal/ZIP Code";
					frenchFieldName="Code du Postal/ZIP de l'abonné";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "D10":
					fieldName="Language of the Insured";
					frenchFieldName="Langue des assurés";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"E","F"}));
					break;
				case "E01":
					fieldName="Secondary Carrier Unique ID Number";
					frenchFieldName="Nombre unique d'identification de porteur secondaire";
					format="N";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "E02":
					fieldName="Secondary Policy/Plan";
					frenchFieldName="Politique/plan secondaires";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "E03":
					fieldName="Secondary Plan Subscriber ID";
					frenchFieldName="Identification secondaire d'abonné de plan";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(11);
					break;
				case "E04":
					//Spouse/Significant Other Birtday
					fieldName="Secondary Subscriber's Birthday";
					frenchFieldName="L'anniversaire de l'abonné secondaire";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "E05":
					fieldName="Secondary Division/Section Number";
					frenchFieldName="Nombre secondaire de Division/section";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(10);
					break;
				case "E06":
					fieldName="Secondary Relationship Code";
					frenchFieldName="Code secondaire de rapport";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(1,5));
					break;
				case "F01":
					fieldName="Payee Code";
					frenchFieldName="Code de bénéficiaire";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(0,2));
					break;
				case "F02":
					fieldName="Accident Date";
					frenchFieldName="Date d'accidents";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "F03":
					fieldName="Predetermination Number";
					frenchFieldName="Nombre de prédétermination";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(14);
					break;
				case "F04":
					fieldName="Date of Initial Placement Upper";
					frenchFieldName="Date de haut initial de placement";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "F05":
					fieldName="Treatment Required for orthodontic";
					frenchFieldName="Traitement requis pour orthodontique";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"Y","N"}));
					break;
				case "F06":
					fieldName="Number of Procedures Performed";
					frenchFieldName="Nombre de procédures exécutées";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(1,7));
					break;
				case "F07":
					fieldName="Procedure Line Number";
					frenchFieldName="Ligne nombre de procédé";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(0,7));
					break;
				case "F08":
					fieldName="Procedure Code";
					frenchFieldName="Code de procédé";
					format="N";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "F09":
					fieldName="Date of Service";
					frenchFieldName="Date de service";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "F10":
					fieldName="International Tooth,Sextant, Quad or Arch";
					frenchFieldName="Dent, sextant, quadruple ou voûte international";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "F11":
					fieldName="Tooth Surface";
					frenchFieldName="Surface de dent";
					format="A";
					lengthRequirement=new ConstLengthRequirement(5);
					valueRequirements.Add(new RegexValueRequirement("^[MOIDBLV ]+$"));
					break;
				case "F12":
					fieldName="Dentist's Fee Claimed";
					frenchFieldName="Les honoraires du dentiste réclamés";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "F13":
					fieldName="Lab Procedure Fee # 1";
					frenchFieldName="Honoraires # 1 de procédé de laboratoire";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "F14":
					fieldName="Unit of Time";
					frenchFieldName="Unité de temps";
					format="D";
					lengthRequirement=new ConstLengthRequirement(4);
					break;
				case "F15":
					fieldName="Is this an Initial Placement Upper";
					frenchFieldName="Est c'un premier haut de placement";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"Y","N","X"}));
					break;
				case "G01":
					//Transaction Reference Number
					fieldName="CARRIER CLAIM NO";
					frenchFieldName="NO DE RÉFÉRENCE DE TRANSACTION";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(14);
					break;
				case "G02":
					fieldName="Employer Certified Flag";
					frenchFieldName="";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"Y","N" }));
					break;
				case "G03":
					fieldName="Expected Payment Date";
					frenchFieldName="Date prévue de paiement";
					format="N";
					lengthRequirement=new ConstLengthRequirement(8);
					break;
				case "G04":
					fieldName="Total Amount of Service";
					frenchFieldName="Montant total de service";
					format="D";
					lengthRequirement=new ConstLengthRequirement(7);
					break;
				case "G05":
					fieldName="Response Status";
					frenchFieldName="Statut de réponse";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"A","E","R","H","B","C","N","M","X"}));
					break;
				case "G06":
					fieldName="Number of Error Codes";
					frenchFieldName="Nombre de codes d'erreur";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new RangeValueRequirement(0,10));
					break;
				case "G07":
					//Disposition message
					fieldName="DISPOSITION";
					frenchFieldName="SPÉCIFICATIONS";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(75);
					break;
				case "G08":
					fieldName="Error Code";
					frenchFieldName="Code d'erreur";
					format="N";
					lengthRequirement=new ConstLengthRequirement(3);
					break;
				case "G09":
					fieldName="E-Mail Flag";
					frenchFieldName="Drapeau E-Mail";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"0","1","2"}));
					break;
				case "G10":
					fieldName="Number of Carrier Issued Procedure Codes";
					frenchFieldName="Le nombre de porteur a publié des codes de procédé";
					format="N";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new RangeValueRequirement(0,6));
					break;
				case "G11":
					fieldName="Number of Note Lines";
					frenchFieldName="Nombre de lignes de note";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					valueRequirements.Add(new RangeValueRequirement(0,12));
					break;
				case "G12":
					fieldName="Eligible Amount";
					frenchFieldName="Quantité éligible";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G13":
					fieldName="Deductible Amount";
					frenchFieldName="Quantité déductible";
					format="D";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "G14":
					fieldName="Eligible Percentage";
					frenchFieldName="Pourcentage éligible";
					format="N";
					lengthRequirement=new ConstLengthRequirement(3);
					valueRequirements.Add(new RangeValueRequirement(0,100));
					break;
				case "G15":
					fieldName="Benefit Amount for the Procedure";
					frenchFieldName="Quantité d'avantage pour le procédé";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G16":
					fieldName="Explanation Note Number 1";
					frenchFieldName="Note numéro 1 d'explication";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "G17":
					fieldName="Explanation Note Number 2";
					frenchFieldName="Note numéro 2 d'explication";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "G18":
					fieldName="Reference to Line Number of the Submitted Procedure";
					frenchFieldName="Référence à la ligne nombre du procédé soumis";
					format="N";
					lengthRequirement=new ConstLengthRequirement(7);
					valueRequirements.Add(new RegexValueRequirement("^[0-7]+$"));
					break;
				case "G19":
					fieldName="Additional Procedure Code";
					frenchFieldName="Code additionnel de procédé";
					format="N";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "G20":
					fieldName="Eligible Amount for the Additional Procedure";
					frenchFieldName="Quantité éligible pour le procédé additionnel";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G21":
					fieldName="Dedutible for the Additional Procedure";
					frenchFieldName="";
					format="D";
					lengthRequirement=new ConstLengthRequirement(5);
					break;
				case "G22":
					fieldName="Eligible Percentage";
					frenchFieldName="Pourcentage éligible";
					format="N";
					lengthRequirement=new ConstLengthRequirement(3);
					valueRequirements.Add(new RangeValueRequirement(0,100));
					break;
				case "G23":
					fieldName="Benefit Amount for the Additional Procedure";
					frenchFieldName="Quantité d'avantage pour le procédé additionnel";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G24":
					fieldName="Explanation Note Number 1 for the Additional Procedure";
					frenchFieldName="Note d'explication numéro 1 pour le procédé additionnel";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "G25":
					fieldName="Explanation Note Number 2 for the Additional Procedure";
					frenchFieldName="Note d'explication numéro 2 pour le procédé additionnel";
					format="N";
					lengthRequirement=new ConstLengthRequirement(2);
					break;
				case "G26":
					fieldName="Note Text";
					frenchFieldName="Noter le texte";
					format="A";
					lengthRequirement=new ConstLengthRequirement(75);
					break;
				case "G27":
					fieldName="Language of the Insured";
					frenchFieldName="Langue des assurés";
					format="A";
					lengthRequirement=new ConstLengthRequirement(1);
					valueRequirements.Add(new DiscreteValueRequirement(new string[] {"E","F"}));
					break;
				case "G28":
					fieldName="Total Benefit Amount";
					frenchFieldName="Quantité totale d'avantage";
					format="D";
					lengthRequirement=new ConstLengthRequirement(7);
					break;
				case "G29":
					fieldName="Deductible amount unallocated";
					frenchFieldName="La quantité déductible a désassigné";
					format="D";
					lengthRequirement=new ConstLengthRequirement(6);
					break;
				case "G30":
					//Transaction Validation Code
					fieldName="VERIFICATION NO";
					frenchFieldName="CODE DE VALIDATION";
					format="A/N";
					lengthRequirement=new ConstLengthRequirement(10);
					break;
				default:
					MessageBox.Show("Internal Error, unknown version 2 CCD field ID during construction: "+pFieldId);
					return;//error
			}
		}