File Coverage

blib/lib/Business/EDI/DataElement.pm
Criterion Covered Total %
statement 48 80 60.0
branch 9 38 23.6
condition n/a
subroutine 11 16 68.7
pod 2 9 22.2
total 70 143 48.9


line stmt bran cond sub pod time code
1             package Business::EDI::DataElement;
2 15     15   113 use Carp;
  15         33  
  15         1516  
3 15     15   94 use strict;
  15         35  
  15         570  
4 15     15   86 use warnings;
  15         28  
  15         527  
5              
6 15     15   106 use UNIVERSAL::require;
  15         29  
  15         135  
7 15     15   459 use Business::EDI;
  15         33  
  15         137  
8 15     15   435 use base 'Business::EDI';
  15         29  
  15         1824  
9              
10 15     15   91 use vars qw/ %code_hash /;
  15         29  
  15         46951  
11             our $VERSION = 0.01;
12              
13             my %codes = (); # caching
14             my @fields = qw(code label value desc);
15              
16             sub bad_names { # CLASS method
17 0 0   0 0 0 return grep {exists $codes{$_} and ! $codes{$_}} keys %codes; # if it's there, and empty/undef, it's bad
  0         0  
18             }
19             sub bad_name {
20 0 0   0 0 0 my $name = shift or return;
21 0 0       0 exists $codes{$name} or return 0; # havne't seen it yet, doesn't mean it's bad
22 0 0       0 return defined($codes{$name}) ? 0 : 1; # but if we've seen it, and it's undef, it's bad.
23             }
24             sub clear_cache {
25 0     0 0 0 my $size = scalar keys %codes;
26 0         0 %codes = ();
27 0         0 return $size;
28             }
29              
30             sub new { # constructor:
31 1877     1877 1 2632 my $class = shift;
32 1877 50       4595 my $code = shift or carp "No code argument for DataElement type '$class' specified";
33 1877 50       3742 $code or return;
34 1877         6479 my $self = bless({}, $class);
35 1877 50       6840 unless ($self->init($code, @_)) {
36 0         0 carp "init() failed for code '$code'";
37 0         0 return;
38             }
39 1877         7814 return $self;
40             }
41              
42             sub init {
43 1877     1877 0 2387 my $self = shift;
44 1877 50       4113 my $code = shift or return;
45 1877         4686 my $codes = $self->codehash();
46 1877 50       6165 $codes->{$code} or return;
47 1877         4546 $self->{code } = $code;
48 1877         3987 $self->{label} = $codes->{$code};
49 1877 50       6016 $self->{value} = shift if scalar @_;
50 1877         4746 $self->{desc } = $self->desc($self->{label});
51 1877         3585 $self->{_permitted} = {(map {$_ => 1} @fields)};
  7508         18904  
52 1877         6772 return $self;
53             }
54              
55             sub get_codelist {
56 0     0 0 0 my $self = shift;
57 0 0       0 my $target = @_ ? shift : $self->label();
58 0 0       0 unless ($target) {
59 0         0 carp "Empty target for get_codelist";
60 0         0 return;
61             }
62 0 0       0 if (bad_name($target)) {
63 0         0 carp "get_codelist already failed on previous attempts for target $target";
64 0         0 return;
65             }
66 0         0 my $pack = "Business::EDI::CodeList::$target";
67 0 0       0 unless ($pack->require()) {
68 0         0 carp "$pack not found";
69 0         0 $codes{$target} = undef;
70             }
71 0         0 my $sub = $pack->can('get_codes');
72 0         0 $codes{$target} = eval { $sub };
  0         0  
73 0 0       0 $codes{$target} or carp "$pack failed required get_codes() call";
74 0         0 return $codes{$target};
75             }
76              
77             sub codelist {
78 0     0 0 0 my $self = shift;
79 0 0       0 if (@_) {
80 0         0 my $incoming = shift;
81             # if we got an object, we'll treat it as the whole CodeList referent
82 0 0       0 $self->{codelist} = ref($incoming) ? $incoming : $self->get_codelist($incoming);
83             }
84 0         0 return $self->{codelist};
85             }
86              
87             # sub code { my $self = shift; @_ and $self->{code } = shift; return $self->{code }; }
88             # sub label { my $self = shift; @_ and $self->{label} = shift; return $self->{label}; }
89             # sub value { my $self = shift; @_ and $self->{value} = shift; return $self->{value}; }
90             sub desc {
91 1877     1877 1 2291 my $self = shift;
92 1877 50       4011 local $_ = @_ ? shift : $self->label();
93 1877         2141 my @humps;
94 1877         16974 foreach(/([A-Z][a-z]+)/g) {
95 4455         10185 push @humps, lc($_);
96             }
97 1877         9765 return ucfirst join ' ', @humps;
98             }
99              
100             # methods in common w/ other EDI objects for recursive functionality
101             # sub part_keys {return @fields;}
102              
103             sub codehash {
104 1877     1877 0 2490 my $self = shift;
105 1877 100       9698 unless(%code_hash) {
106 12         10006 %code_hash = (
107             1000 => 'DocumentName', # B
108             1001 => 'DocumentNameCode', # C
109             1003 => 'MessageTypeCode', # B
110             1004 => 'DocumentIdentifier', # C
111             1049 => 'MessageSectionCode', # B
112             1050 => 'SequencePositionIdentifier', # C
113             1052 => 'MessageItemIdentifier', # B
114             1054 => 'MessageSubitemIdentifier', # B
115             1056 => 'VersionIdentifier', # B
116             1058 => 'ReleaseIdentifier', # B
117             1060 => 'RevisionIdentifier', # B
118             1073 => 'DocumentLineActionCode', # B
119             1082 => 'LineItemIdentifier', # C
120             1131 => 'CodeListIdentificationCode', # C
121             1145 => 'TravellerReferenceIdentifier', # I
122             1146 => 'AccountName', # B
123             1147 => 'AccountIdentifier', # B
124             1148 => 'AccountAbbreviatedName', # B
125             1153 => 'ReferenceCodeQualifier', # C
126             1154 => 'ReferenceIdentifier', # C
127             1156 => 'DocumentLineIdentifier', # C
128             1159 => 'SequenceIdentifierSourceCode', # B
129             1170 => 'AccountingJournalName', # B
130             1171 => 'AccountingJournalIdentifier', # B
131             1218 => 'DocumentOriginalsRequiredQuantity', # B
132             1220 => 'DocumentCopiesRequiredQuantity', # B
133             1222 => 'ConfigurationLevelNumber', # B
134             1225 => 'MessageFunctionCode', # C
135             1227 => 'CalculationSequenceCode', # B
136             1228 => 'ActionDescription', # B
137             1229 => 'ActionCode', # C
138             1230 => 'AllowanceOrChargeIdentifier', # B
139             1312 => 'ConsignmentLoadSequenceIdentifier', # B
140             1366 => 'DocumentSourceDescription', # B
141             1373 => 'DocumentStatusCode', # B
142             1476 => 'ControllingAgencyIdentifier', # B
143             1490 => 'ConsolidationItemNumber', # B
144             1496 => 'GoodsItemNumber', # B
145             1501 => 'ComputerEnvironmentDetailsCodeQualifier', # B
146             1502 => 'DataFormatDescription', # B
147             1503 => 'DataFormatDescriptionCode', # C
148             1505 => 'ValueListTypeCode', # B
149             1507 => 'DesignatedClassCode', # B
150             1508 => 'FileName', # B
151             1510 => 'ComputerEnvironmentName', # B
152             1511 => 'ComputerEnvironmentNameCode', # C
153             1514 => 'ValueListName', # B
154             1516 => 'FileFormatName', # B
155             1518 => 'ValueListIdentifier', # B
156             1520 => 'DataSetIdentifier', # B
157             1523 => 'MessageImplementationIdentificationCode', # B
158             2000 => 'Date', # I
159             2002 => 'Time', # I
160             2005 => 'DateOrTimeOrPeriodFunctionCodeQualifier', # C
161             2009 => 'TermsTimeRelationCode', # B
162             2013 => 'FrequencyCode', # C
163             2015 => 'DespatchPatternCode', # C
164             2017 => 'DespatchPatternTimingCode', # C
165             2018 => 'Age', # I
166             2023 => 'PeriodTypeCodeQualifier', # B
167             2029 => 'TimeZoneIdentifier', # I
168             2031 => 'TimeVariationQuantity', # I
169             2116 => 'TimeZoneDifferenceQuantity', # I
170             2118 => 'PeriodDetailDescription', # B
171             2119 => 'PeriodDetailDescriptionCode', # B
172             2148 => 'DateVariationNumber', # I
173             2151 => 'PeriodTypeCode', # C
174             2152 => 'PeriodCountQuantity', # C
175             2155 => 'ChargePeriodTypeCode', # I
176             2156 => 'CheckinTime', # I
177             2160 => 'DaysOfWeekSetIdentifier', # I
178             2162 => 'JourneyLegDurationQuantity', # I
179             2164 => 'MillisecondTime', # I
180             2379 => 'DateOrTimeOrPeriodFormatCode', # C
181             2380 => 'DateOrTimeOrPeriodText', # C
182             2475 => 'EventTimeReferenceCode', # B
183             3005 => 'MaintenanceOperationOperatorCode', # B
184             3009 => 'MaintenanceOperationPayerCode', # B
185             3035 => 'PartyFunctionCodeQualifier', # C
186             3036 => 'PartyName', # C
187             3039 => 'PartyIdentifier', # C
188             3042 => 'StreetAndNumberOrPostOfficeBoxIdentifier', # C
189             3045 => 'PartyNameFormatCode', # C
190             3055 => 'CodeListResponsibleAgencyCode', # C
191             3077 => 'TestMediumCode', # B
192             3079 => 'OrganisationClassificationCode', # B
193             3082 => 'OrganisationalClassName', # B
194             3083 => 'OrganisationalClassNameCode', # B
195             3124 => 'NameAndAddressDescription', # C
196             3126 => 'CarrierName', # B
197             3127 => 'CarrierIdentifier', # B
198             3131 => 'AddressTypeCode', # C
199             3139 => 'ContactFunctionCode', # B
200             3148 => 'CommunicationAddressIdentifier', # C
201             3153 => 'CommunicationMediumTypeCode', # C
202             3155 => 'CommunicationMeansTypeCode', # B
203             3164 => 'CityName', # C
204             3192 => 'AccountHolderName', # B
205             3194 => 'AccountHolderIdentifier', # B
206             3197 => 'AgentIdentifier', # I
207             3207 => 'CountryIdentifier', # C
208             3222 => 'FirstRelatedLocationName', # B
209             3223 => 'FirstRelatedLocationIdentifier', # C
210             3224 => 'LocationName', # C
211             3225 => 'LocationIdentifier', # C
212             3227 => 'LocationFunctionCodeQualifier', # C
213             3228 => 'CountrySubdivisionName', # C
214             3229 => 'CountrySubdivisionIdentifier', # C
215             3232 => 'SecondRelatedLocationName', # B
216             3233 => 'SecondRelatedLocationIdentifier', # C
217             3236 => 'SampleLocationDescription', # B
218             3237 => 'SampleLocationDescriptionCode', # B
219             3239 => 'CountryOfOriginIdentifier', # B
220             3251 => 'PostalIdentificationCode', # C
221             3279 => 'GeographicAreaCode', # B
222             3285 => 'InstructionReceivingPartyIdentifier', # B
223             3286 => 'AddressComponentDescription', # C
224             3289 => 'PersonCharacteristicCodeQualifier', # B
225             3292 => 'NationalityName', # B
226             3293 => 'NationalityNameCode', # B
227             3295 => 'NameOriginalAlphabetCode', # B
228             3299 => 'AddressPurposeCode', # C
229             3301 => 'EnactingPartyIdentifier', # B
230             3310 => 'InheritedCharacteristicDescription', # B
231             3311 => 'InheritedCharacteristicDescriptionCode', # B
232             3397 => 'NameStatusCode', # C
233             3398 => 'NameComponentDescription', # B
234             3401 => 'NameComponentUsageCode', # B
235             3403 => 'NameTypeCode', # B
236             3405 => 'NameComponentTypeCodeQualifier', # B
237             3412 => 'ContactName', # B
238             3413 => 'ContactIdentifier', # C
239             3432 => 'InstitutionName', # B
240             3433 => 'InstitutionNameCode', # B
241             3434 => 'InstitutionBranchIdentifier', # B
242             3436 => 'InstitutionBranchLocationName', # B
243             3446 => 'PartyTaxIdentifier', # B
244             3449 => 'BankIdentifier', # I
245             3452 => 'LanguageName', # C
246             3453 => 'LanguageNameCode', # C
247             3455 => 'LanguageCodeQualifier', # C
248             3457 => 'OriginatorTypeCode', # I
249             3459 => 'FrequentTravellerIdentifier', # I
250             3460 => 'GivenName', # I
251             3463 => 'GateIdentifier', # I
252             3465 => 'InhouseIdentifier', # I
253             3475 => 'AddressStatusCode', # C
254             3477 => 'AddressFormatCode', # C
255             3478 => 'MaritalStatusDescription', # B
256             3479 => 'MaritalStatusDescriptionCode', # C
257             3480 => 'PersonJobTitle', # B
258             3482 => 'ReligionName', # B
259             3483 => 'ReligionNameCode', # B
260             3493 => 'NationalityCodeQualifier', # B
261             3496 => 'SalesChannelIdentifier', # B
262             3499 => 'GenderCode', # C
263             3500 => 'FamilyName', # I
264             3503 => 'AccessAuthorisationIdentifier', # I
265             3504 => 'GivenNameTitleDescription', # I
266             3507 => 'BenefitCoverageConstituentsCode', # I
267             4009 => 'OptionCode', # I
268             4017 => 'DeliveryPlanCommitmentLevelCode', # B
269             4018 => 'RelatedInformationDescription', # I
270             4022 => 'BusinessDescription', # B
271             4025 => 'BusinessFunctionCode', # C
272             4027 => 'BusinessFunctionTypeCodeQualifier', # B
273             4035 => 'PriorityTypeCodeQualifier', # B
274             4036 => 'PriorityDescription', # B
275             4037 => 'PriorityDescriptionCode', # B
276             4038 => 'AdditionalSafetyInformationDescription', # B
277             4039 => 'AdditionalSafetyInformationDescriptionCode', # B
278             4043 => 'TradeClassCode', # B
279             4044 => 'SafetySectionName', # B
280             4046 => 'SafetySectionNumber', # B
281             4048 => 'CertaintyDescription', # C
282             4049 => 'CertaintyDescriptionCode', # C
283             4051 => 'CharacteristicRelevanceCode', # B
284             4052 => 'DeliveryOrTransportTermsDescription', # B
285             4053 => 'DeliveryOrTransportTermsDescriptionCode', # B
286             4055 => 'DeliveryOrTransportTermsFunctionCode', # B
287             4056 => 'QuestionDescription', # B
288             4057 => 'QuestionDescriptionCode', # B
289             4059 => 'ClauseCodeQualifier', # B
290             4065 => 'ContractAndCarriageConditionCode', # B
291             4068 => 'ClauseName', # B
292             4069 => 'ClauseNameCode', # B
293             4071 => 'ProvisoCodeQualifier', # B
294             4072 => 'ProvisoTypeDescription', # B
295             4073 => 'ProvisoTypeDescriptionCode', # B
296             4074 => 'ProvisoCalculationDescription', # B
297             4075 => 'ProvisoCalculationDescriptionCode', # B
298             4078 => 'HandlingInstructionDescription', # B
299             4079 => 'HandlingInstructionDescriptionCode', # B
300             4183 => 'SpecialConditionCode', # C
301             4184 => 'SpecialRequirementDescription', # I
302             4187 => 'SpecialRequirementTypeCode', # I
303             4215 => 'TransportChargesPaymentMethodCode', # B
304             4219 => 'TransportServicePriorityCode', # B
305             4221 => 'DiscrepancyNatureIdentificationCode', # B
306             4233 => 'MarkingInstructionsCode', # B
307             4237 => 'PaymentArrangementCode', # B
308             4276 => 'PaymentTermsDescription', # B
309             4277 => 'PaymentTermsDescriptionIdentifier', # B
310             4279 => 'PaymentTermsTypeCodeQualifier', # B
311             4294 => 'ChangeReasonDescription', # B
312             4295 => 'ChangeReasonDescriptionCode', # B
313             4343 => 'ResponseTypeCode', # C
314             4344 => 'ResponseDescription', # B
315             4345 => 'ResponseDescriptionCode', # B
316             4347 => 'ProductIdentifierCodeQualifier', # B
317             4383 => 'BankOperationCode', # B
318             4400 => 'InstructionDescription', # B
319             4401 => 'InstructionDescriptionCode', # C
320             4403 => 'InstructionTypeCodeQualifier', # C
321             4404 => 'StatusDescription', # B
322             4405 => 'StatusDescriptionCode', # C
323             4407 => 'SampleProcessStepCode', # B
324             4415 => 'TestMethodIdentifier', # B
325             4416 => 'TestDescription', # B
326             4419 => 'TestAdministrationMethodCode', # B
327             4424 => 'TestReasonName', # B
328             4425 => 'TestReasonNameCode', # B
329             4431 => 'PaymentGuaranteeMeansCode', # B
330             4435 => 'PaymentChannelCode', # B
331             4437 => 'AccountTypeCodeQualifier', # B
332             4439 => 'PaymentConditionsCode', # C
333             4440 => 'FreeText', # C
334             4441 => 'FreeTextDescriptionCode', # B
335             4447 => 'FreeTextFormatCode', # B
336             4451 => 'TextSubjectCodeQualifier', # C
337             4453 => 'FreeTextFunctionCode', # B
338             4455 => 'BackOrderArrangementTypeCode', # B
339             4457 => 'SubstitutionConditionCode', # B
340             4461 => 'PaymentMeansCode', # B
341             4463 => 'IntracompanyPaymentIndicatorCode', # B
342             4465 => 'AdjustmentReasonDescriptionCode', # C
343             4467 => 'PaymentMethodCode', # I
344             4469 => 'PaymentPurposeCode', # I
345             4471 => 'SettlementMeansCode', # B
346             4472 => 'InformationType', # B
347             4473 => 'InformationTypeCode', # C
348             4474 => 'AccountingEntryTypeName', # B
349             4475 => 'AccountingEntryTypeNameCode', # B
350             4487 => 'FinancialTransactionTypeCode', # B
351             4493 => 'DeliveryInstructionCode', # B
352             4494 => 'InsuranceCoverDescription', # B
353             4495 => 'InsuranceCoverDescriptionCode', # B
354             4497 => 'InsuranceCoverTypeCode', # C
355             4499 => 'InventoryMovementReasonCode', # B
356             4501 => 'InventoryMovementDirectionCode', # B
357             4503 => 'InventoryBalanceMethodCode', # B
358             4505 => 'CreditCoverRequestTypeCode', # B
359             4507 => 'CreditCoverResponseTypeCode', # B
360             4509 => 'CreditCoverResponseReasonCode', # B
361             4510 => 'RequestedInformationDescription', # C
362             4511 => 'RequestedInformationDescriptionCode', # B
363             4513 => 'MaintenanceOperationCode', # C
364             4517 => 'SealConditionCode', # B
365             4519 => 'DefinitionIdentifier', # B
366             4521 => 'PremiumCalculationComponentIdentifier', # B
367             4522 => 'PremiumCalculationComponentValueCategoryIdentifier', # B
368             4525 => 'SealTypeCode', # B
369             5004 => 'MonetaryAmount', # C
370             5006 => 'MonetaryAmountFunctionDescription', # B
371             5007 => 'MonetaryAmountFunctionDescriptionCode', # B
372             5013 => 'IndexCodeQualifier', # B
373             5025 => 'MonetaryAmountTypeCodeQualifier', # C
374             5027 => 'IndexTypeIdentifier', # B
375             5030 => 'IndexText', # C
376             5039 => 'IndexRepresentationCode', # B
377             5047 => 'ContributionCodeQualifier', # B
378             5048 => 'ContributionTypeDescription', # B
379             5049 => 'ContributionTypeDescriptionCode', # B
380             5104 => 'MonetaryAmountFunctionDetailDescription', # B
381             5105 => 'MonetaryAmountFunctionDetailDescriptionCode', # B
382             5118 => 'PriceAmount', # C
383             5125 => 'PriceCodeQualifier', # C
384             5152 => 'DutyOrTaxOrFeeTypeName', # B
385             5153 => 'DutyOrTaxOrFeeTypeNameCode', # C
386             5160 => 'TotalMonetaryAmount', # I
387             5189 => 'AllowanceOrChargeIdentificationCode', # B
388             5213 => 'SublineItemPriceChangeOperationCode', # C
389             5237 => 'ChargeCategoryCode', # B
390             5242 => 'RateOrTariffClassDescription', # B
391             5243 => 'RateOrTariffClassDescriptionCode', # C
392             5245 => 'PercentageTypeCodeQualifier', # B
393             5249 => 'PercentageBasisIdentificationCode', # B
394             5261 => 'ChargeUnitCode', # I
395             5263 => 'RateTypeIdentifier', # I
396             5267 => 'ServiceTypeCode', # I
397             5273 => 'DutyOrTaxOrFeeRateBasisCode', # B
398             5275 => 'SupplementaryRateOrTariffCode', # B
399             5278 => 'DutyOrTaxOrFeeRate', # C
400             5279 => 'DutyOrTaxOrFeeRateCode', # B
401             5283 => 'DutyOrTaxOrFeeFunctionCodeQualifier', # B
402             5284 => 'UnitPriceBasisQuantity', # B
403             5286 => 'DutyOrTaxOrFeeAssessmentBasisQuantity', # B
404             5289 => 'DutyOrTaxOrFeeAccountCode', # B
405             5305 => 'DutyOrTaxOrFeeCategoryCode', # B
406             5307 => 'TaxOrDutyOrFeePaymentDueDateCode', # B
407             5314 => 'RemunerationTypeName', # B
408             5315 => 'RemunerationTypeNameCode', # B
409             5375 => 'PriceTypeCode', # C
410             5377 => 'PriceChangeTypeCode', # I
411             5379 => 'ProductGroupTypeCode', # B
412             5387 => 'PriceSpecificationCode', # B
413             5388 => 'ProductGroupName', # B
414             5389 => 'ProductGroupNameCode', # C
415             5393 => 'PriceMultiplierTypeCodeQualifier', # B
416             5394 => 'PriceMultiplierRate', # B
417             5402 => 'CurrencyExchangeRate', # C
418             5419 => 'RateTypeCodeQualifier', # B
419             5420 => 'UnitPriceBasisRate', # B
420             5463 => 'AllowanceOrChargeCodeQualifier', # B
421             5479 => 'RelationCode', # C
422             5482 => 'Percentage', # C
423             5495 => 'SublineIndicatorCode', # B
424             5501 => 'RatePlanCode', # I
425             6000 => 'LatitudeDegree', # C
426             6002 => 'LongitudeDegree', # C
427             6008 => 'HeightMeasure', # C
428             6029 => 'GeographicalPositionCodeQualifier', # B
429             6060 => 'Quantity', # C
430             6063 => 'QuantityTypeCodeQualifier', # C
431             6064 => 'VarianceQuantity', # B
432             6066 => 'ControlTotalQuantity', # B
433             6069 => 'ControlTotalTypeCodeQualifier', # B
434             6071 => 'FrequencyCodeQualifier', # B
435             6072 => 'FrequencyRate', # C
436             6074 => 'ConfidencePercent', # B
437             6077 => 'ResultRepresentationCode', # B
438             6079 => 'ResultNormalcyCode', # B
439             6082 => 'DosageDescription', # B
440             6083 => 'DosageDescriptionIdentifier', # B
441             6085 => 'DosageAdministrationCodeQualifier', # B
442             6087 => 'ResultValueTypeCodeQualifier', # B
443             6096 => 'Altitude', # B
444             6140 => 'WidthMeasure', # C
445             6145 => 'DimensionTypeCodeQualifier', # B
446             6152 => 'RangeMaximumQuantity', # C
447             6154 => 'NondiscreteMeasurementName', # B
448             6155 => 'NondiscreteMeasurementNameCode', # B
449             6162 => 'RangeMinimumQuantity', # C
450             6167 => 'RangeTypeCodeQualifier', # B
451             6168 => 'LengthMeasure', # C
452             6173 => 'SizeTypeCodeQualifier', # B
453             6174 => 'SizeMeasure', # B
454             6176 => 'OccurrencesMaximumNumber', # B
455             6178 => 'EditFieldLengthMeasure', # B
456             6245 => 'TemperatureTypeCodeQualifier', # B
457             6246 => 'TemperatureDegree', # B
458             6311 => 'MeasurementPurposeCodeQualifier', # B
459             6313 => 'MeasuredAttributeCode', # C
460             6314 => 'Measure', # C
461             6321 => 'MeasurementSignificanceCode', # C
462             6331 => 'StatisticTypeCodeQualifier', # B
463             6341 => 'ExchangeRateCurrencyMarketIdentifier', # C
464             6343 => 'CurrencyTypeCodeQualifier', # C
465             6345 => 'CurrencyIdentificationCode', # C
466             6347 => 'CurrencyUsageCodeQualifier', # C
467             6348 => 'CurrencyRate', # C
468             6350 => 'UnitsQuantity', # C
469             6353 => 'UnitTypeCodeQualifier', # C
470             6410 => 'MeasurementUnitName', # B
471             6411 => 'MeasurementUnitCode', # C
472             6412 => 'ClinicalInformationDescription', # B
473             6413 => 'ClinicalInformationDescriptionIdentifier', # B
474             6415 => 'ClinicalInformationTypeCodeQualifier', # B
475             6426 => 'ProcessStagesQuantity', # B
476             6428 => 'ProcessStagesActualQuantity', # B
477             6432 => 'SignificantDigitsQuantity', # B
478             6434 => 'StatisticalConceptIdentifier', # B
479             7001 => 'PhysicalOrLogicalStateTypeCodeQualifier', # B
480             7006 => 'PhysicalOrLogicalStateDescription', # B
481             7007 => 'PhysicalOrLogicalStateDescriptionCode', # B
482             7008 => 'ItemDescription', # C
483             7009 => 'ItemDescriptionCode', # C
484             7011 => 'ItemAvailabilityCode', # B
485             7036 => 'CharacteristicDescription', # C
486             7037 => 'CharacteristicDescriptionCode', # C
487             7039 => 'SampleSelectionMethodCode', # B
488             7045 => 'SampleStateCode', # B
489             7047 => 'SampleDirectionCode', # B
490             7059 => 'ClassTypeCode', # B
491             7064 => 'TypeOfPackages', # B
492             7065 => 'PackageTypeDescriptionCode', # B
493             7073 => 'PackagingTermsAndConditionsCode', # B
494             7075 => 'PackagingLevelCode', # B
495             7077 => 'DescriptionFormatCode', # B
496             7081 => 'ItemCharacteristicCode', # B
497             7083 => 'ConfigurationOperationCode', # B
498             7085 => 'CargoTypeClassificationCode', # B
499             7088 => 'DangerousGoodsFlashpointDescription', # B
500             7102 => 'ShippingMarksDescription', # B
501             7106 => 'ShipmentFlashpointDegree', # B
502             7110 => 'CharacteristicValueDescription', # B
503             7111 => 'CharacteristicValueDescriptionCode', # C
504             7124 => 'UnitedNationsDangerousGoods(UNDG)Identifier', # B
505             7130 => 'CustomerShipmentAuthorisationIdentifier', # B
506             7133 => 'ProductDetailsTypeCodeQualifier', # I
507             7135 => 'ProductIdentifier', # I
508             7139 => 'ProductCharacteristicIdentificationCode', # I
509             7140 => 'ItemIdentifier', # C
510             7143 => 'ItemTypeIdentificationCode', # C
511             7160 => 'SpecialServiceDescription', # C
512             7161 => 'SpecialServiceDescriptionCode', # C
513             7164 => 'HierarchicalStructureLevelIdentifier', # C
514             7166 => 'HierarchicalStructureParentIdentifier', # B
515             7168 => 'LevelNumber', # B
516             7171 => 'HierarchicalStructureRelationshipCode', # B
517             7173 => 'HierarchyObjectCodeQualifier', # B
518             7175 => 'RulePartIdentifier', # B
519             7176 => 'RiskObjectSubtypeDescription', # B
520             7177 => 'RiskObjectSubtypeDescriptionIdentifier', # B
521             7179 => 'RiskObjectTypeIdentifier', # B
522             7186 => 'ProcessTypeDescription', # B
523             7187 => 'ProcessTypeDescriptionCode', # B
524             7188 => 'TestMethodRevisionIdentifier', # B
525             7190 => 'ProcessDescription', # B
526             7191 => 'ProcessDescriptionCode', # C
527             7224 => 'PackageQuantity', # B
528             7233 => 'PackagingRelatedDescriptionCode', # B
529             7240 => 'ItemTotalQuantity', # B
530             7273 => 'ServiceRequirementCode', # C
531             7293 => 'SectorAreaIdentificationCodeQualifier', # B
532             7294 => 'RequirementOrConditionDescription', # B
533             7295 => 'RequirementOrConditionDescriptionIdentifier', # B
534             7297 => 'SetTypeCodeQualifier', # B
535             7299 => 'RequirementDesignatorCode', # C
536             7357 => 'CommodityIdentificationCode', # B
537             7361 => 'CustomsGoodsIdentifier', # B
538             7364 => 'ProcessingIndicatorDescription', # B
539             7365 => 'ProcessingIndicatorDescriptionCode', # C
540             7383 => 'SurfaceOrLayerCode', # C
541             7402 => 'ObjectIdentifier', # C
542             7405 => 'ObjectIdentificationCodeQualifier', # C
543             7418 => 'HazardousMaterialCategoryName', # B
544             7419 => 'HazardousMaterialCategoryNameCode', # B
545             7429 => 'IndexingStructureCodeQualifier', # B
546             7431 => 'AgreementTypeCodeQualifier', # B
547             7433 => 'AgreementTypeDescriptionCode', # B
548             7434 => 'AgreementTypeDescription', # B
549             7436 => 'LevelOneIdentifier', # B
550             7438 => 'LevelTwoIdentifier', # B
551             7440 => 'LevelThreeIdentifier', # B
552             7442 => 'LevelFourIdentifier', # B
553             7444 => 'LevelFiveIdentifier', # B
554             7446 => 'LevelSixIdentifier', # B
555             7449 => 'MembershipTypeCodeQualifier', # B
556             7450 => 'MembershipCategoryDescription', # B
557             7451 => 'MembershipCategoryDescriptionCode', # B
558             7452 => 'MembershipStatusDescription', # B
559             7453 => 'MembershipStatusDescriptionCode', # B
560             7455 => 'MembershipLevelCodeQualifier', # B
561             7456 => 'MembershipLevelDescription', # B
562             7457 => 'MembershipLevelDescriptionCode', # B
563             7458 => 'AttendeeCategoryDescription', # B
564             7459 => 'AttendeeCategoryDescriptionCode', # B
565             7491 => 'InventoryTypeCode', # B
566             7493 => 'DamageDetailsCodeQualifier', # B
567             7495 => 'ObjectTypeCodeQualifier', # B
568             7497 => 'StructureComponentFunctionCodeQualifier', # B
569             7500 => 'DamageTypeDescription', # B
570             7501 => 'DamageTypeDescriptionCode', # B
571             7502 => 'DamageAreaDescription', # B
572             7503 => 'DamageAreaDescriptionCode', # B
573             7504 => 'UnitOrComponentTypeDescription', # B
574             7505 => 'UnitOrComponentTypeDescriptionCode', # B
575             7506 => 'ComponentMaterialDescription', # B
576             7507 => 'ComponentMaterialDescriptionCode', # B
577             7508 => 'DamageSeverityDescription', # B
578             7509 => 'DamageSeverityDescriptionCode', # B
579             7511 => 'MarkingTypeCode', # B
580             7512 => 'StructureComponentIdentifier', # B
581             7515 => 'StructureTypeCode', # B
582             7517 => 'BenefitAndCoverageCode', # I
583             7519 => 'UsageQualificationCode', # B
584             7521 => 'UsageDescription,Coded', # B
585             7522 => 'UsageDescription', # B
586             8015 => 'TrafficRestrictionCode', # I
587             8017 => 'TrafficRestrictionApplicationCode', # I
588             8022 => 'FreightAndOtherChargesDescription', # B
589             8023 => 'FreightAndOtherChargesDescriptionIdentifier', # B
590             8024 => 'ConveyanceCallPurposeDescription', # B
591             8025 => 'ConveyanceCallPurposeDescriptionCode', # B
592             8028 => 'MeansOfTransportJourneyIdentifier', # B
593             8035 => 'TrafficRestrictionTypeCodeQualifier', # I
594             8051 => 'TransportStageCodeQualifier', # B
595             8053 => 'EquipmentTypeCodeQualifier', # C
596             8066 => 'TransportModeName', # B
597             8067 => 'TransportModeNameCode', # B
598             8077 => 'EquipmentSupplierCode', # B
599             8078 => 'AdditionalHazardClassificationIdentifier', # B
600             8092 => 'HazardCodeVersionIdentifier', # B
601             8101 => 'TransitDirectionIndicatorCode', # B
602             8126 => 'TransportEmergencyCardIdentifier', # B
603             8154 => 'EquipmentSizeAndTypeDescription', # C
604             8155 => 'EquipmentSizeAndTypeDescriptionCode', # B
605             8158 => 'OrangeHazardPlacardUpperPartIdentifier', # B
606             8169 => 'FullOrEmptyIndicatorCode', # B
607             8178 => 'TransportMeansDescription', # B
608             8179 => 'TransportMeansDescriptionCode', # C
609             8186 => 'OrangeHazardPlacardLowerPartIdentifier', # B
610             8211 => 'HazardousCargoTransportAuthorisationCode', # B
611             8212 => 'TransportMeansIdentificationName', # B
612             8213 => 'TransportMeansIdentificationNameIdentifier', # B
613             8215 => 'TransportMeansChangeIndicatorCode', # I
614             8216 => 'JourneyStopsQuantity', # I
615             8219 => 'TravellerAccompaniedByInfantIndicatorCode', # I
616             8246 => 'DangerousGoodsMarkingIdentifier', # B
617             8249 => 'EquipmentStatusCode', # B
618             8255 => 'PackingInstructionTypeCode', # B
619             8260 => 'EquipmentIdentifier', # B
620             8273 => 'DangerousGoodsRegulationsCode', # B
621             8275 => 'ContainerOrPackageContentsIndicatorCode', # B
622             8281 => 'TransportMeansOwnershipIndicatorCode', # B
623             8323 => 'TransportMovementCode', # B
624             8332 => 'EquipmentPlanDescription', # B
625             8334 => 'MovementTypeDescription', # B
626             8335 => 'MovementTypeDescriptionCode', # B
627             8339 => 'PackagingDangerLevelCode', # B
628             8341 => 'HaulageArrangementsCode', # B
629             8351 => 'HazardIdentificationCode', # B
630             8364 => 'EmergencyProcedureForShipsIdentifier', # B
631             8393 => 'ReturnablePackageLoadContentsCode', # B
632             8395 => 'ReturnablePackageFreightPaymentResponsibilityCode', # B
633             8410 => 'HazardMedicalFirstAidGuideIdentifier', # B
634             8453 => 'TransportMeansNationalityCode', # B
635             8457 => 'ExcessTransportationReasonCode', # B
636             8459 => 'ExcessTransportationResponsibilityCode', # B
637             8461 => 'TunnelRestrictionCode', # B
638             9003 => 'EmploymentDetailsCodeQualifier', # B
639             9004 => 'EmploymentCategoryDescription', # B
640             9005 => 'EmploymentCategoryDescriptionCode', # C
641             9006 => 'QualificationClassificationDescription', # B
642             9007 => 'QualificationClassificationDescriptionCode', # B
643             9008 => 'OccupationDescription', # B
644             9009 => 'OccupationDescriptionCode', # B
645             9012 => 'StatusReasonDescription', # B
646             9013 => 'StatusReasonDescriptionCode', # C
647             9015 => 'StatusCategoryCode', # B
648             9017 => 'AttributeFunctionCodeQualifier', # C
649             9018 => 'AttributeDescription', # C
650             9019 => 'AttributeDescriptionCode', # B
651             9020 => 'AttributeTypeDescription', # B
652             9021 => 'AttributeTypeDescriptionCode', # C
653             9023 => 'DefinitionFunctionCode', # B
654             9025 => 'DefinitionExtentCode', # B
655             9026 => 'EditMaskFormatIdentifier', # B
656             9029 => 'ValueDefinitionCodeQualifier', # B
657             9031 => 'EditMaskRepresentationCode', # B
658             9035 => 'QualificationApplicationAreaCode', # B
659             9037 => 'QualificationTypeCodeQualifier', # B
660             9038 => 'FacilityTypeDescription', # I
661             9039 => 'FacilityTypeDescriptionCode', # I
662             9040 => 'ReservationIdentifier', # I
663             9043 => 'ReservationIdentifierCodeQualifier', # I
664             9045 => 'BasisCodeQualifier', # B
665             9046 => 'BasisTypeDescription', # B
666             9047 => 'BasisTypeDescriptionCode', # B
667             9048 => 'ApplicabilityTypeDescription', # B
668             9049 => 'ApplicabilityTypeDescriptionCode', # B
669             9051 => 'ApplicabilityCodeQualifier', # B
670             9141 => 'RelationshipTypeCodeQualifier', # C
671             9142 => 'RelationshipDescription', # C
672             9143 => 'RelationshipDescriptionCode', # C
673             9146 => 'CompositeDataElementTagIdentifier', # B
674             9148 => 'DirectoryStatusIdentifier', # B
675             9150 => 'SimpleDataElementTagIdentifier', # B
676             9153 => 'SimpleDataElementCharacterRepresentationCode', # B
677             9155 => 'LengthTypeCode', # B
678             9156 => 'SimpleDataElementMaximumLengthMeasure', # B
679             9158 => 'SimpleDataElementMinimumLengthMeasure', # B
680             9161 => 'CodeSetIndicatorCode', # B
681             9162 => 'DataElementTagIdentifier', # B
682             9164 => 'GroupIdentifier', # B
683             9166 => 'SegmentTagIdentifier', # B
684             9169 => 'DataRepresentationTypeCode', # B
685             9170 => 'EventTypeDescription', # B
686             9171 => 'EventTypeDescriptionCode', # B
687             9172 => 'Event', # B
688             9173 => 'EventDescriptionCode', # B
689             9175 => 'DataElementUsageTypeCode', # B
690             9213 => 'DutyRegimeTypeCode', # B
691             9280 => 'ValidationResultText', # B
692             9282 => 'ValidationKeyIdentifier', # B
693             9285 => 'ValidationCriteriaCode', # B
694             9302 => 'SealingPartyName', # B
695             9303 => 'SealingPartyNameCode', # B
696             9308 => 'TransportUnitSealIdentifier', # B
697             9321 => 'ApplicationErrorCode', # C
698             9352 => 'GovernmentProcedure', #
699             9353 => 'GovernmentProcedureCode', # B
700             9411 => 'GovernmentInvolvementCode', # B
701             9415 => 'GovernmentAgencyIdentificationCode', # B
702             9416 => 'GovernmentAction', #
703             9417 => 'GovernmentActionCode', # B
704             9419 => 'ServiceLayerCode', # B
705             9421 => 'ProcessStageCodeQualifier', # B
706             9422 => 'ValueText', # B
707             9424 => 'ArrayCellDataDescription', # B
708             9426 => 'CodeValueText', # B
709             9428 => 'ArrayCellStructureIdentifier', # B
710             9430 => 'FootnoteSetIdentifier', # B
711             9432 => 'FootnoteIdentifier', # B
712             9434 => 'CodeName', # B
713             9436 => 'ClinicalInterventionDescription', # B
714             9437 => 'ClinicalInterventionDescriptionCode', # B
715             9441 => 'ClinicalInterventionTypeCodeQualifier', # B
716             9443 => 'AttendanceTypeCodeQualifier', # B
717             9444 => 'AdmissionTypeDescription', # B
718             9445 => 'AdmissionTypeDescriptionCode', # C
719             9446 => 'DischargeTypeDescription', # B
720             9447 => 'DischargeTypeDescriptionCode', # C
721             9448 => 'FileGenerationCommandName', # B
722             9450 => 'FileCompressionTechniqueName', # B
723             9453 => 'CodeValueSourceCode', # B
724             9501 => 'FormulaTypeCodeQualifier', # B
725             9502 => 'FormulaName', # B
726             9505 => 'FormulaComplexityCode', # B
727             9507 => 'FormulaSequenceCodeQualifier', # B
728             9509 => 'FormulaSequenceOperandCode', # B
729             9510 => 'FormulaSequenceName', # B
730             9601 => 'InformationCategoryCode', # I
731             9605 => 'DataCodeQualifier', # I
732             9607 => 'YesOrNoIndicatorCode', # I
733             9608 => 'ProductName', # I
734             9614 => 'InformationCategoryDescription', # B
735             9615 => 'InformationCategoryDescriptionCode', # B
736             9616 => 'InformationDetailDescription', # B
737             9617 => 'InformationDetailDescriptionCode', # B
738             9619 => 'AdjustmentCategoryCode', # I
739             9620 => 'PolicyLimitationIdentifier', # I
740             9623 => 'DiagnosisTypeCode', # I
741             9625 => 'RelatedCauseCode', # I
742             9627 => 'AdmissionSourceCode', # I
743             9629 => 'ProcedureModificationCode', # I
744             9631 => 'InvoiceTypeCode', # I
745             9633 => 'InformationDetailsCodeQualifier', # B
746             9635 => 'EventDetailsCodeQualifier', # B
747             9636 => 'EventCategoryDescription', # B
748             9637 => 'EventCategoryDescriptionCode', # B
749             9639 => 'DiagnosisCategoryCode', # I
750             9641 => 'ServiceBasisCodeQualifier', # I
751             9643 => 'SupportingEvidenceTypeCodeQualifier', # I
752             9645 => 'PayerResponsibilityLevelCode', # I
753             9647 => 'CavityZoneCode', # I
754             9649 => 'ProcessingInformationCodeQualifier', # B
755             );
756             }
757 1877         5324 return \%code_hash;
758             }
759              
760             1;
761             __END__