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

PSOERXOH.m

Go to the documentation of this file.
  1. PSOERXOH ;ALB/BWF - eRx parsing Utilities ; 11/14/2019 3:46pm
  1. ;;7.0;OUTPATIENT PHARMACY;**581**;DEC 1997;Build 126
  1. ;
  1. Q
  1. ODIAG(GL,CNT,ERXIEN,MIEN) ; outbound diagnosis segment (52.493113)
  1. N F,DIAGIEN,DIAGDAT,DIAGIENS,CIQ,PDXCODE,PDXQUAL,PDXOV
  1. N PDXDESC,PDCOV,SDXCODE,SDXQUAL,SDXDESC,SDXOV
  1. S F=52.493113
  1. I '$O(^PS(52.49,ERXIEN,311,MIEN,3,0)) Q
  1. S DIAGIEN=0 F S DIAGIEN=$O(^PS(52.49,ERXIEN,311,MIEN,3,DIAGIEN)) Q:'DIAGIEN D
  1. .K DIAGDAT
  1. .S DIAGIENS=DIAGIEN_","_MIEN_","_ERXIEN_","
  1. .D GETS^DIQ(F,DIAGIENS,"**","IE","DIAGDAT")
  1. .S CIQ=$G(DIAGDAT(F,DIAGIENS,.02,"I")),PDXCODE=$G(DIAGDAT(F,DIAGIENS,1.1,"E")),PDXQUAL=$G(DIAGDAT(F,DIAGIENS,1.2,"I"))
  1. .S PDXOV=$G(DIAGDAT(F,DIAGIENS,1.3,"I")),PDXDESC=$G(DIAGDAT(F,DIAGIENS,2,"E")),SDXCODE=$G(DIAGDAT(F,DIAGIENS,3.1,"E"))
  1. .S SDXQUAL=$G(DIAGDAT(F,DIAGIENS,3.2,"I")),SDXOV=$G(DIAGDAT(F,DIAGIENS,3.3,"I")),SDXDESC=$G(DIAGDAT(F,DIAGIENS,4,"E"))
  1. .I $G(PDXOV) S PDXOV=$P($$EXTIME^PSOERXO1(PDXOV),"T")
  1. .I $G(SDXOV) S SDXOV=$P($$EXTIME^PSOERXO1(SDXOV),"T")
  1. .D C S @GBL@(CNT,0)="<Diagnosis>"
  1. .D BL(GBL,.CNT,"ClinicalInformationQualifier",CIQ)
  1. .I $L(PDXCODE_PDXQUAL_PDXDESC_PDXOV) D
  1. ..D C S @GBL@(CNT,0)="<Primary>"
  1. ..D BL(GBL,.CNT,"Code",PDXCODE)
  1. ..D BL(GBL,.CNT,"Qualifier",PDXQUAL)
  1. ..D BL(GBL,.CNT,"Description",PDXDESC)
  1. .I $L(PDXOV) D
  1. ..D C S @GBL@(CNT,0)="<DateOfLastOfficeVisit>"
  1. ..D BL(GBL,.CNT,"Date",PDXOV)
  1. ..D C S @GBL@(CNT,0)="</DateOfLastOfficeVisit>"
  1. .I $L(PDXCODE_PDXQUAL_PDXDESC_PDXOV) D
  1. ..D C S @GBL@(CNT,0)="</Primary>"
  1. .I $L(SDXCODE_SDXQUAL_SDXDESC_SDXOV) D
  1. ..D C S @GBL@(CNT,0)="<Secondary>"
  1. ..D BL(GBL,.CNT,"Code",SDXCODE)
  1. ..D BL(GBL,.CNT,"Qualifier",SDXQUAL)
  1. ..D BL(GBL,.CNT,"Description",SDXDESC)
  1. .I $L(SDXOV) D
  1. ..D C S @GBL@(CNT,0)="<DateOfLastOfficeVisit>"
  1. ..D BL(GBL,.CNT,"Date",SDXOV) ; need to write function to convert this date
  1. ..D C S @GBL@(CNT,0)="</DateOfLastOfficeVisit>"
  1. .I $L(SDXCODE_SDXQUAL_SDXDESC_SDXOV) D
  1. ..D C S @GBL@(CNT,0)="</Secondary>"
  1. .D C S @GBL@(CNT,0)="</Diagnosis>"
  1. Q
  1. ODUE(GL,CNT,ERXIEN,MIEN) ;outbound drug use evaluation segment
  1. N F,DUEIEN,DUEDAT,DUEIENS,SERVREA,PROFSERV,SVXRC
  1. N CAC,CAQ,COAGDESC,CLINCODE,ACKREA
  1. S F=52.493116
  1. I '$O(^PS(52.49,ERXIEN,311,MIEN,6,0)) Q
  1. S DUEIEN=0 F S DUEIEN=$O(^PS(52.49,ERXIEN,311,MIEN,6,DUEIEN)) Q:'DUEIEN D
  1. .K DUEDAT
  1. .S DUEIENS=DUEIEN_","_MIEN_","_ERXIEN_","
  1. .D GETS^DIQ(F,DUEIENS,"**","IE","DUEDAT")
  1. .S SERVREA=$G(DUEDAT(F,DUEIENS,.02,"E")),PROFSERV=$G(DUEDAT(F,DUEIENS,.03,"E"))
  1. .S SVXRC=$G(DUEDAT(F,DUEIENS,.04,"E")),CAC=$G(DUEDAT(F,DUEIENS,.05,"E"))
  1. .S CAQ=$G(DUEDAT(F,DUEIENS,.06,"E")),CLINCODE=$G(DUEDAT(F,DUEIENS,.07,"I"))
  1. .S COAGDESC=$G(DUEDAT(F,DUEIENS,1,"E")),ACKREA=$G(DUEDAT(F,DUEIENS,2,"E"))
  1. .D C S @GBL@(CNT,0)="<DrugUseEvaluation>"
  1. .D BL(GBL,.CNT,"ServiceReasonCode",SERVREA)
  1. .D BL(GBL,.CNT,"ProfessionalServiceCode",PROFSERV)
  1. .D BL(GBL,.CNT,"ServiceResultCode",SVXRC)
  1. .I $L(CAC_CAQ_COAGDESC) D
  1. ..D C S @GBL@(CNT,0)="<CoAgent>"
  1. ..D C S @GBL@(CNT,0)="<CoAgentCode>"
  1. ..D BL(GBL,.CNT,"Code",CAC)
  1. ..D BL(GBL,.CNT,"Qualifier",CAQ)
  1. ..D BL(GBL,.CNT,"Description",COAGDESC)
  1. ..D C S @GBL@(CNT,0)="</CoAgentCode>"
  1. ..D C S @GBL@(CNT,0)="</CoAgent>"
  1. .D BL(GBL,.CNT,"ClinicalSignificanceCode",CLINCODE)
  1. .D BL(GBL,.CNT,"AcknowledgementReason",ACKREA)
  1. .D C S @GBL@(CNT,0)="</DrugUseEvaluation>"
  1. Q
  1. ODCS(GL,CNT,ERXIEN,MIEN) ;outbound drug coverage status segment
  1. N F,DCSIEN,DCSDAT,DCSIENS,DCSTCODE
  1. S F=52.493117
  1. S DCSIEN=0 F S DCSIEN=$O(^PS(52.49,ERXIEN,311,MIEN,7,DCSIEN)) Q:'DCSIEN D
  1. .K DCSDAT
  1. .S DCSIENS=DCSIEN_","_MIEN_","_ERXIEN_","
  1. .D GETS^DIQ(F,DCSIENS,"**","E","DCSDAT")
  1. .S DCSTCODE=$G(DCSDAT(F,DCSIENS,.02,"E"))
  1. .D BL(GBL,.CNT,"DrugCoverageStatusCode",DCSTCODE)
  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