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

PSOERXOC.m

Go to the documentation of this file.
  1. PSOERXOC ;ALB/BWF - eRx parsing Utilities ; 11/14/2019 3:46pm
  1. ;;7.0;OUTPATIENT PHARMACY;**581**;DEC 1997;Build 126
  1. ;
  1. Q
  1. PATIENT(GBL,CNT,PSOSITE,IEN) ;
  1. N F,PATREL,LNAME,FNAME,MNAME,SUFF,PREF,GENDER,DOB,ADDL1,ADDL2,CITY,STATE,ZIP,PLQ,CUNIT,BED,ROOM,PSDAT,ILOOP
  1. N ITYP,IVAL,CLOOP,CNUM,CQUAL,PIEN,PIENS,PSSN,LANGNC,GESTAGE,HOSPIND,ACLN,ACFN,ACMN,ACSUFF,ACPREF,ACRELAT,ACFLN
  1. N ACFFN,ACFMN,ACFSUFF,ACFPREF,ACADL1,ACADL2,ACCITY,ACSTATE,ACPOSTAL,ACCC,DIRADD,ALDIRADD,MEDICARE,MEDICAID,MEDICAL,ACCNUM,MUTDEF,REMS
  1. N ASGBL,CC,FOFN,FOLN,FOMN,FOPREF,FOSUFF,SGBL
  1. S F=52.46
  1. S PIEN=$$GET1^DIQ(52.49,IEN,.04,"I") Q:'PIEN
  1. S PIENS=PIEN_","
  1. D GETS^DIQ(F,PIENS,"**","IE","PSDAT")
  1. D CONVXML^PSOERXX1("PSDAT")
  1. S PATREL=$G(PSDAT(F,PIENS,1.7,"I"))
  1. S LNAME=$G(PSDAT(F,PIENS,.02,"E"))
  1. S FNAME=$G(PSDAT(F,PIENS,.03,"E"))
  1. S MNAME=$G(PSDAT(F,PIENS,.04,"E"))
  1. S SUFF=$G(PSDAT(F,PIENS,.05,"E"))
  1. S PREF=$G(PSDAT(F,PIENS,.06,"E"))
  1. S GENDER=$G(PSDAT(F,PIENS,.07,"I"))
  1. S DOB=$G(PSDAT(F,PIENS,.08,"I")) I $G(DOB) S DOB=$P($$EXTIME^PSOERXO1(DOB),"T")
  1. S ADDL1=$G(PSDAT(F,PIENS,3.1,"E"))
  1. S ADDL2=$G(PSDAT(F,PIENS,3.2,"E"))
  1. S CITY=$G(PSDAT(F,PIENS,3.3,"E"))
  1. S STATE=$G(PSDAT(F,PIENS,3.4,"I"))
  1. S ZIP=$G(PSDAT(F,PIENS,3.5,"E"))
  1. S CC=$G(PSDAT(F,PIENS,1.6,"E"))
  1. S PSSN=$G(PSDAT(F,PIENS,18.2,"E"))
  1. ; FUTURE ENHANCEMENT, GRAB CUNIT/BED/ROOM FROM CORRECT LOCATIONS. THIS LOGIC IS NOT ACTIVE WITH VERSION 2
  1. S CUNIT=$G(PSDAT(F,PIENS,8.1,"E")) ; 8.1
  1. S BED=$G(PSDAT(F,PIENS,8.2,"E")) ; 8.3
  1. S ROOM=$G(PSDAT(F,PIENS,8.3,"E")) ; 8.2
  1. ;
  1. ;start grabbing 2017 variables
  1. ;
  1. S FOLN=$G(PSDAT(F,PIENS,7.1,"E"))
  1. S FOFN=$G(PSDAT(F,PIENS,7.2,"E"))
  1. S FOMN=$G(PSDAT(F,PIENS,7.3,"E"))
  1. S FOSUFF=$G(PSDAT(F,PIENS,7.4,"E"))
  1. S FOPREF=$G(PSDAT(F,PIENS,7.5,"E"))
  1. S LANGNC=$G(PSDAT(F,PIENS,8.4,"E"))
  1. S GESTAGE=$G(PSDAT(F,PIENS,8.5,"E"))
  1. S HOSPIND=$G(PSDAT(F,PIENS,8.6,"I"))
  1. S ACLN=$G(PSDAT(F,PIENS,9.1,"E"))
  1. S ACFN=$G(PSDAT(F,PIENS,9.2,"E"))
  1. S ACMN=$G(PSDAT(F,PIENS,9.3,"E"))
  1. S ACSUFF=$G(PSDAT(F,PIENS,9.4,"E"))
  1. S ACPREF=$G(PSDAT(F,PIENS,9.5,"E"))
  1. S ACRELAT=$G(PSDAT(F,PIENS,9.6,"I")),ACRELAT=$$GET1^DIQ(52.45,ACRELAT,.01,"E")
  1. S ACFLN=$G(PSDAT(F,PIENS,10.1,"E"))
  1. S ACFFN=$G(PSDAT(F,PIENS,10.2,"E"))
  1. S ACFMN=$G(PSDAT(F,PIENS,10.3,"E"))
  1. S ACFSUFF=$G(PSDAT(F,PIENS,10.4,"E"))
  1. S ACFPREF=$G(PSDAT(F,PIENS,10.5,"E"))
  1. S ACADL1=$G(PSDAT(F,PIENS,11.1,"E"))
  1. S ACADL2=$G(PSDAT(F,PIENS,11.2,"E"))
  1. S ACCITY=$G(PSDAT(F,PIENS,11.3,"E"))
  1. S ACSTATE=$G(PSDAT(F,PIENS,11.4,"I"))
  1. S ACPOSTAL=$G(PSDAT(F,PIENS,11.5,"E"))
  1. S ACCC=$G(PSDAT(F,PIENS,11.6,"E"))
  1. ;alternate communication
  1. S ASGBL=$NA(^PS(52.46,IEN,15))
  1. S ALDIRADD=$G(PSDAT(F,PIENS,16,"E"))
  1. S MEDICARE=$G(PSDAT(F,PIENS,17.1,"E"))
  1. S MEDICAID=$G(PSDAT(F,PIENS,17.2,"E"))
  1. S MEDICAL=$G(PSDAT(F,PIENS,17.3,"E"))
  1. S ACCNUM=$G(PSDAT(F,PIENS,18.1,"E"))
  1. S MUTDEF=$G(PSDAT(F,PIENS,18.3,"E"))
  1. S REMS=$G(PSDAT(F,PIENS,18.4,"E"))
  1. ;end 2017 variables
  1. ;
  1. ;new outbound building - 12/9/19
  1. ;
  1. D C S @GBL@(CNT,0)="<Patient>"
  1. D C S @GBL@(CNT,0)="<HumanPatient>"
  1. I $L(MEDICARE_MEDICAID_MEDICAL_ACCNUM_PSSN_MUTDEF_REMS) D
  1. .D C S @GBL@(CNT,0)="<Identification>"
  1. .D BL(GBL,.CNT,"MedicareNumber",MEDICARE)
  1. .D BL(GBL,.CNT,"MedicaidNumber",MEDICAID)
  1. .D BL(GBL,.CNT,"MedicalRecordIdentificationNumberEHR",MEDICAL)
  1. .D BL(GBL,.CNT,"PatientAccountNumber",ACCNUM)
  1. .D BL(GBL,.CNT,"SocialSecurity",PSSN)
  1. .D BL(GBL,.CNT,"MutuallyDefined",MUTDEF)
  1. .D BL(GBL,.CNT,"REMSPatientID",REMS)
  1. .D C S @GBL@(CNT,0)="</Identification>"
  1. D ONAME^PSOERXOU(GBL,.CNT,"Name",LNAME,FNAME,MNAME,SUFF,PREF)
  1. I $L(FOLN) D
  1. .D ONAME^PSOERXOU(GBL,.CNT,"FormerName",FOLN,FOFN,FOMN,FOSUFF,FOPREF)
  1. D BL(GBL,.CNT,"Gender",GENDER)
  1. D C S @GBL@(CNT,0)="<DateOfBirth>"
  1. D BL(GBL,.CNT,"Date",DOB)
  1. D C S @GBL@(CNT,0)="</DateOfBirth>"
  1. D OADD^PSOERXOU(GBL,.CNT,ADDL1,ADDL2,CITY,STATE,ZIP,CC)
  1. S SGBL=$NA(^PS(52.46,PIEN,13))
  1. D OCOMM^PSOERXOU(GBL,SGBL,.CNT,PIEN_",",52.4613,52.46,14,PIEN_",")
  1. I $L(CUNIT_BED_ROOM) D
  1. .D C S @GBL@(CNT,0)="<PatientLocation>"
  1. .D BL(GBL,.CNT,"FacilityUnit",CUNIT)
  1. .D BL(GBL,.CNT,"BED",BED)
  1. .D BL(GBL,.CNT,"Room",ROOM)
  1. .D C S @GBL@(CNT,0)="</PatientLocation>"
  1. .D BL(GBL,.CNT,"LanguageNameCode",LANGNC)
  1. D SUBSTNCE(PIEN,52.4619,GBL)
  1. I $L(ACLN) D
  1. .D C S @GBL@(CNT,0)="<AlternateContact>"
  1. .D ONAME^PSOERXOU(GBL,.CNT,"Name",ACLN,ACFN,ACMN,ACSUFF,ACPREF)
  1. .I $L(ACFLN) D
  1. ..D ONAME^PSOERXOU(GBL,.CNT,"FormerName",ACFLN,ACFFN,ACFMN,ACFPREF,ACFSUFF)
  1. .D OADD^PSOERXOU(GBL,.CNT,ACADL1,ACADL2,ACCITY,ACSTATE,ACPOSTAL,ACCC)
  1. .S SGBL=$NA(^PS(52.46,PIEN,15))
  1. .D OCOMM^PSOERXOU(GBL,SGBL,.CNT,PIEN_",",52.4615,52.46,16,PIEN_",")
  1. .D BL(GBL,.CNT,"AlternateContactRelationship",ACRELAT)
  1. .D C S @GBL@(CNT,0)="</AlternateContact>"
  1. .D BL(GBL,.CNT,"GestationalAge",GESTAGE)
  1. .D BL(GBL,.CNT,"HospiceIndicator",HOSPIND)
  1. ;end new outbound building
  1. D C S @GBL@(CNT,0)="</HumanPatient>"
  1. D C S @GBL@(CNT,0)="</Patient>"
  1. Q
  1. SUBSTNCE(PIEN,SFILE,GBL) ; patient substance (52.4619)
  1. N SFIEN,SUBIENS,TYPETEXT,TYPEQUAL,TYPECODE,LEVTEXT
  1. N LEVQUAL,LEVCODE,ROATEXT,ROAQUAL,ROACODE,SUBDAT
  1. S SFIEN=0,IEN=5531,SFILE=52.4619
  1. Q:'$O(^PS(52.46,PIEN,19,0))
  1. F S SFIEN=$O(^PS(52.46,PIEN,19,SFIEN)) Q:'SFIEN D
  1. .S SUBIENS=SFIEN_","_PIEN_","
  1. .D GETS^DIQ(52.4619,SUBIENS,"**","E","SUBDAT")
  1. .S TYPETEXT=$G(SUBDAT(SFILE,SUBIENS,1,"E"))
  1. .S TYPEQUAL=$G(SUBDAT(SFILE,SUBIENS,2,"E"))
  1. .S TYPECODE=$G(SUBDAT(SFILE,SUBIENS,3,"E"))
  1. .S LEVTEXT=$G(SUBDAT(SFILE,SUBIENS,4,"E"))
  1. .S LEVQUAL=$G(SUBDAT(SFILE,SUBIENS,5,"E"))
  1. .S LEVCODE=$G(SUBDAT(SFILE,SUBIENS,6,"E"))
  1. .S ROATEXT=$G(SUBDAT(SFILE,SUBIENS,7,"E"))
  1. .S ROAQUAL=$G(SUBDAT(SFILE,SUBIENS,8,"E"))
  1. .S ROACODE=$G(SUBDAT(SFILE,SUBIENS,9,"E"))
  1. .I $L(TYPETEXT_TYPEQUAL_TYPECODE_LEVTEXT_LEVQUAL_LEVCODE_ROATEXT_ROAQUAL_ROACODE) D
  1. ..D C S @GBL@(CNT,0)="<SubstanceUse>"
  1. ..D C S @GBL@(CNT,0)="<Substance>"
  1. ..D C S @GBL@(CNT,0)="<Type>"
  1. ..D BL(GBL,.CNT,"Text",TYPETEXT)
  1. ..D BL(GBL,.CNT,"Qualifier",TYPEQUAL)
  1. ..D BL(GBL,.CNT,"Code",TYPECODE)
  1. ..D C S @GBL@(CNT,0)="</Type>"
  1. ..I $L(LEVTEXT_LEVQUAL_LEVCODE) D
  1. ...D C S @GBL@(CNT,0)="<Level>"
  1. ...D BL(GBL,.CNT,"Text",LEVTEXT)
  1. ...D BL(GBL,.CNT,"Qualifier",LEVQUAL)
  1. ...D BL(GBL,.CNT,"Code",LEVCODE)
  1. ...D C S @GBL@(CNT,0)="</Level>"
  1. ..I $L(ROATEXT_ROAQUAL_ROACODE) D
  1. ...D C S @GBL@(CNT,0)="<RouteOfAdministration>"
  1. ...D BL(GBL,.CNT,"Text",ROATEXT)
  1. ...D BL(GBL,.CNT,"Qualifier",ROAQUAL)
  1. ...D BL(GBL,.CNT,"Code",ROACODE)
  1. ...D C S @GBL@(CNT,0)="</RouteOfAdministration>"
  1. ..D C S @GBL@(CNT,0)="</Substance>"
  1. ..D C S @GBL@(CNT,0)="</SubstanceUse>"
  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