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

PSOERXOI.m

Go to the documentation of this file.
  1. PSOERXOI ;ALB/BWF - eRx parsing Utilities ; 11/14/2019 3:46pm
  1. ;;7.0;OUTPATIENT PHARMACY;**581,746**;DEC 1997;Build 106
  1. ;
  1. Q
  1. SIG(GL,CNT,ERXIEN,MIEN) ;
  1. N SIGTEXT,SNOMED,FMTVER,SIGCFT,SIGDAT,F,IENS,SIGL
  1. S F=52.49311
  1. S IENS=MIEN_","_ERXIEN_","
  1. D GETS^DIQ(F,IENS,"9.1;9.2;15","E","SIGDAT")
  1. S SNOMED=$G(SIGDAT(F,IENS,9.1,"E"))
  1. S FMTVER=$G(SIGDAT(F,IENS,9.2,"E"))
  1. S SIGCFT=$G(SIGDAT(F,IENS,15,"E"))
  1. D C S @GL@(CNT,0)="<Sig>"
  1. S SIGTEXT=""
  1. S SIGL=0 F S SIGL=$O(^PS(52.49,ERXIEN,311,MIEN,8,SIGL)) Q:'SIGL D
  1. .S SIGTEXT=SIGTEXT_$G(^PS(52.49,ERXIEN,311,MIEN,8,SIGL,0))_" "
  1. S $E(SIGTEXT,$L(SIGTEXT))=""
  1. D BL(GL,.CNT,"SigText",SIGTEXT)
  1. D C S @GL@(CNT,0)="<CodeSystem>"
  1. D BL(GL,.CNT,"SNOMEDVersion",SNOMED),BL(GL,.CNT,"FMTVersion",FMTVER)
  1. D C S @GL@(CNT,0)="</CodeSystem>"
  1. D MEDINST^PSOERXOJ(GL,.CNT,ERXIEN,MIEN)
  1. D SIGI4USE(GL,.CNT,ERXIEN,MIEN)
  1. D SIGMDR(GL,.CNT,ERXIEN,MIEN)
  1. D BL(GL,.CNT,"ClarifyingFreeText",SIGCFT)
  1. D C S @GL@(CNT,0)="</Sig>"
  1. Q
  1. ; sig level maximum dose restriction
  1. SIGMDR(GL,CNT,ERXIEN,MIEN) ;
  1. N MDRIEN,MDRIENS,MDRV,MDRDAT,F,MDRV1,RUC,RUQ,RUT,DVAL,DUC,DUQ,DUT,RFC,RFQ,RFT,CFTEXT
  1. S F=52.4931114
  1. I '$O(^PS(52.49,ERXIEN,311,MIEN,14,0)) Q
  1. S MDRIEN=0 F S MDRIEN=$O(^PS(52.49,ERXIEN,311,MIEN,14,MDRIEN)) Q:'MDRIEN D
  1. .K MDRDAT
  1. .S MDRIENS=MDRIEN_","_MIEN_","_ERXIEN_","
  1. .D GETS^DIQ(F,MDRIENS,"**","E","MDRDAT")
  1. .S MDRV1=$G(MDRDAT(F,MDRIENS,1,"E")),RUC=$G(MDRDAT(F,MDRIENS,2,"E")),RUQ=$G(MDRDAT(F,MDRIENS,3,"E")),RUT=$G(MDRDAT(F,MDRIENS,4,"E"))
  1. .S DVAL=$G(MDRDAT(F,MDRIENS,5,"E")),DUC=$G(MDRDAT(F,MDRIENS,6,"E")),DUQ=$G(MDRDAT(F,MDRIENS,7,"E")),DUT=$G(MDRDAT(F,MDRIENS,8,"E"))
  1. .S RFC=$G(MDRDAT(F,MDRIENS,9,"E")),RFQ=$G(MDRDAT(F,MDRIENS,10,"E")),RFT=$G(MDRDAT(F,MDRIENS,11,"E"))
  1. .S CFTEXT=$G(MDRDAT(F,MDRIENS,12,"E"))
  1. .D C S @GL@(CNT,0)="<MaximumDoseRestriction>"
  1. .D BL(.GL,.CNT,"MaximumDoseRestrictionNumericValue",MDRV1)
  1. .D SIGTYPE^PSOERXOU(.GL,.CNT,"MaximumDoseRestrictionForm",RFT,RFQ,RFC)
  1. .D SIGTYPE^PSOERXOU(.GL,.CNT,"MaximumDoseRestrictionUnits",RUT,RUQ,RUC)
  1. .D BL(.GL,.CNT,"MaximumDoseRestrictionDurationValue",DVAL)
  1. .D SIGTYPE^PSOERXOU(.GL,.CNT,"MaximumDoseRestrictionDurationUnit",DUT,DUQ,DUC)
  1. .D BL(.GL,.CNT,"MaximumDoseRestrictionClarifyingFreeText",CFTEXT)
  1. .D C S @GL@(CNT,0)="</MaximumDoseRestriction>"
  1. Q
  1. ; indication for use at the sig level (medication prescribed)
  1. SIGI4USE(GL,CNT,ERXIEN,MIEN) ;
  1. N F,IFUIEN,IFUIENS,IFUDAT,IPC,IPQ,IPT,IC,IQ,IT,IVC1,IVQ1,IVT1,IVM,IVC2,IVQ2,IVT2,IVUC,IVUQ,IVUT
  1. N IUOMC,IUOMQ,IUOMT
  1. S F=52.4931113
  1. ; dont build anything if the subscript is missing
  1. Q:'$O(^PS(52.49,ERXIEN,311,MIEN,13,0))
  1. S IFUIEN=0,IFUIEN=$O(^PS(52.49,ERXIEN,311,MIEN,13,IFUIEN)) Q:'IFUIEN D
  1. .K IFUDAT
  1. .S IFUIENS=IFUIEN_","_MIEN_","_ERXIEN_","
  1. .D C S @GL@(CNT,0)="<IndicationForUse>"
  1. .D GETS^DIQ(F,IFUIENS,"**","E","IFUDAT")
  1. .S IPC=$G(IFUDAT(F,IFUIENS,1,"E")),IPQ=$G(IFUDAT(F,IFUIENS,2,"E")),IPT=$G(IFUDAT(F,IFUIENS,3,"E"))
  1. .S IC=$G(IFUDAT(F,IFUIENS,4,"E")),IQ=$G(IFUDAT(F,IFUIENS,5,"E")),IT=$G(IFUDAT(F,IFUIENS,6,"E"))
  1. .S IVC1=$G(IFUDAT(F,IFUIENS,7,"E")),IVQ1=$G(IFUDAT(F,IFUIENS,8,"E")),IVT1=$G(IFUDAT(F,IFUIENS,9,"E"))
  1. .S IVM=$G(IFUDAT(F,IFUIENS,10,"E"))
  1. .S IVC2=$G(IFUDAT(F,IFUIENS,11,"E")),IVQ2=$G(IFUDAT(F,IFUIENS,12,"E")),IVT2=$G(IFUDAT(F,IFUIENS,13,"E"))
  1. .S IVUC=$G(IFUDAT(F,IFUIENS,14,"E")),IVUQ=$G(IFUDAT(F,IFUIENS,15,"E")),IVUT=$G(IFUDAT(F,IFUIENS,16,"E"))
  1. .S IUOMC=$G(IFUDAT(F,IFUIENS,17,"E")),IUOMQ=$G(IFUDAT(F,IFUIENS,18,"E")),IUOMT=$G(IFUDAT(F,IFUIENS,19,"E"))
  1. .D SIGTYPE^PSOERXOU(GL,.CNT,"IndicationPrescursor",IPT,IPQ,IPC)
  1. .D SIGTYPE^PSOERXOU(GL,.CNT,"Indication",IT,IQ,IC)
  1. .D SIGTYPE^PSOERXOU(GL,.CNT,"IndicationValue",IVT1,IVQ1,IVC1)
  1. .I $L(IVM) D BL(GL,.CNT,"IndicationVariableModifier",IVM)
  1. .D SIGTYPE^PSOERXOU(GL,.CNT,"IndicationValue",IVT2,IVQ2,IVC2)
  1. .D SIGTYPE^PSOERXOU(GL,.CNT,"IndicationValueUnit",IVUT,IVUQ,IVUC)
  1. .D SIGTYPE^PSOERXOU(GL,.CNT,"IndicationValueUnitOfMeasure",IUOMT,IUOMQ,IUOMC)
  1. D C S @GL@(CNT,0)="</IndicationForUse>"
  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