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

APSPFNC4.m

Go to the documentation of this file.
  1. APSPFNC4 ;IHS/MSC/DKM E-Prescribing Support ;10-Sep-2013 13:59;PLS
  1. ;;7.0;IHS PHARMACY MODIFICATIONS;**1007,1009,1016**;Sep 23, 2004;Build 74
  1. ;==============================================================
  1. ; Pharmacy List Update Functions
  1. ; Patch 1016 added XUMF variable
  1. PHLFIL(DIR,FIL,MAX) ; EP - Import updates from a file
  1. N ERR,POP,CNT,XUMF
  1. D OPEN^%ZISH(,DIR,FIL,"R")
  1. I POP W "File not found",! Q
  1. S ERR="",MAX=+$G(MAX)
  1. S XUMF=1
  1. F CNT=1:1 D Q:POP!(CNT=MAX)
  1. .N REC,LP
  1. .U IO
  1. .D READNXT^%ZISH(.REC)
  1. .I '$L($G(REC)) S POP=1 Q
  1. .S LP=0
  1. .F S LP=$O(REC(LP)) Q:'LP S REC=REC_REC(LP)
  1. .U IO(0)
  1. .S ERR=$$PHLREC(REC)
  1. .W:$L(ERR) CNT,": ",ERR,!
  1. D CLOSE^%ZISH()
  1. Q
  1. PHLGBL(GBL) ; EP - Import updates from a local or global array
  1. N LP,ERR
  1. S (LP,ERR)=""
  1. F S LP=$O(@GBL@(LP)) Q:'$L(LP) S ERR=$$PHLREC(@GBL@(LP)) Q:$L(ERR)
  1. Q ERR
  1. PHLREC(REC,DEBUG) ; EP - Import updates from a single record
  1. N LP,CTL,ERR,FDA,NCPDPID,IEN,SFN,SFNC,STNAME,IENS
  1. S NCPDPID=$TR($E(REC,1,7)," "),SFNC=1,DEBUG=$G(DEBUG)
  1. Q:'$L(NCPDPID) "Missing NCPDP ID"
  1. S STNAME=$TR($E(REC,43,78)," ")
  1. Q:'$L(STNAME) "Missing Store Name"
  1. S IEN=$O(^APSPOPHM("C",NCPDPID,0))
  1. I IEN D DELSPEC(IEN)
  1. S FDA=$NA(FDA(9009033.9,$S(IEN:IEN,1:"+1")_","))
  1. F LP=0:1 S CTL=$P($T(CTL44+LP),";;",2,99) Q:'$L(CTL) D Q:$D(ERR)
  1. .N X,FNUM,FNAM
  1. .S FNAM=$P(CTL,";"),FNUM=$P(CTL,";",2)
  1. .S X=$P(CTL,";",3),X=$E(REC,X,X+$P(CTL,";",4)-1)
  1. .F Q:$A(X,$L(X))'=32 S X=$E(X,1,$L(X)-1)
  1. .X $P(CTL,";",5)
  1. .I DEBUG U IO(0) W $P(CTL,";"),"=",X,!
  1. .I $D(ERR) S ERR="Error processing field "_FNAM_": "_ERR
  1. .E Q:'$L(X)
  1. .E I FNUM'[":" S @FDA@(FNUM)=X
  1. .E D
  1. ..S SFN=+FNUM,FNUM=$P(FNUM,":",2)
  1. ..;S:'$D(SFN(SFN)) SFNC=SFNC+1,SFN(SFN)="+"_SFNC_","_$S(IEN:IEN,1:"+1")_","
  1. ..S:FNUM=.01 SFNC=SFNC+1,IENS="+"_SFNC_","_$S(IEN:IEN,1:"+1")_","
  1. ..Q:'$L($G(IENS))
  1. ..S:FNUM=.01!$D(FDA(SFN,IENS,.01)) FDA(SFN,IENS,FNUM)=X
  1. Q:$D(ERR) ERR
  1. K:IEN ^APSPOPHM(IEN,3),^(4)
  1. D UPDATE^DIE("E","FDA",,"ERR")
  1. I $G(ERR("DIERR",1)) D Q ERR
  1. .S LP=0,ERR=""
  1. .F S LP=$O(ERR("DIERR",1,"TEXT",LP)) Q:'LP S ERR=ERR_$S($L(ERR):" ",1:"")_ERR("DIERR",1,"TEXT",LP)
  1. Q ""
  1. ; Convert SS date format to FM
  1. DT(X) S:$L(X) X=+($TR($P(X,"T"),"-")-17000000_"."_$TR($P($P(X,"T",2,99),"."),":"))
  1. Q
  1. ; Normalize phone format
  1. PHONE(X) S X=$TR(X,"X() -","x")
  1. S:X'?10N.(1"x"1.14N) X=""
  1. Q
  1. SPEC(X) ; Put specialty into upper case
  1. D SCHAR(.X)
  1. S X=$$UP^XLFSTR(X)
  1. Q
  1. SCHAR(X) ; Remove characters that interfere with fileman
  1. S X=$TR(X,"^&","")
  1. Q
  1. DELSPEC(IEN) ;Delete exisiting specialties
  1. K NUM,DA,DIK
  1. S NUM=0 F S NUM=$O(^APSPOPHM(IEN,8,NUM)) Q:NUM="" D
  1. .S DA(1)=IEN,DA=NUM
  1. .S DIK="^APSPOPHM(IEN,8,"
  1. .D ^DIK
  1. Q
  1. ;Import control data
  1. ;Format is:
  1. ;;<SS field name><FM field #><offset><length><transform>
  1. CTL ;;NCPDPID;.02;1;7
  1. ;;StoreNumber;.03;8;35
  1. ;;ReferenceNumberAlt1;9009033.94:.01;43;35
  1. ;;ReferenceNumberAlt1Qualifier;9009033.94:.02;78;3
  1. ;;StoreName;.01;81;35
  1. ;;StoreName;.1;81;35
  1. ;;AddressLine1;1.1;116;35
  1. ;;AddressLine2;1.2;151;35
  1. ;;City;1.3;186;35
  1. ;;State;1.4;221;2
  1. ;;Zip;1.5;223;11;S X=$E(X,1,5)
  1. ;;PhonePrimary;2.1;234;25;D PHONE(.X)
  1. ;;Fax;2.2;259;25;D PHONE(.X)
  1. ;;Email;2.3;284;80
  1. ;;PhoneAlt1;9009033.93:.01;364;25;D PHONE(.X)
  1. ;;PhoneAlt1Qualifier;9009033.93:.02;389;3
  1. ;;PhoneAlt2;9009033.93:.01;392;25;D PHONE(.X)
  1. ;;PhoneAlt2Qualifier;9009033.93:.02;417;3
  1. ;;PhoneAlt3;9009033.93:.01;420;25;D PHONE(.X)
  1. ;;PhoneAlt3Qualifier;9009033.93:.02;445;3
  1. ;;PhoneAlt4;9009033.93:.01;448;25;D PHONE(.X)
  1. ;;PhoneAlt4Qualifier;9009033.93:.02;473;3
  1. ;;PhoneAlt5;9009033.93:.01;476;25;D PHONE(.X)
  1. ;;PhoneAlt5Qualifier;9009033.93:.02;501;3
  1. ;;ActiveStartTime;7.1;504;22;D DT(.X)
  1. ;;ActiveEndTime;7.2;526;22;D DT(.X)
  1. ;;ServiceLevel;.05;548;5
  1. ;;PartnerAccount;7.3;553;35
  1. ;;LastModifiedDate;7.4;588;22;D DT(.X)
  1. ;;TwentyFourHourFlag;.06;610;1
  1. ;;CrossStreet;1.6;611;35
  1. ;;OldServiceLevel;5.1;647;5;S X=$S(X<0:"@",1:X)
  1. ;;TextServiceLevel;5.2;652;100
  1. ;;TextServiceLevelChange;5.3;752;100
  1. ;;NPI;.04;857;10
  1. ;;
  1. ;Import control data for version 4.4
  1. ;Format is:
  1. ;;<SS field name><FM field #><offset><length><transform>
  1. CTL44 ;;NCPDPID;.02;1;7;D SCHAR(.X)
  1. ;;StoreNumber;.03;8;35;D SCHAR(.X)
  1. ;;StoreName;.01;43;35;D SCHAR(.X)
  1. ;;StoreName;.1;43;35;D SCHAR(.X)
  1. ;;AddressLine1;1.1;78;35;D SCHAR(.X)
  1. ;;AddressLine2;1.2;113;35;D SCHAR(.X)
  1. ;;City;1.3;148;35;D SCHAR(.X)
  1. ;;State;1.4;183;2;D SCHAR(.X)
  1. ;;Zip;1.5;185;11;D SCHAR(.X) S X=$E(X,1,5)
  1. ;;PhonePrimary;2.1;196;25;D PHONE(.X)
  1. ;;Fax;2.2;221;25;D PHONE(.X)
  1. ;;Email;2.3;246;80;D SCHAR(.X)
  1. ;;PhoneAlt1;9009033.93:.01;326;25;D PHONE(.X)
  1. ;;PhoneAlt1Qualifier;9009033.93:.02;351;3;D SCHAR(.X)
  1. ;;PhoneAlt2;9009033.93:.01;354;25;D PHONE(.X)
  1. ;;PhoneAlt2Qualifier;9009033.93:.02;379;3;D SCHAR(.X)
  1. ;;PhoneAlt3;9009033.93:.01;382;25;D PHONE(.X)
  1. ;;PhoneAlt3Qualifier;9009033.93:.02;407;3;D SCHAR(.X)
  1. ;;PhoneAlt4;9009033.93:.01;410;25;D PHONE(.X)
  1. ;;PhoneAlt4Qualifier;9009033.93:.02;435;3;D SCHAR(.X)
  1. ;;PhoneAlt5;9009033.93:.01;438;25;D PHONE(.X)
  1. ;;PhoneAlt5Qualifier;9009033.93:.02;463;3;D SCHAR(.X)
  1. ;;ActiveStartTime;7.1;466;22;D DT(.X)
  1. ;;ActiveEndTime;7.2;488;22;D DT(.X)
  1. ;;ServiceLevel;.05;510;5;D SCHAR(.X)
  1. ;;PartnerAccount;7.3;515;35;D SCHAR(.X)
  1. ;;LastModifiedDate;7.4;550;22;D DT(.X)
  1. ;;CrossStreet;1.6;572;35;D SCHAR(.X)
  1. ;;RecordChange;6.1;607;1;D SCHAR(.X)
  1. ;;OldServiceLevel;5.1;608;5;D SCHAR(.X) S X=$S(X<0:"@",1:X)
  1. ;;TextServiceLevel;5.2;613;100;D SCHAR(.X)
  1. ;;TextServiceLevelChange;5.3;713;100;D SCHAR(.X)
  1. ;;Version;6.2;813;5;D SCHAR(.X)
  1. ;;NPI;.04;818;10;D SCHAR(.X)
  1. ;;SpecialtyType1;9009033.98:.01;828;35;D SPEC(.X)
  1. ;;SpecialtyType2;9009033.98:.01;863;35;D SPEC(.X)
  1. ;;SpecialtyType3;9009033.98:.01;898;35;D SPEC(.X)
  1. ;;SpecialtyType4;9009033.98:.01;933;35;D SPEC(.X)
  1. ;;MedicareNumber;6.3;1038;35;D SCHAR(.X)
  1. ;;MedicaidNumber;6.4;1073;35;D SCHAR(.X)
  1. ;;