Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PSOERXOJ

PSOERXOJ.m

Go to the documentation of this file.
  1. PSOERXOJ ;ALB/BWF - eRx parsing Utilities ; 11/14/2019 3:46pm
  1. ;;7.0;OUTPATIENT PHARMACY;**581,635**;DEC 1997;Build 19
  1. ;
  1. Q
  1. ; Medication Instructions
  1. MEDINST(GL,CNT,ERXIEN,MIEN) ;
  1. N INSIEN,IENS,INSDAT,F,IIND,MIM,AIND,DDMC,DDM,DDMT,DQ1,DQ2,DRMOD,DUOMC1,DUOMQ1,DUOMT1
  1. N DUOMC2,DUOMQ2,DUOMT2,DBNV,DBRM,DBNV2,DBUOMC,DBUOMQ,DBUOMT,BMQ,BMV,CDN,CDUOMC,CDUOMQ
  1. N CDUOMT,DCLRFTXT,DUOMCC,DUOMCQ,DUOMCT,DAMTC,DAMTQ,DAMTT,DCFTXT,VPC,VPQ,VPT,VQ1,VMVM,VQ2
  1. N VUOMC,VUOMQ,VUOME,VCODE,VQUAL,VTEXT,VCTEXT,ROAC,ROAQ,ROAT,ROAFT,SOAC,SOAQ,SOAT,SOATXT
  1. N ICTXT,MDRTXT,DDMMC,DDMMQ,DDMMT,DDMQ,VUOMT
  1. S F=52.4931112
  1. I '$O(^PS(52.49,ERXIEN,311,MIEN,12,0)) Q
  1. S INSIEN=0 F S INSIEN=$O(^PS(52.49,ERXIEN,311,MIEN,12,INSIEN)) Q:'INSIEN D
  1. .S IENS=INSIEN_","_MIEN_","_ERXIEN_","
  1. .D GETS^DIQ(F,IENS,"**","E","INSDAT")
  1. .S IIND=$$GET1^DIQ(F,IENS,.02,"I"),MIM=$G(INSDAT(F,IENS,.03,"E")),AIND=$G(INSDAT(F,IENS,4.1,"E"))
  1. .I MIM]"" D BL(GL,.CNT,"MultipleInstructionModifier",MIM)
  1. .D C S @GL@(CNT,0)="<Instruction>"
  1. .D BL(GL,.CNT,"InstructionIndicator",IIND)
  1. .S DDMC=$G(INSDAT(F,IENS,7,"E")),DDMQ=$G(INSDAT(F,IENS,8,"E")),DDMT=$G(INSDAT(F,IENS,9,"E"))
  1. .S DQ1=$G(INSDAT(F,IENS,10.1,"E")),DQ2=$G(INSDAT(F,IENS,15.1,"E"))
  1. .S DRMOD=$G(INSDAT(F,IENS,14,"E"))
  1. .S DUOMC1=$G(INSDAT(F,IENS,11,"E")),DUOMQ1=$G(INSDAT(F,IENS,12,"E")),DUOMT1=$G(INSDAT(F,IENS,13,"E"))
  1. .S DUOMC2=$G(INSDAT(F,IENS,16,"E")),DUOMQ2=$G(INSDAT(F,IENS,17,"E")),DUOMT2=$G(INSDAT(F,IENS,18,"E"))
  1. .S DBNV=$G(INSDAT(F,IENS,21.1,"E")),DBRM=$G(INSDAT(F,IENS,21.2,"E")),DBNV2=$G(INSDAT(F,IENS,21.3,"E"))
  1. .S DBUOMC=$G(INSDAT(F,IENS,22,"E")),DBUOMQ=$G(INSDAT(F,IENS,23,"E")),DBUOMT=$G(INSDAT(F,IENS,24,"E"))
  1. .S BMQ=$G(INSDAT(F,IENS,25.1,"E")),BMV=$G(INSDAT(F,IENS,25.2,"E"))
  1. .S CDN=$G(INSDAT(F,IENS,26,"E"))
  1. .S CDUOMC=$G(INSDAT(F,IENS,27,"E")),CDUOMQ=$G(INSDAT(F,IENS,28,"E")),CDUOMT=$G(INSDAT(F,IENS,29,"E"))
  1. .; dose calculaton clarifying free text
  1. .S DCLRFTXT=$G(INSDAT(F,IENS,31,"E"))
  1. .S DUOMCC=$G(INSDAT(F,IENS,32,"E")),DUOMCQ=$G(INSDAT(F,IENS,33,"E")),DUOMCT=$G(INSDAT(F,IENS,34,"E"))
  1. .S DAMTC=$G(INSDAT(F,IENS,35,"E")),DAMTQ=$G(INSDAT(F,IENS,36,"E")),DAMTT=$G(INSDAT(F,IENS,37,"E"))
  1. .; dose clarifying free text
  1. .S DCFTXT=$G(INSDAT(F,IENS,38,"E"))
  1. .S VPC=$G(INSDAT(F,IENS,41,"E")),VPQ=$G(INSDAT(F,IENS,42,"E")),VPT=$G(INSDAT(F,IENS,43,"E"))
  1. .S VQ1=$G(INSDAT(F,IENS,44.1,"E")),VMVM=$G(INSDAT(F,IENS,44.2,"E")),VQ2=$G(INSDAT(F,IENS,44.3,"E"))
  1. .S VUOMC=$G(INSDAT(F,IENS,45,"E")),VUOMQ=$G(INSDAT(F,IENS,46,"E")),VUOMT=$G(INSDAT(F,IENS,47,"E"))
  1. .S VCODE=$G(INSDAT(F,IENS,51,"E")),VQUAL=$G(INSDAT(F,IENS,52,"E")),VTEXT=$G(INSDAT(F,IENS,53,"E"))
  1. .; vehicle clarifying text
  1. .S VCTEXT=$G(INSDAT(F,IENS,54,"E"))
  1. .S ROAC=$G(INSDAT(F,IENS,55,"E")),ROAQ=$G(INSDAT(F,IENS,56,"E")),ROAT=$G(INSDAT(F,IENS,57,"E"))
  1. .; route of admin free text
  1. .S ROAFT=$G(INSDAT(F,IENS,58,"E"))
  1. .S SOAC=$G(INSDAT(F,IENS,61,"E")),SOAQ=$G(INSDAT(F,IENS,62,"E")),SOAT=$G(INSDAT(F,IENS,63,"E"))
  1. .; site of admin
  1. .S SOATXT=$G(INSDAT(F,IENS,64,"E"))
  1. .; indication clarifying text
  1. .S ICTXT=$G(INSDAT(F,IENS,70,"E"))
  1. .; mdr clarifying free text
  1. .S MDRTXT=$G(INSDAT(F,IENS,71,"E"))
  1. .S DDMMC=$G(INSDAT(F,IENS,72,"E")),DDMMQ=$G(INSDAT(F,IENS,73,"E")),DDMMT=$G(INSDAT(F,IENS,74,"E"))
  1. .; timing and duration
  1. .D BL(.GL,.CNT,"AdministrationIndicator",AIND)
  1. .; DoseAdministration
  1. .I $L(DQ1_DQ2_DDMT_DDMQ_DDMC_DDMMT_DDMMQ_DDMMC) D
  1. ..D C S @GL@(CNT,0)="<DoseAdministration>"
  1. ..D SIGTYPE^PSOERXOU(.GL,.CNT,"DoseDeliveryMethod",DDMT,DDMQ,DDMC)
  1. ..D SIGTYPE^PSOERXOU(.GL,.CNT,"DoseDeliveryMethodModifier",DDMMT,DDMMQ,DDMMC)
  1. ..I $L(DQ1) D
  1. ...D C S @GL@(CNT,0)="<Dosage>"
  1. ...D BL(.GL,.CNT,"DoseQuantity",DQ1)
  1. ...D SIGTYPE^PSOERXOU(.GL,.CNT,"DoseUnitOfMeasure",DUOMT1,DUOMQ1,DUOMC1)
  1. ...I $L(DRMOD) D BL(.GL,.CNT,"DoseRangeModifier",DRMOD)
  1. ...I $L(DQ2) D BL(.GL,.CNT,"DoseQuantity",DQ2)
  1. ...D SIGTYPE^PSOERXOU(.GL,.CNT,"DoseUnitOfMeasure",DUOMT2,DUOMQ2,DUOMC2)
  1. ...D C S @GL@(CNT,0)="</Dosage>"
  1. ..; dose calculation (inside dose administration)
  1. ..I $L(DBNV) D
  1. ...D C S @GL@(CNT,0)="<DoseCalculation>"
  1. ...D BL(.GL,.CNT,"DosingBasisNumeric",DBNV)
  1. ...I $L(DBRM) D BL(.GL,.CNT,"DosingBasisRangeModifier",DBRM)
  1. ...I $L(DBNV2) D BL(.GL,.CNT,"DosingBasisNumeric",DBNV2)
  1. ...D SIGTYPE^PSOERXOU(.GL,.CNT,"DosingBasisUnitOfMeasure",DBUOMT,DBUOMQ,DBUOMC)
  1. ...I $D(BMQ) D BL(.GL,.CNT,"BodyMetricQualifier",BMQ)
  1. ...I $D(BMV) D BL(.GL,.CNT,"BodyMetricValue",BMV)
  1. ...I $L(CDN) D BL(.GL,.CNT,"CalculatedDoseNumeric",CDN)
  1. ...D SIGTYPE^PSOERXOU(.GL,.CNT,"CalculatedDoseUnitOfMeasure",DDMT,DDMQ,DDMC)
  1. ...I $L(DCLRFTXT) D BL(.GL,.CNT,"DoseCalculationClarifyingFreeText",DCLRFTXT)
  1. ...D SIGTYPE^PSOERXOU(.GL,.CNT,"DoseUnitOfMeasure",DUOMCT,DUOMCQ,DUOMCC)
  1. ...D C S @GL@(CNT,0)="</DoseCalculation>"
  1. ..; end dose calculation - return to doseAdministration
  1. ..D SIGTYPE^PSOERXOU(.GL,.CNT,"DoseAmount",DAMTT,DAMTQ,DAMTC)
  1. ..I $L(DCFTXT) D BL(.GL,.CNT,"DoseClarifyingFreeText",DCFTXT)
  1. ..; vehicle
  1. ..I VQ1]"" D
  1. ...D C S @GL@(CNT,0)="<Vehicle>"
  1. ...D SIGTYPE^PSOERXOU(.GL,.CNT,"VehiclePreposition",VPT,VPQ,VPC)
  1. ...D BL(GL,.CNT,"VehicleQuantity",VQ1)
  1. ...I VMVM]"" D BL(GL,.CNT,"MultipleVehicleModifier",VMVM)
  1. ...I VQ2]"" D BL(GL,.CNT,"VehicleQuantity",VQ2)
  1. ...D SIGTYPE^PSOERXOU(.GL,.CNT,"VehicleUnitOfMeasure",VUOMT,VUOMQ,VUOMC)
  1. ...D SIGTYPE^PSOERXOU(.GL,.CNT,"Vehicle",VTEXT,VQUAL,VCODE)
  1. ...I $L(VCTEXT) D BL(GL,.CNT,"VehicleClarifyingFreeText",VCTEXT)
  1. ...D C S @GL@(CNT,0)="</Vehicle>"
  1. ..; end vehicle
  1. ..D SIGTYPE^PSOERXOU(GL,.CNT,"RouteOfAdministration",ROAT,ROAQ,ROAC)
  1. ..I $L(ROAFT) D BL(GL,.CNT,"RouteOfAdministrationClarifyingFreeText",ROAFT)
  1. ..D SIGTYPE^PSOERXOU(GL,.CNT,"SiteOfAdministration",SOAT,SOAQ,SOAC)
  1. ..I $L(SOATXT) D BL(GL,.CNT,"SiteOfAdministrationClarifyingFreeText",SOATXT)
  1. ..D C S @GL@(CNT,0)="</DoseAdministration>"
  1. ..; end dose Administration
  1. .; timing and duration
  1. .D TIMDUR^PSOERXOK(GL,.CNT,ERXIEN,MIEN,INSIEN)
  1. .;PSO*7*635 - include indication for use at the instruction level
  1. .D INSI4USE^PSOERXOK(GL,.CNT,ERXIEN,MIEN,INSIEN)
  1. .;PSO*7*635 - end updated indication for use
  1. .I $L(ICTXT) D BL(GL,.CNT,"IndicationClarifyingFreeText",ICTXT)
  1. .; Maximum dose restriction at the instructions level
  1. .D INSMDR^PSOERXOK(GL,.CNT,ERXIEN,MIEN,INSIEN)
  1. .D C S @GL@(CNT,0)="</Instruction>"
  1. Q
  1. BL(GBL,CNT,TAG,VAR) ;
  1. Q:VAR=""
  1. D C S @GBL@(CNT,0)="<"_TAG_">"_$$SYMENC^MXMLUTL(VAR)_"</"_TAG_">"
  1. Q
  1. C ;
  1. S CNT=$G(CNT)+1
  1. Q