createCompositionVariables function

Map<String, dynamic> createCompositionVariables(
  1. Map<String, dynamic> payload, {
  2. bool isUpdatingFHIRComposition = false,
})

Implementation

Map<String, dynamic> createCompositionVariables(Map<String, dynamic> payload,
    {bool isUpdatingFHIRComposition = false}) {
  final List<String> reviewOfSystemSectionItems = <String>[
    'respiratory',
    'peripheral',
    'gastrointestinal',
    'urinary',
    'neurologic',
    'hematologic',
    'cardiac',
    'heent',
    'heenttwo',
    'gi',
    'gu',
    'ms',
    'skin',
    'psychiatric',
    'description'
  ];

  final Composition _composition = Composition(
    id: isUpdatingFHIRComposition ? payload['id']?.toString() : null,
    status: CompositionStatusEnum.preliminary,
    type: CodeableConcept(
      text: 'Consult Note',
      coding: <Coding>[
        Coding(
          system: 'http://loinc.org',
          code: '11488-4',
          display: 'Consult Note',
          userSelected: false,
        ),
      ],
    ),
    category: <CodeableConcept>[
      CodeableConcept(
        text: 'Consult Note',
        coding: <Coding>[
          Coding(
            system: 'http://loinc.org',
            code: '11488-4',
            display: 'Consult Note',
            userSelected: false,
          ),
        ],
      )
    ],
    subject: Reference(
      reference: payload['patientRef']?.toString(),
      type: 'Patient',
      display: payload['patientName']?.toString(),
    ),
    encounter: Reference(
      reference: payload['encounterRef']?.toString(),
      type: 'Encounter',
      display: payload['encounterRef']?.toString(),
    ),
    date: payload['dateRecorded']?.toString(),
    author: <Reference>[
      Reference(display: payload['recordingDoctor']?.toString()),
    ],
    title: payload['compositionTitle']?.toString(),
    section: <Section>[
      if (payload['compositionTitle'] ==
          CompositionTypeTitle.patientHistory.name)
        Section(
          title: 'patientHistory',
          text: Narrative(
            status: NarrativeStatusEnum.generated,
            div: payload['patientHistory']?.toString(),
          ),
        ),
      if (payload['compositionTitle'] ==
          CompositionTypeTitle.generalExamination.name)
        Section(
          title: 'generalExam',
          text: Narrative(
            status: NarrativeStatusEnum.generated,
            div: payload['generalExam']?.toString(),
          ),
        ),
      if (payload['compositionTitle'] ==
          CompositionTypeTitle.reviewOfSystems.name)
        ...reviewOfSystemSectionItems
            .where((String title) => payload[title] != null)
            .map(
              (String e) => Section(
                title: e,
                text: Narrative(
                  status: NarrativeStatusEnum.generated,
                  div: payload[e]?.toString(),
                ),
              ),
            )
            .toList(),
    ],
  );

  return <String, dynamic>{'input': _composition.toJson()};
}